Konfigurowanie kluczy zarządzanych przez klienta dla konta usługi Azure Cosmos DB przy użyciu usługi Azure Managed HSM Key Vault

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

Zapoznaj się z linkiem Konfigurowanie kluczy zarządzanych przez klienta za pomocą usługi Azure Key Vault

Uwaga

Obecnie klucze zarządzane przez klienta są dostępne tylko dla nowych kont usługi Azure Cosmos DB. Należy je skonfigurować podczas tworzenia konta.

Rejestrowanie dostawcy zasobów usługi Azure Cosmos DB dla subskrypcji platformy Azure

  1. Zaloguj się do Azure Portal, przejdź do subskrypcji platformy Azure i wybierz pozycję Dostawcy zasobów na karcie Ustawienia:

    Zrzut ekranu przedstawiający opcję Dostawcy zasobów w menu nawigacji zasobów.

  2. Wyszukaj dostawcę zasobów Microsoft.DocumentDB . Sprawdź, czy dostawca zasobów jest już oznaczony jako zarejestrowany. Jeśli nie, wybierz dostawcę zasobów i wybierz pozycję Zarejestruj:

    Zrzut ekranu przedstawiający opcję Zarejestruj dostawcy zasobów Microsoft.DocumentDB.

Konfigurowanie Key Vault zarządzanego modułu HSM platformy Azure

Korzystanie z kluczy zarządzanych przez klienta w usłudze Azure Cosmos DB wymaga ustawienia dwóch właściwości w wystąpieniu usługi Azure Key Vault, którego planujesz użyć do hostowania kluczy szyfrowania: usuwanie nietrwałe i ochrona przed przeczyszczeniem.

Ponieważ usuwanie nietrwałe jest domyślnie włączone, należy włączyć tylko ochronę przed przeczyszczaniem. Podczas tworzenia zarządzanego modułu HSM użyj następującego polecenia interfejsu wiersza polecenia:

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

Jeśli używasz istniejącego wystąpienia zarządzanego modułu HSM platformy Azure Key Vault, możesz sprawdzić, czy te właściwości są włączone, przeglądając sekcję Właściwości za pomocą następującego polecenia:

az keyvault show $hsmName $rgName

Jeśli ochrona przed przeczyszczeniem nie jest włączona, można użyć następującego polecenia:

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

Aby uzyskać więcej informacji na temat poleceń interfejsu wiersza polecenia dostępnych dla zarządzanego modułu HSM, zapoznaj się z następującymi Key Vault platformy Azure

Tworzenie klucza szyfrowania i przypisywanie ról korespondentów

Po aktywowaniu zarządzanego modułu HSM należy utworzyć klucz, który będzie używany dla konta cmK. W tym celu rola "Zarządzany użytkownik kryptograficzny modułu HSM" jest przypisywana do administratora. Aby dowiedzieć się więcej na temat sposobu działania kontroli dostępu opartej na rolach (kontroli dostępu opartej na rolach) z zarządzanym modułem HSM, zapoznaj się z następującymi artykułami: Managed HSM local RBAC built-in roles — Azure Key Vault | Microsoft Learn i 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

Po utworzeniu klucza należy przypisać rolę korespondenta do identyfikatora głównego usługi Cosmos DB lub tożsamości zarządzanej platformy Azure na potrzeby aprowizowania konta. Rola "Zarządzany użytkownik szyfrowania usługi kryptograficznej HSM" jest używana, ponieważ ma tylko trzy uprawnienia potrzebne do pracy z kontem cmK, będąc: get, zawijanie i odpakowywanie. Te uprawnienia są również ograniczone do używania tylko kluczy przechowywanych w zarządzanym module HSM platformy Azure.

Bez tożsamości zarządzanej platformy Azure:

$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

Za pomocą tożsamości zarządzanej platformy Azure:

$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

Spowoduje to aprowizację konta cmK usługi Cosmos DB z kluczem przechowywanym w Key Vault zarządzanego modułu HSM platformy Azure.

Przełączanie do tożsamości zarządzanej przypisanej przez system.

Usługa Cosmos DB obsługuje użycie przypisanej przez system tożsamości zarządzanej dla konta usługi Cosmos DB cmK. Aby uzyskać więcej informacji na temat klucza cmK tożsamości zarządzanej przypisanej przez system, zobacz Konfigurowanie kluczy zarządzanych przez klienta dla konta usługi Azure Cosmos DB

Wykonaj następujące polecenia, aby przełączyć się z domyślnej tożsamości na tożsamość zarządzaną przypisaną przez system:

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"

Opcjonalnie można usunąć oryginalne przypisanie roli do głównego identyfikatora usługi Cosmos DB lub tożsamości zarządzanej platformy Azure.

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

Następne kroki