Configurare le chiavi gestite dal cliente per l'account Azure Cosmos DB con Azure Managed HSM Key Vault

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

Vedere il collegamento Configurare le chiavi gestite dal cliente con Azure Key Vault

Nota

Attualmente, le chiavi gestite dal cliente sono disponibili solo per i nuovi account Azure Cosmos DB. È necessario configurarle durante la creazione dell'account.

Registrare il provider di risorse Azure Cosmos DB per la sottoscrizione di Azure

  1. Accedere al portale di Azure, passare alla sottoscrizione di Azure e selezionare Provider di risorse nella scheda Impostazioni:

    Screenshot dell'opzione Provider di risorse nel menu di spostamento delle risorse.

  2. Cercare il provider di risorse Microsoft.DocumentDB. Verificare che il provider di risorse sia già contrassegnato come registrato. In caso contrario, scegliere il provider di risorse e selezionare Registra:

    Screenshot dell'opzione Registra per il provider di risorse Microsoft.DocumentDB.

Configurare Azure Managed HSM Key Vault

Per usare le chiavi gestite dal cliente con Azure Cosmos DB è necessario impostare due proprietà nell'istanza di Azure Key Vault che si intende usare per ospitare le chiavi di crittografia: Eliminazione temporanea e Protezione dalla rimozione definitiva.

Poiché l'eliminazione temporanea è attivata per impostazione predefinita, è necessario abilitare solo la protezione dalla rimozione definitiva. Quando si crea l’HSM gestito, usare il seguente comando dell'interfaccia della riga di comando:

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

Se si usa un'istanza di Azure Managed HSM Key Vault esistente, è possibile verificare che queste proprietà siano abilitate nella sezione Proprietà con il comando seguente:

az keyvault show $hsmName $rgName

Se la protezione dalla rimozione definitiva non è abilitata, è possibile usare il comando seguente:

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

Per altre informazioni sui comandi dell'interfaccia della riga di comando disponibili per l’HSM gestito, vedere il seguente Azure Key Vault

Creazione della chiave di crittografia e assegnazione dei ruoli corrispondenti

Dopo aver attivato l’HSM gestito, è necessario creare la chiave che verrà usata per l'account della chiave gestita dal cliente. A questo scopo, all'amministratore viene assegnato il ruolo "Utente Crypto HSM gestito". Per altre informazioni sul funzionamento del controllo degli accessi in base al ruolo (RBAC) con HSM gestito, vedere gli articoli seguenti: Ruoli predefiniti per il controllo degli accessi in base al ruolo locale dell’HSM gestito - Azure Key Vault | Microsoft Learn e Controllo degli accessi HSM gestito Azure | 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

Ora che la chiave è stata creata, il ruolo corrispondente deve essere assegnato all'ID dell’entità di sicurezza Cosmos DB o all'identità gestita di Azure per il provisioning dell'account. Il ruolo "Utente crittografia Crypto Service HSM gestito" viene usato perché dispone delle sole tre autorizzazioni necessarie per lavorare con un account chiave gestita dal cliente, ad esempio get, wrapping e unwrapping. Queste autorizzazioni hanno anche un ambito utile solo per le chiavi archiviate nell’HSM gestito di Azure.

Senza identità gestita di 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

Con identità gestita di 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

Verrà effettuato il provisioning di un account chiave gestita dal cliente di Cosmos DB con una chiave archiviata in un insieme di credenziali delle chiavi HSM gestito di Azure.

Passaggio all'identità gestita assegnata dal sistema.

Cosmos DB supporta l'uso di un'identità gestita assegnata dal sistema per un account chiave gestita dal cliente Cosmos DB. Per altre informazioni sulla chiave gestita dal cliente dell’identità gestita assegnata dal sistema, vedere: Configurare chiavi gestite dal cliente per l'account Azure Cosmos DB

Eseguire i comandi seguenti per passare dall'identità predefinita all'identità gestita assegnata dal sistema:

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"

Come nota facoltativa, è possibile rimuovere l'assegnazione del ruolo originale all'ID entità di Cosmos DB o all'identità gestita di Azure.

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

Passaggi successivi