다음을 통해 공유


관리되는 서비스에 대해 고객 관리형 키 사용

참고 항목

이 기능을 사용하려면 Premium 플랜이 필요합니다.

데이터에 대한 추가 제어를 위해 사용자 고유의 키를 추가하여 일부 유형의 데이터에 대한 액세스를 보호하고 제어할 수 있습니다. Azure Databricks에는 여러 고객 관리형 키 기능이 있습니다. 관련 기능을 비교하려면 암호화를 위한 고객 관리형 키를 참조하세요.

이 문서에서는 관리되는 서비스에 대한 Azure Key Vault 자격 증명 모음에서 사용자 고유의 키를 구성하는 방법을 설명합니다. Azure Key Vault 관리되는 HSM에서 키를 사용하는 방법에 대한 지침은 관리되는 서비스에 HSM 고객 관리형 키 사용을 참조하세요.

Azure Databricks 컨트롤 플레인의 관리되는 서비스 데이터는 미사용 시 암호화됩니다. 관리되는 서비스에 대한 고객 관리형 키를 추가하여 다음과 같은 유형의 암호화된 데이터에 대한 액세스를 보호하고 제어할 수 있습니다.

작업 영역에 대한 고객 관리형 키 암호화를 추가한 후에는 Azure Databricks가 이 키를 사용하여 작업 영역의 관리되는 서비스 데이터에 대한 향후 쓰기 작업을 암호화하는 키에 대한 액세스를 제어합니다. 기존 데이터는 다시 암호화되지 않습니다. 데이터 암호화 키는 여러 읽기 및 쓰기 작업을 위해 메모리에 캐시되고 정기적으로 메모리에서 제거됩니다. 해당 데이터에 대한 새 요청에는 클라우드 서비스의 키 관리 시스템에 대한 또 다른 요청이 필요합니다. 키를 삭제하거나 해지하면 캐시 시간 간격이 끝날 때 보호된 데이터에 대한 읽기 또는 쓰기가 실패합니다.

나중에 고객 관리형 키를 회전(업데이트)할 수 있습니다. 나중에 키 회전을 참조하세요.

이 기능은 컨트롤 플레인 외부에 저장된 데이터를 암호화하지 않습니다. 다른 고객 관리형 키 기능은 암호화에 대한 고객 관리형 키를 참조하세요.

요구 사항

1단계: Key Vault 설정

Azure Key Vault 인스턴스를 만들고 해당 권한을 설정해야 합니다. Azure Portal, CLI 또는 API를 통해 이를 수행할 수 있습니다.

Important

KeyVault는 Azure Databricks 작업 영역과 동일한 Azure 테넌트에 있어야 합니다.

이러한 지침은 여러 배포 옵션에 대해 자세히 설명합니다.

Azure Portal 사용

  1. Key Vault 만들기 또는 선택:
    • Key Vault를 만들려면 Key Vault 만들기를 위한 Azure Portal 페이지로 이동합니다. + 만들기를 클릭합니다. 리소스 그룹 이름, Key Vault 이름, 지역 및 가격 책정 계층을 입력합니다. 검토 + 만들기를 클릭한 다음, 만들기를 클릭합니다.
    • 기존 Key Vault를 사용하려면 다음 단계에서 Key Vault 이름을 복사합니다.
  2. AzureDatabricks 애플리케이션의 개체 ID를 가져옵니다.
    1. Azure Portal에서 Microsoft Entra ID로 이동합니다.
    2. 사이드바 메뉴에서 엔터프라이즈 애플리케이션을 선택합니다.
    3. AzureDatabricks를 검색하고, 결과에서 엔터프라이즈 애플리케이션을 클릭합니다.
    4. 속성에서 개체 ID를 복사합니다.
  3. Azure Portal을 사용하여 Key Vault에 액세스 정책을 추가합니다.
    1. 작업 영역의 관리되는 서비스에 대한 고객 관리형 키를 구성하는 데 사용할 Azure Key Vault로 이동합니다.

    2. 왼쪽 패널에서 액세스 정책 탭을 클릭합니다.

    3. 페이지 위쪽에 있는 만들기 단추를 선택합니다.

    4. 권한 탭의 키 권한 섹션에서 가져오기, 키 래핑 해제키 래핑을 사용하도록 설정합니다.

    5. 다음을 클릭합니다.

    6. 보안 주체 탭에서 AzureDatabricks를 입력하고 애플리케이션 ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d가 있는 첫 번째 엔터프라이즈 애플리케이션 결과로 스크롤하여 선택합니다.

      ID가 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d인 AzureDatabricks 애플리케이션을 선택합니다.

    7. 계속해서 검토 + 만들기 탭에서 b를 클릭합니다.

Azure CLI 사용

Azure CLI를 사용하여 다음 지침을 완료합니다.

  1. Key Vault를 만들거나 기존 Key Vault를 선택합니다.

    • Key Vault를 만들려면 다음 Azure CLI 명령을 사용하고 대괄호 안에 있는 항목을 지역, Key Vault 이름, 리소스 그룹 이름, 위치로 바꿉니다.

      az keyvault create --location <region> \
                         --name <key-vault-name> \
                         --resource-group <resource-group-name> \
                         --location <location> \
                         --enable-purge-protection
      
    • 기존 Key Vault를 사용하려면 다음 단계에서 Key Vault 이름을 복사합니다.

  2. Azure CLI를 사용하여 AzureDatabricks 애플리케이션의 개체 ID를 가져옵니다.

    az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \
                  --query "id" \
                  --output tsv
    
  3. 올바른 Azure 구독을 사용하고 있는지 확인합니다.

    az account set --subscription {subscription_id}
    

Azure PowerShell 사용

새 Key Vault를 만들거나 기존 Key Vault를 사용할 수 있습니다.

Key Vault 만들기:

$keyVault = New-AzKeyVault -Name <key-vault-name> \
-ResourceGroupName <resource-group-name> \
-Location <location> \
-sku <sku> \
-EnablePurgeProtection

기존 Key Vault 사용:

$keyVault = Get-AzKeyVault -VaultName <key-vault-name>

2단계: 키 준비

키를 만들거나 기존 키를 사용할 수 있습니다. Azure Portal, Azure CLI 또는 기타 도구 중에서 선호하는 도구를 사용합니다.

Azure CLI 사용

키를 Key Vault 아래에 만듭니다. KeyType은 RSA여야 합니다.

CLI에서 키를 만들려면 다음 명령을 실행합니다.

az keyvault key create --name <key-name> \
                       --vault-name <key-vault-name> \
                       --protection software

응답의 kid 속성에 있는 키 ID에서 가져올 수 있는 다음 값을 적어 둡니다. 이 값은 이후 단계에서 사용합니다.

  • Key Vault URL: Key Vault 이름을 포함하는 키 ID의 시작 부분입니다. 형식은 https://<key-vault-name>.vault.azure.net입니다.
  • 키 이름: 키의 이름입니다.
  • 키 버전: 키의 버전입니다.

전체 키 ID의 형식은 일반적으로 https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>입니다. 퍼블릭이 아닌 클라우드에 있는 Azure Key Vault 키의 형식은 다릅니다.

키를 만드는 대신 기존 키를 사용하려면 다음 단계에서 사용할 수 있도록 키에 대한 이러한 값을 가져와서 복사합니다. 계속하기 전에 기존 키가 사용하도록 설정되어 있는지 확인합니다.

Azure PowerShell 사용

  1. 키를 만들려는 경우 키 생성 방법과 시기에 따라 액세스 정책을 설정해야 할 수 있습니다. 예를 들어 최근에 PowerShell을 사용하여 Key Vault를 만든 경우 새 Key Vault에 키를 만드는 데 필요한 액세스 정책이 부족할 수 있습니다. 다음 예제에서는 EmailAddress 매개 변수를 사용하여 정책을 설정합니다. 관련 세부 정보는 Set-AzKeyVaultAccessPolicy에 대한 Microsoft 문서를 참조하세요.

    새 Key Vault에 대한 액세스 정책 설정:

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. 키를 만들거나 기존 키를 검색할 수 있습니다.

    • 키 만들기:

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • 기존 키 검색:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  3. KeyVault에 대한 권한이 있는 액세스 정책 추가:

    $managedService = Get-AzureADServicePrincipal \
    -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'"
    
    Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
    -ObjectId $managedService.ObjectId \
    -PermissionsToKeys wrapkey,unwrapkey,get
    

3단계: 작업 영역에 키 추가

관리되는 서비스에 대한 고객 관리형 키를 사용하여 새 작업 영역을 배포하거나 키를 기존 작업 영역에 추가할 수 있습니다. Azure CLI, Powershell, ARM 템플릿, Azure Portal 또는 기타 도구를 사용하여 둘 다 수행할 수 있습니다. 이 섹션에는 여러 배포 옵션에 대한 세부 정보가 포함되어 있습니다.

템플릿 없이 Azure Portal 사용

  1. Azure Portal 홈페이지로 이동합니다.

  2. 페이지 왼쪽 상단에서 리소스 만들기를 클릭합니다.

  3. 검색 창 내에서 Azure Databricks를 입력하고 Azure Databricks 옵션을 클릭합니다.

  4. Azure Databricks 위젯에서 만들기를 클릭합니다.

  5. 기본네트워킹 탭에서 입력 필드의 값을 입력합니다.

  6. 암호화 탭에 도달하면 다음을 수행합니다.

    • 작업 영역을 만들려면 관리되는 서비스 섹션에서 사용자 고유의 키 사용을 활성화합니다.
    • 작업 영역을 업데이트하려면 관리되는 서비스를 사용하도록 설정합니다.
  7. 암호화 필드를 설정합니다.

    Azure Databricks 블레이드의 Managed Disks 섹션에 필드 표시

    • 키 식별자 필드에 Azure Key Vault 키의 키 식별자를 붙여넣습니다.
    • 구독 드롭다운에서 Azure Key Vault 키의 구독 이름을 입력합니다.
  8. 나머지 탭을 완료하고 검토 + 만들기(새 작업 영역의 경우) 또는 저장(작업 영역 업데이트의 경우)을 클릭합니다.

Important

키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.

템플릿 없이 Azure CLI 사용

  1. 다음 명령을 사용하여 Key Vault에 액세스 정책을 추가합니다. <key-vault-name>을 이전 단계에서 사용한 Key Vault 이름으로 바꾸고, <object-id>AzureDatabricks 애플리케이션의 개체 ID로 바꿉니다.

    az keyvault set-policy -n <key-vault-name> \
                           --key-permissions get wrapKey unwrapKey  \
                           --object-id <object-id>
    
  2. 작업 영역 만들기 또는 업데이트:

    만들기 및 업데이트 모두에 대해 다음 필드를 명령에 추가합니다.

    • managed-services-key-name: 키 이름
    • managed-services-key-vault: Key vault URI
    • managed-services-key-version: 키 버전

    다음 필드를 사용하여 작업 영역 만들기 예제:

    az databricks workspace create --name <workspace-name> \
    --resource-group <resource-group-name> \
    --location <location> \
    --sku premium \
    --managed-services-key-name <key-name> \
    --managed-services-key-vault <key-vault-uri> \
    --managed-services-key-version <key-version>
    

    다음 필드를 사용하여 작업 영역 업데이트 예제:

    az databricks workspace update --name <workspace-name> \
    --resource-group <resource-group-name> \
    --managed-services-key-name <key-name> \
    --managed-services-key-vault <key-vault-uri> \
    --managed-services-key-version <key-version>
    

Important

키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.

템플릿 없이 PowerShell 사용

작업 영역을 만들거나 업데이트하려면 새 키에 대한 명령에 다음 매개 변수를 추가합니다.

  • ManagedServicesKeyVaultPropertiesKeyName: 키 이름
  • ManagedServicesKeyVaultPropertiesKeyVaultUri: Key URI
  • ManagedServicesKeyVaultPropertiesKeyVersion: 키 버전

다음 필드로 작업 영역 만들기 예제:

New-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-location $keyVault.Location \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version

다음 필드로 작업 영역 업데이트 예제:

Update-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version

Important

키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.

ARM 템플릿을 사용하여 변경 내용 적용

다음 ARM 템플릿은 Microsoft.Databricks/workspaces 리소스에 대한 2023-02-01 API 버전을 사용하여 고객 관리형 키를 통해 새 작업 영역을 만듭니다. 이 텍스트를 databricks-cmk-template.json이라는 파일에 로컬로 저장합니다.

이 예제 템플릿에는 작업 영역을 배포할 자체 VNet을 제공하는 등 가능한 모든 Azure Databricks 기능이 포함되지 않습니다.

Important

템플릿을 이미 사용하는 경우 이 템플릿의 추가 매개 변수, 리소스 및 출력을 기존 템플릿에 병합합니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "string",
      "metadata": {
        "description": "The name of the Azure Databricks workspace to create."
      }
    },
    "pricingTier": {
      "type": "string",
      "defaultValue": "premium",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The pricing tier of workspace."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "apiVersion": {
      "type": "string",
      "defaultValue": "2023-02-01",
      "allowedValues":[
        "2023-02-01",
        "2021-04-01-preview"
      ],
      "metadata": {
        "description": "The api version to create the workspace resources"
      }
    },
    "keyvaultUri": {
      "type": "string",
      "metadata": {
        "description": "The Key Vault URI for customer-managed key for managed services"
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The key name used for customer-managed key for managed services"
      }
    },
    "keyVersion": {
      "type": "string",
      "metadata": {
        "description": "The key version used for customer-managed key for managed services"
      }
    }
  },
  "variables": {
    "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Databricks/workspaces",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "apiVersion": "[parameters('apiVersion')]",
      "sku": {
        "name": "[parameters('pricingTier')]"
      },
      "properties": {
        "ManagedResourceGroupId": "[concat(subscription().id, '/resourceGroups/', variables('managedResourceGroupName'))]",
        "encryption": {
          "entities": {
             "managedServices": {
                "keySource": "Microsoft.Keyvault",
                "keyVaultProperties": {
                   "keyVaultUri": "[parameters('keyvaultUri')]",
                   "keyName": "[parameters('keyName')]",
                   "keyVersion": "[parameters('keyVersion')]"
                }
             }
          }
        }
      }
    }
  ],
  "outputs": {
    "workspace": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]"
    }
  }
}

다른 템플릿을 이미 사용하고 있다면 이 템플릿의 매개 변수, 리소스 및 출력을 기존 템플릿에 병합할 수 있습니다.

이 템플릿을 사용하여 작업 영역을 만들거나 업데이트하려면 다음 배포 옵션 중 하나를 선택합니다.

Azure CLI를 사용하여 템플릿 적용

Azure CLI를 사용하여 새 작업 영역을 만들려면 다음 명령을 실행합니다.

az deployment group create --resource-group <resource-group-name>  \
                           --template-file <file-name>.json \
                           --parameters workspaceName=<new-workspace-name> \
                           keyvaultUri=<keyvaultUrl> \
                           keyName=<keyName> keyVersion=<keyVersion>

Azure CLI를 사용하여 고객 관리형 키 작업 영역을 사용하거나 기존 키를 회전하도록 기존 작업 영역을 업데이트하려면 다음을 수행합니다.

  1. 작업 영역을 배포한 ARM 템플릿에서 고객 관리형 키를 추가하지 않은 경우 resources.properties.encryption 섹션 및 관련 매개 변수를 추가합니다. 이 문서의 앞부분에 있는 템플릿을 참조하세요.

    1. 템플릿에서 resources.properties.encryption 섹션을 추가합니다.
    2. parameters 섹션에서 템플릿의 세 개의 새 매개 변수(keyvaultUri, keyNamekeyVersion)를 추가합니다.
    3. parameters 섹션에서는 템플릿에서 "type": "string",을 제거합니다.
  2. 새 작업 영역을 만들 때와 동일한 명령을 실행합니다. 리소스 그룹 이름과 작업 영역 이름이 기존 작업 영역과 동일한 경우 이 명령은 새 작업 영역을 만드는 대신 기존 작업 영역을 업데이트합니다.

    az deployment group create --resource-group <existing-resource-group-name>  \
                               --template-file <file-name>.json \
                               --parameters workspaceName=<existing-workspace-name> \
                               keyvaultUri=<keyvaultUrl> \
                               keyName=<keyName> keyVersion=<keyVersion>
    

    키 관련 매개 변수의 변경 내용 외에는 작업 영역을 만드는 데 사용한 것과 동일한 매개 변수를 사용합니다.

    Important

    키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.

Azure Portal을 사용하여 템플릿 적용

Azure Portal에서 템플릿을 사용하여 작업 영역을 만들거나 업데이트하려면 다음을 수행합니다.

  1. 사용자 지정 배포 페이지로 이동합니다.

  2. 편집기에서 사용자 고유의 템플릿을 빌드합니다.를 클릭합니다.

  3. JSON을 붙여넣습니다.

  4. 저장을 클릭합니다.

  5. 매개 변수를 작성합니다.

    기존 작업 영역을 업데이트하려면 작업 영역을 만드는 데 사용한 것과 동일한 매개 변수를 사용합니다. 키를 처음 추가하려면 세 개의 키 관련 매개 변수를 추가합니다. 키를 회전하려면 키 관련 매개 변수의 일부 또는 전부를 변경합니다. 리소스 그룹 이름과 작업 영역 이름이 기존 작업 영역과 동일한지 확인합니다. 동일한 경우 이 명령은 새 작업 영역을 만드는 대신 기존 작업 영역을 업데이트합니다.

    키 관련 매개 변수의 변경 내용 외에는 작업 영역을 만드는 데 사용한 것과 동일한 매개 변수를 사용합니다.

  6. 검토 + 만들기를 클릭합니다.

  7. 유효성 검사 문제가 없으면 만들기를 클릭합니다.

    Important

    키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.

자세한 내용은 Azure 문서 빠른 시작: Azure Portal을 사용하여 ARM 템플릿 만들기 및 배포를 참조하세요.

4단계(선택 사항): Notebooks 다시 가져오기

기존 작업 영역에 대해 관리되는 서비스를 위한 키가 추가되면 향후의 쓰기 작업에서만 이 키를 사용합니다. 기존 데이터는 다시 암호화되지 않습니다.

데이터를 암호화하는 키가 해당 키로 보호 및 제어되도록 모든 Notebook을 내보낸 다음, 다시 가져올 수 있습니다. 작업 영역 내보내기 및 가져오기 API를 사용할 수 있습니다.

나중에 키 회전

고객 관리형 키를 관리되는 서비스에 이미 사용하고 있는 경우 작업 영역을 새 키 버전 또는 완전히 새로운 키로 업데이트할 수 있습니다. 이를 키 회전이라고 합니다.

  1. Key Vault에서 새 키를 만들거나 기존 키를 회전합니다. 1단계: Key Vault 설정 참조

    새 키에 적절한 권한이 있는지 확인합니다.

  2. 템플릿에 올바른 API 버전이 있는지 확인합니다. 2021-04-01-preview보다 크거나 같아야 합니다.

  3. 포털, CLI 또는 PowerShell을 사용하여 작업 영역을 새 키로 업데이트합니다. 3단계: 작업 영역에 키 추가를 참조하고 작업 영역 업데이트 지침을 따릅니다. 새 작업 영역을 만드는 대신 기존 작업 영역을 업데이트하도록 동일한 값을 리소스 그룹 이름과 작업 영역 이름에 사용해야 합니다. 키 관련 매개 변수의 변경 내용 외에는 작업 영역을 만드는 데 사용한 것과 동일한 매개 변수를 사용합니다.

    Important

    키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.

  4. 필요에 따라 모든 기존 Notebooks에서 새 키를 사용할 수 있도록 기존Notebooks를 내보내고 다시 가져옵니다.

문제 해결

실수로 키 삭제

Azure Key Vault에서 키를 삭제하면 작업 영역 로그인이 실패하기 시작하고 Azure Databricks에서 Notebook을 읽을 수 없습니다. 이를 방지하려면 일시 삭제를 사용하도록 설정하는 것이 좋습니다. 이 옵션을 사용하면 키가 삭제된 경우 30일 이내에 복구할 수 있습니다. 일시 삭제가 사용하도록 설정된 경우 키를 다시 사용하도록 설정하여 문제를 해결하면 됩니다.

키 자격 증명 모음 권한으로 인한 키 업데이트 실패

작업 영역을 만드는 데 문제가 있는 경우 키 자격 증명 모음에 올바른 권한이 있는지 확인합니다. Azure에서 반환된 오류는 이를 근본 원인으로 올바르게 표시하지 않을 수 있습니다. 또한 필수 권한은 get, wrapKeyunwrapKey입니다. 1단계: Key Vault 설정 참조

분실한 키를 복구할 수 없음

또한 키를 분실하여 복구할 수 없는 경우 키를 통해 암호화된 모든 Notebook 데이터는 복구할 수 없습니다.