Share via


Azure Managed HSM Key Vault를 사용하여 Azure Cosmos DB 계정에 대한 고객 관리형 키 구성

적용 대상: NoSQL MongoDB Cassandra Gremlin 테이블

Azure Key Vault로 고객 관리형 키 구성 링크를 참조하세요.

참고 항목

현재 고객 관리형 키는 새 Azure Cosmos DB 계정에만 사용할 수 있으며, 계정을 만드는 동안 구성해야 합니다.

Azure 구독에 대한 Azure Cosmos DB 리소스 공급자 등록

  1. Azure Portal에 로그인하고 Azure 구독으로 이동하여 설정 탭에서 리소스 공급자를 선택합니다.

    Screenshot of the Resource providers option in the resource navigation menu.

  2. Microsoft.DocumentDB 리소스 공급자를 검색합니다. 리소스 공급자가 이미 등록된 것으로 표시되어 있는지 확인합니다. 그렇지 않으면 리소스 공급자를 선택하고 등록을 선택합니다.

    Screenshot of the Register option for the Microsoft.DocumentDB resource provider.

Azure Managed HSM Key Vault 구성

Azure Cosmos DB에서 고객 관리형 키를 사용하려면 암호화 키를 호스팅하는 데 사용할 Azure Key Vault 인스턴스에서 일시 삭제보호 제거라는 두 가지 속성을 설정해야 합니다.

일시 삭제는 기본적으로 켜져 있으므로 제거 보호만 사용하도록 설정해야 합니다. 관리형 HSM을 만들 때 다음 CLI 명령을 사용합니다.

objectId = az ad signed-in-user show --query id -o tsv
az keyvault create --hsm-name $hsmName --resource-group $rgName --location $location --enable-purge-protection true --administrators $objectId --retention-days 7

기존 Azure Managed HSM Key Vault 인스턴스를 사용하는 경우 다음 명령을 사용하여 속성 섹션을 보면 이러한 속성을 사용하도록 설정되어 있는지 확인할 수 있습니다.

az keyvault show $hsmName $rgName

제거 보호가 활성화되지 않은 경우 다음 명령을 사용할 수 있습니다.

az keyvault update-hsm --enable-purge-protection true --hsm-name $hsmName --resource-group $rgName

관리되는 HSM에 사용할 수 있는 CLI 명령에 대한 자세한 내용은 다음 Azure Key Vault를 참조하세요.

암호화 키 만들기 및 해당 역할 할당

Managed HSM이 활성화되면 CMK 계정에 사용할 키를 만들어야 합니다. 이를 위해 "Managed HSM 암호화 사용자" 역할이 관리자에게 할당됩니다. Managed HSM에서 RBAC(역할 기반 액세스 제어)가 작동하는 방식에 대한 자세한 내용은 Managed HSM 로컬 RBAC 기본 제공 역할 - Azure Key Vault | Microsoft LearnAzure Managed HSM 액세스 제어 | Microsoft Learn 문서를 참조하세요.

objectId = az ad signed-in-user show --query id -o tsv
$keyName = "Name of your key"
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto User" --assignee $objectId --scope /keys
az keyvault key create --hsm-name $hsmName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 3072

이제 키를 만들었으므로 계정을 프로비전하기 위해 Cosmos DB 보안 주체 ID 또는 Azure 관리 ID에 해당 역할을 할당해야 합니다. "Managed HSM Crypto Service 암호화 사용자" 역할은 CMK 계정으로 작업하는 데 필요한 세 가지 권한(가져오기, 래핑 및 래핑 해제)만 있기 때문에 사용됩니다. 이러한 권한은 Azure Managed HSM에 저장된 키에만 유용하도록 범위가 지정됩니다.

Azure 관리 ID가 없는 경우:

$cosmosPrincipal = az ad sp show --id a232010e-820c-4083-83bb-3ace5fc29d0b --query id -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI

Azure 관리 ID가 있는 경우:

$identityResourceID = az identity show -g $rgName -n $identityName --query id -o tsv
$identityPrincipal = az identity show -g $rgName -n $identityName --query principalId -o tsv
$defaultIdentity = "UserAssignedIdentity={0}" -f $identityResourceID
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI --assign-identity $identityResourceID --default-identity $defaultIdentity

그러면 Azure Managed HSM Key Vault에 저장된 키를 사용하여 Cosmos DB CMK 계정이 프로비전됩니다.

시스템 할당 관리 ID로 전환합니다.

Cosmos DB는 CMK Cosmos DB 계정에 시스템 할당 관리 ID의 사용을 지원합니다. 시스템 할당 관리 ID CMK에 대한 자세한 내용은 Azure Cosmos DB 계정에 대한 고객 관리형 키 구성을 참조하세요.

다음 명령을 실행하여 기본 ID에서 시스템 할당 관리 ID로 전환합니다.

az cosmosdb identity assign -n $cosmosName -g $rgName
$principalMSIId = az cosmosdb identity show -n $cosmosName -g $rgName --query principalId -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $principalMSIId --scope /keys
az cosmosdb update --resource-group $rgName --name $cosmosName --default-identity "SystemAssignedIdentity"

선택적 참고 사항으로 Cosmos DB의 보안 주체 ID 또는 Azure 관리 ID에 대한 원래 역할 할당을 제거할 수 있습니다.

az keyvault role assignment delete --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys

다음 단계