Поделиться через


Настройка ключей, управляемых клиентом для учетной записи Azure Cosmos DB, с помощью Azure Managed HSM Key Vault

Область применения: NoSQL Mongodb Кассандра Гремлин Таблица

См. ссылку "Настройка ключей, управляемых клиентом" с помощью Azure Key Vault

Примечание.

В настоящее время управляемые клиентом ключи доступны только для новых учетных записей Azure Cosmos DB. Их следует настраивать во время создания учетной записи.

Зарегистрируйте поставщика ресурсов Azure Cosmos DB для своей подписки Azure

  1. Войдите на портал Azure, перейдите к своей подписке Azure и на вкладке Параметры выберите Поставщики ресурсов.

    Снимок экрана: параметр

  2. Найдите поставщик ресурсов Microsoft.DocumentDB. Убедитесь, что поставщик ресурсов уже помечен как зарегистрированный. Если нет, выберите поставщика ресурсов и нажмите Зарегистрировать.

    Снимок экрана: параметр Register для поставщика ресурсов Microsoft.DocumentDB.

Настройте ваше Azure Managed HSM хранилище ключей

Using customer-managed keys with Azure Cosmos DB requires you to set two properties on the Azure Key Vault instance that you plan to use to host your encryption keys: Soft Delete and Purge Protection.

Поскольку мягкое удаление включено по умолчанию, нужно включить только защиту от очистки. При создании управляемого устройства 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

For more information about the CLI commands available for managed HSM, refer to the following Azure Key Vault

Создание ключа шифрования и назначение ролей корреспондента

После активации управляемого устройства HSM необходимо создать ключ, который будет использоваться для учетной записи CMK. Для этого администратору назначается роль "Управляемый пользователь шифрования HSM". To read more about how RBAC (role based access control) works with Managed HSM, refer to the following articles: Managed HSM local RBAC built-in roles - Azure Key Vault | Microsoft Learn and Azure Managed HSM access control | 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

Now that the key has been created, the correspondent role needs to be assigned to either the Cosmos DB Principal ID or the Azure Managed Identity for provisioning the account. Роль «Пользователь шифрования в управляемой криптослужбе HSM» используется, так как у нее есть только три разрешения, необходимые для работы с учетной записью CMK: получение, упаковка и разупаковка. Эти разрешения также могут быть полезны только для ключей, хранящихся в управляемом HSM Azure.

Without Azure managed identity:

$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

With Azure managed identity:

$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

Это создаст учетную запись Cosmos DB CMK с ключом, хранящимся в Azure Managed HSM Key Vault.

Switching to system assigned managed identity.

Cosmos DB supports the use of a system assigned managed identity for a CMK Cosmos DB account. Дополнительные сведения о системно назначаемом управляемом удостоверении CMK см. в руководстве по настройке ключей, управляемых пользователем, для учетной записи Azure Cosmos DB.

Выполните следующие команды, чтобы переключиться с удостоверения по умолчанию на назначенное системой управляемое удостоверение:

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"

As an optional note, the original role assignment to Cosmos DB’s principal ID or Azure Managed Identity can be removed.

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

Следующие шаги