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

참고 항목

이 기능을 사용하려면 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

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

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

Azure Portal 사용

  1. Key Vault를 만들거나 선택합니다.
    • Key Vault를 만들려면 Azure Portal 페이지로 이동하여 Key Vault를 만듭니다. + 만들기를 클릭합니다. 리소스 그룹 이름, 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. 보안 주체 탭에서 애플리케이션 ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d 가 있는 첫 번째 엔터프라이즈 애플리케이션 결과를 입력 AzureDatabricks 하고 스크롤하여 선택합니다.

      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에서 가져올 수 있는 다음 값을 적어 둡니다. 이 값은 이후 단계에서 사용합니다.

  • 키 자격 증명 모음 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. Key Vault에 사용 권한이 있는 액세스 정책을 추가합니다.

    $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. 암호화 탭에 도달하면 다음을 수행합니다.

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

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

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

Important

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

템플릿 없이 Azure CLI 사용

  1. 다음 명령을 사용하여 Key Vault에 액세스 정책을 추가합니다. 이전 단계에서 사용한 자격 증명 모음 이름으로 바꾸고 애플리케이션의 AzureDatabricks 개체 ID로 바꿉 <key-vault-name><object-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: 키 자격 증명 모음 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: 키 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에 대한 API 버전을 2023-02-01 사용하여 고객 관리형 키를 사용하여 새 작업 영역을 만듭니다. 이 텍스트를 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)를 추가합니다.
  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단계(선택 사항): Notebook 다시 가져오기

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

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

나중에 키 회전

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

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

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

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

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

    Important

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

  4. 필요에 따라 기존 Notebook을 내보내고 다시 가져와 기존 전자 필기장이 모두 새 키를 사용하도록 합니다.

문제 해결

실수로 키 삭제

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

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

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

분실한 키를 복구할 수 없음

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