관리되는 서비스에 대해 고객 관리형 키 사용
참고 항목
이 기능을 사용하려면 Premium 플랜이 필요합니다.
데이터에 대한 추가 제어를 위해 사용자 고유의 키를 추가하여 일부 유형의 데이터에 대한 액세스를 보호하고 제어할 수 있습니다. Azure Databricks에는 여러 고객 관리형 키 기능이 있습니다. 관련 기능을 비교하려면 암호화를 위한 고객 관리형 키를 참조하세요.
팁
이 문서에서는 관리되는 서비스에 대한 Azure Key Vault 자격 증명 모음에서 사용자 고유의 키를 구성하는 방법을 설명합니다. Azure Key Vault 관리되는 HSM에서 키를 사용하는 방법에 대한 지침은 관리되는 서비스에 HSM 고객 관리형 키 사용을 참조하세요.
Azure Databricks 컨트롤 플레인의 관리되는 서비스 데이터는 미사용 시 암호화됩니다. 관리되는 서비스에 대한 고객 관리형 키를 추가하여 다음과 같은 유형의 암호화된 데이터에 대한 액세스를 보호하고 제어할 수 있습니다.
- Azure Databricks 컨트롤 플레인의 Notebook 원본.
- Notebook에 대한 Notebook 결과는 컨트롤 플레인에 저장된 대화형(작업 아님)으로 실행됩니다. 기본적으로 더 큰 결과는 작업 영역 루트 버킷에도 저장됩니다. 모든 대화형 Notebook 결과를 클라우드 계정에 저장하도록 Azure Databricks를 구성할 수 있습니다.
- 비밀 관리자 API가 저장한 비밀.
- Databricks SQL 쿼리 및 쿼리 기록.
- Databricks Git 폴더와의 Git 통합을
데 사용되는 PAT(개인 액세스 토큰) 또는 기타 .
작업 영역에 대한 고객 관리형 키 암호화를 추가한 후에는 Azure Databricks가 이 키를 사용하여 작업 영역의 관리되는 서비스 데이터에 대한 향후 쓰기 작업을 암호화하는 키에 대한 액세스를 제어합니다. 기존 데이터는 다시 암호화되지 않습니다. 데이터 암호화 키는 여러 읽기 및 쓰기 작업을 위해 메모리에 캐시되고 정기적으로 메모리에서 제거됩니다. 해당 데이터에 대한 새 요청에는 클라우드 서비스의 키 관리 시스템에 대한 또 다른 요청이 필요합니다. 키를 삭제하거나 revoke 하면 캐시 시간 간격이 끝날 때 보호된 데이터에 대한 읽기 또는 쓰기가 실패합니다.
나중에 고객 관리형 키를 회전(update)할 수 있습니다. 나중에 키 회전을 참조하세요.
이 기능은 컨트롤 플레인 외부에 저장된 데이터를 암호화하지 않습니다. 다른 고객 관리형 키 기능은 암호화에 대한 고객 관리형 키를 참조하세요.
요구 사항
이러한 작업에 Azure CLI를 사용하려면 Azure CLI 도구를 설치하고 Databricks 확장을 설치합니다.
az extension add --name databricks
이러한 작업에 Powershell을 사용하려면 Azure PowerShell을 설치하고 Databricks Powershell 모듈을 설치합니다. 또한 로그인해야 합니다.
Connect-AzAccount
사용자로 Azure 계정에 로그인하려면 Azure Databricks 사용자 계정으로 PowerShell 로그인을 참조하세요. Azure 계정에 서비스 주체로 로그인하려면 Microsoft Entra ID 서비스 주체를 사용하여 PowerShell 로그인을 참조하세요.
1단계: Key Vault 설정 Set
Azure Key Vault 인스턴스를 만들고 해당 권한을 set 합니다. Azure Portal, CLI 또는 API를 통해 이를 수행할 수 있습니다.
Important
KeyVault는 Azure Databricks 작업 영역과 동일한 Azure 테넌트에 있어야 합니다.
이러한 지침은 여러 배포 옵션에 대해 자세히 설명합니다.
Azure Portal 사용
- Key Vault를 생성하거나 select 작업을 수행하십시오.
- Key Vault를 만들려면 Key Vault 만들기를 위한 Azure Portal 페이지로 이동합니다. + 만들기를 클릭합니다. 리소스 그룹 이름, Key Vault 이름, 지역 및 가격 책정 계층을 입력합니다. 검토 + 만들기를 클릭한 다음, 만들기를 클릭합니다.
- 기존 Key Vault를 사용하려면 다음 단계에서 Key Vault 이름을 복사합니다.
-
AzureDatabricks 애플리케이션의 Get 개체 ID.
- Azure Portal에서 Microsoft Entra ID로 이동합니다.
- 사이드바 메뉴에서 Select엔터프라이즈 애플리케이션.
-
AzureDatabricks
를 검색하고, 결과에서 엔터프라이즈 애플리케이션을 클릭합니다. - 속성에서 개체 ID를 복사합니다.
- Azure Portal을 사용하여 Key Vault에 액세스 정책을 추가합니다.
작업 영역의 관리되는 서비스에 대한 고객 관리형 키를 구성하는 데 사용할 Azure Key Vault로 이동합니다.
왼쪽 패널에서 액세스 정책 탭을 클릭합니다.
페이지 맨 위에 있는 Select만들기 버튼.
권한 탭의 키 사용 권한 섹션에서 Get, 키 래핑 해제, 키 래핑을 활성화합니다.
다음을 클릭합니다.
주체 탭에서
AzureDatabricks
를 입력하고, 애플리케이션 ID가2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
인 첫 번째 엔터프라이즈 애플리케이션 결과로 스크롤하여 select하십시오.AzureDatabricks 애플리케이션
계속해서 검토 + 만들기 탭에서 b를 클릭합니다.
Azure CLI 사용
Azure CLI를 사용하여 다음 지침을 완료합니다.
Key Vault를 만들거나 기존 Key Vault를 select.
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 이름을 복사합니다.
Azure CLI를 사용하여 AzureDatabricks 애플리케이션의 개체 ID Get을 확인하십시오.
az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \ --query "id" \ --output tsv
올바른 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에서 get할 수 있는 다음 values를 기록해 두십시오. 이 값은 이후 단계에서 사용합니다.
- 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 키의 형식은 다릅니다.
기존 키를 사용하는 대신 하나를 생성하려면, 키에 대해 get를 작성하고 이를 다음 단계에서 사용할 수 있도록 이러한 values를 복사하세요. 계속하기 전에 기존 키가 사용하도록 설정되어 있는지 확인합니다.
Azure PowerShell 사용
키를 만들려는 경우 만든 방법과 시기에 따라 액세스 정책을 set 할 수 있습니다. 예를 들어 최근에 PowerShell을 사용하여 Key Vault를 만든 경우 새 Key Vault에 키를 만드는 데 필요한 액세스 정책이 부족할 수 있습니다. 다음 예제에서는
EmailAddress
매개 변수를 사용하여 정책을 set합니다. 관련 세부 정보는 Microsoft 문서에서 Set-AzKeyVaultAccessPolicy에 대한 내용을 참조하세요.새로운 Key Vault의 액세스 정책을 Set으로 설정하십시오.
Set-AzKeyVaultAccessPolicy \ -VaultName $keyVault.VaultName \ -PermissionsToKeys all \ -EmailAddress <email-address>
키를 만들거나 기존 키를 검색할 수 있습니다.
키 만들기:
$key = Add-AzKeyVaultKey \ -VaultName $keyVault.VaultName \ -Name <key-name> \ -Destination 'Software'
기존 키 검색:
$key = Get-AzKeyVaultKey \ -VaultName $keyVault.VaultName \ -Name <key-name>
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 사용
Azure Portal 홈페이지로 이동합니다.
페이지 왼쪽 상단에서 리소스 만들기를 클릭합니다.
검색 창 내에서
Azure Databricks
를 입력하고 Azure Databricks 옵션을 클릭합니다.Azure Databricks 위젯에서 만들기를 클릭합니다.
기본 및 네트워킹 탭의 입력 필드에 values을 입력합니다.
암호화 탭에 도달하면 다음을 수행합니다.
- 작업 영역을 만들려면 관리되는 서비스 섹션에서 사용자 고유의 키 사용을 활성화합니다.
- 작업 영역을 업데이트하려면 관리되는 서비스를 사용하도록 설정합니다.
Set 암호화 필드.
- 키 Identifier 필드에 Azure Key Vault 키의 키 Identifier 붙여넣습니다.
- 구독 드롭다운에서 Azure Key Vault 키의 구독 이름을 입력합니다.
나머지 탭을 완료하고 검토 + 만들기(새 작업 영역의 경우) 또는 저장(작업 영역 업데이트의 경우)을 클릭합니다.
Important
키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.
템플릿 없이 Azure CLI 사용
다음 명령을 사용하여 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>
작업 영역을 만들거나 update를 수행하세요.
만들기와 update모두에 대해 명령에 다음 필드를 추가합니다.
-
managed-services-key-name
: 키 이름 -
managed-services-key-vault
: Key vault URI -
managed-services-key-version
: 키 버전입니다. 가 아닌latest
특정 키 버전을 사용합니다.
다음 필드를 사용하여 작업 영역 만들기 예제:
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>
작업 영역에서 이러한 필드를 사용한 update 예제:
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 사용
작업 영역을 만들거나 update 새 키에 대한 명령에 다음 parameters 추가합니다.
-
ManagedServicesKeyVaultPropertiesKeyName
: 키 이름 -
ManagedServicesKeyVaultPropertiesKeyVaultUri
: Key URI -
ManagedServicesKeyVaultPropertiesKeyVersion
: 키 버전입니다. 가 아닌latest
특정 키 버전을 사용합니다.
다음 필드로 작업 영역 만들기 예제:
New-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-location $keyVault.Location \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version
이러한 필드를 포함한 예제 작업 영역 update:
Update-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version
Important
키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.
ARM 템플릿을 사용하여 변경 내용 적용
다음 ARM 템플릿은 2023-02-01
리소스에 대한 Microsoft.Databricks/workspaces
API 버전을 사용하여 고객 관리형 키를 통해 새 작업 영역을 만듭니다. 이 텍스트를 databricks-cmk-template.json
이라는 파일에 로컬로 저장합니다.
이 예제 템플릿에는 작업 영역을 배포할 자체 VNet을 제공하는 등 가능한 모든 Azure Databricks 기능이 포함되지 않습니다.
Important
템플릿을 이미 사용하는 경우 이 템플릿의 추가 parameters, 리소스 및 출력을 기존 템플릿에 병합합니다.
{
"$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. Use the specific key version and not `latest`."
}
}
},
"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')))]"
}
}
}
다른 템플릿을 이미 사용하는 경우 이 템플릿의 parameters, 리소스 및 출력을 기존 템플릿에 병합할 수 있습니다.
이 템플릿을 사용하여 작업 영역을 만들거나 update 다음 배포 옵션 중 하나를 선택합니다.
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>
참고 항목
가 아닌 latest
특정 키 버전을 사용합니다.
기존 작업 영역을 고객 관리형 키 작업 영역으로 사용하거나 기존 키를 회전하려면 Azure CLI를 사용하여 update하십시오.
작업 영역을 배포한 ARM 템플릿이 고객 관리형 키를 추가하지 않은 경우,
resources.properties.encryption
섹션과 관련된 parameters을 추가해야 합니다. 이 문서의 앞부분에 있는 템플릿을 참조하세요.- 템플릿에서
resources.properties.encryption
섹션을 추가합니다. -
parameters
섹션에서 템플릿에서 세 개의 새 parameterskeyvaultUri
,keyName
및keyVersion
추가합니다. -
parameters
섹션에서 템플릿에서 remove"type": "string",
.
- 템플릿에서
새 작업 영역을 만들 때와 동일한 명령을 실행합니다. 리소스 그룹 이름과 작업 영역 이름이 기존 작업 영역과 동일한 경우 이 명령은 새 작업 영역을 만드는 대신 기존 작업 영역을 업데이트합니다.
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>
키 관련 parameters의 변경 사항 외에는 작업 영역을 만드는 데 사용된 것과 동일한 parameters을 사용하십시오.
Important
키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.
Azure Portal을 사용하여 템플릿 적용
Azure 포털에서 템플릿을 사용하여 작업 영역을 생성하거나 update 작업을 수행하려면:
사용자 지정 배포 페이지로 이동합니다.
편집기에서 사용자 고유의 템플릿을 빌드합니다.를 클릭합니다.
JSON을 붙여넣습니다.
저장을 클릭합니다.
parameters을(를) 채워 넣습니다.
기존 작업 영역을 update 하려면, 작업 영역을 만드는 데 사용했던 동일한 parameters을 사용하십시오. 처음으로 키를 추가하려면, 세 가지 키 관련 parameters을 추가하십시오. 키를 회전하려면 parameters과 관련된 일부 또는 전부를 변경하세요. 리소스 그룹 이름과 작업 영역 이름이 기존 작업 영역과 동일한지 확인합니다. 동일한 경우 이 명령은 새 작업 영역을 만드는 대신 기존 작업 영역을 업데이트합니다.
키 관련 parameters의 변경 사항 외에는 작업 공간을 만드는 데 사용된 동일한 parameters을 사용하십시오.
검토 + 만들기를 클릭합니다.
유효성 검사 문제가 없으면 만들기를 클릭합니다.
Important
키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.
자세한 내용은 Azure 문서 빠른 시작: Azure Portal을 사용하여 ARM 템플릿 만들기 및 배포를 참조하세요.
4단계(선택 사항): Notebooks 다시 가져오기
기존 작업 영역에 대해 관리되는 서비스를 위한 키가 추가되면 향후의 쓰기 작업에서만 이 키를 사용합니다. 기존 데이터는 다시 암호화되지 않습니다.
데이터를 암호화하는 키가 해당 키로 보호 및 제어되도록 모든 Notebook을 내보낸 다음, 다시 가져올 수 있습니다. 작업 영역 내보내기 및 가져오기 API를 사용할 수 있습니다.
나중에 키 회전
관리되는 서비스에 고객 관리형 키를 이미 사용하고 있는 경우 새 키 버전 또는 완전히 새로운 키로 작업 영역을 update 수 있습니다. 이를 키 회전이라고 합니다.
Key Vault에서 새 키를 만들거나 기존 키를 회전합니다. 1단계: Key VaultSet 참조하세요.
새 키에 적절한 권한이 있는지 확인합니다.
템플릿에 올바른 API 버전이 있는지 확인합니다.
2021-04-01-preview
보다 크거나 같아야 합니다.포털, CLI 또는 PowerShell을 사용하여 새 키를 사용하도록 작업 공간을 설정하세요 Update. 3단계: 작업 영역에 키 추가 및 작업 영역 update에 대한 지침을 따르세요. 새 작업 영역을 만드는 대신 기존 작업 영역을 업데이트할 수 있도록 리소스 그룹 이름 및 작업 영역 이름에 동일한 values 사용해야 합니다. 키 관련 parameters의 변경 사항을 제외하고, 작업 공간을 만드는 데 사용된 동일한 parameters을 사용하십시오.
Important
키를 회전하는 경우 이전 키를 24시간 동안 사용할 수 있도록 유지해야 합니다.
필요에 따라 모든 기존 Notebooks에서 새 키를 사용할 수 있도록 기존Notebooks를 내보내고 다시 가져옵니다.
문제 해결
실수로 키 삭제
Azure Key Vault에서 키를 삭제하면 작업 영역 로그인이 실패하기 시작하고 Azure Databricks에서 Notebook을 읽을 수 없습니다. 이를 방지하려면 일시 삭제를 사용하도록 설정하는 것이 좋습니다. 이 옵션을 사용하면 키가 삭제된 경우 30일 이내에 복구할 수 있습니다. 일시 삭제가 사용하도록 설정된 경우 키를 다시 사용하도록 설정하여 문제를 해결하면 됩니다.
Key Vault 권한 문제로 인해 키 update의 실패 발생
작업 영역을 만드는 데 문제가 있는 경우 키 자격 증명 모음에 올바른 권한이 있는지 확인합니다. Azure에서 반환된 오류는 이를 근본 원인으로 올바르게 표시하지 않을 수 있습니다. 또한 필수 권한은 get
, wrapKey
및 unwrapKey
입니다.
1단계: Key Vault을(를) Set 설정하세요.
분실한 키를 복구할 수 없음
또한 키를 분실하여 복구할 수 없는 경우 키를 통해 암호화된 모든 Notebook 데이터는 복구할 수 없습니다.