Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo è la seconda parte di una serie di esercitazioni in quattro parti. La prima parte offre una panoramica delle chiavi gestite dal cliente, delle relative funzionalità e delle considerazioni di cui tenere conto prima di abilitarne una nel registro. Questo articolo illustra la procedura per abilitare una chiave gestita dal cliente tramite l'interfaccia della riga di comando di Azure, il portale di Azure o un modello di Azure Resource Manager.
Prerequisiti
- Installare l'interfaccia della riga di comando di Azure o prepararsi all'uso di Azure Cloud Shell.
- Accedere al portale di Azure.
Abilitare una chiave gestita dal cliente tramite interfaccia della riga di comando di Azure
Creare un gruppo di risorse
Eseguire il comando az group create per creare un gruppo di risorse che contiene il Key Vault, il Registro Azure Container e altre risorse necessarie:
az group create --name <resource-group-name> --location <location>
Creare un'identità gestita assegnata dall'utente
Configurare un'identità gestita assegnata dall'utente per il registro in modo che possa accedere alla chiave di crittografia:
Eseguire il comando az identity create per creare l'identità gestita:
az identity create \ --resource-group <resource-group-name> \ --name <managed-identity-name>Nell'output del comando, prendere nota dei valori
ideprincipalIdper configurare l'accesso del registro alla chiave:{ "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecretUrl": "https://control-eastus.identity.azure.net/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentityname/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myresourcegroup", "location": "eastus", "name": "myidentityname", "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "resourceGroup": "myresourcegroup", "tags": {}, "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }Per praticità, memorizzare i valori
ideprincipalIdnelle variabili di ambiente:identityID=$(az identity show --resource-group <resource-group-name> --name <managed-identity-name> --query 'id' --output tsv) identityPrincipalID=$(az identity show --resource-group <resource-group-name> --name <managed-identity-name> --query 'principalId' --output tsv)
Creare e configurare un insieme di credenziali delle chiavi
Eseguire il comando az keyvault create per creare un insieme di credenziali in cui archiviare una chiave gestita dal cliente per la crittografia del registro.
Per impostazione predefinita, il nuovo Key Vault abilita automaticamente l'impostazione soft delete. Per prevenire la perdita di dati dovuta all’eliminazione accidentale delle chiavi o dei Key Vault, è consigliabile abilitare l’impostazione di protezione dalla rimozione definitiva:
az keyvault create --name <key-vault-name> \ --resource-group <resource-group-name> \ --enable-purge-protectionPer praticità, prendere nota dell'ID risorsa del Key Vault e archiviare il valore nelle variabili di ambiente:
keyvaultID=$(az keyvault show --resource-group <resource-group-name> --name <key-vault-name> --query 'id' --output tsv)
Abilitare i servizi attendibili per accedere all'insieme di credenziali delle chiavi
Se il Key Vault è protetto con un firewall o una rete virtuale (endpoint privato), è necessario abilitare le impostazioni di rete per consentire l'accesso da parte dei servizi di Azure attendibili. Per altre informazioni, vedere Configurare le impostazioni di rete di Azure Key Vault.
Abilitare le identità gestite per l’accesso a Key Vault
Esistono due modi per consentire alle identità gestite di accedere all'insieme di credenziali.
La prima opzione consiste nel configurare i criteri di accesso per il Key Vault e impostare le autorizzazioni della chiave per l'accesso con un'identità gestita assegnata dall'utente:
Eseguire il comando az keyvault set policy. Passare il valore della variabile di ambiente
principalIDcreata e archiviata in precedenza.Impostare le autorizzazioni per le chiavi su
get,unwrapKeyewrapKey:az keyvault set-policy \ --resource-group <resource-group-name> \ --name <key-vault-name> \ --object-id $identityPrincipalID \ --key-permissions get unwrapKey wrapKey
La seconda opzione consiste nell'usare il controllo degli accessi in base al ruolo (RBAC) di Azure per assegnare le autorizzazioni all'identità gestita assegnata dall'utente e accedere all'insieme di credenziali. Eseguire il comando az role assignment create e assegnare il ruolo Key Vault Crypto Service Encryption User a un'identità gestita assegnata dall'utente:
az role assignment create --assignee $identityPrincipalID \
--role "Key Vault Crypto Service Encryption User" \
--scope $keyvaultID
Creare una chiave nel Key Vault e ottenere l'ID della chiave
Eseguire il comando az keyvault key create per creare una chiave nel Key Vault:
az keyvault key create \ --name <key-name> \ --vault-name <key-vault-name>Nell'output del comando prendere nota dell'ID chiave (
kid).[...] "key": { "crv": null, "d": null, "dp": null, "dq": null, "e": "AQAB", "k": null, "keyOps": [ "encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey" ], "kid": "https://mykeyvault.vault.azure.net/keys/mykey/<version>", "kty": "RSA", [...]Per praticità, archivia il formato scelto per l'ID chiave nella variabile di ambiente
$keyID. È possibile usare un ID chiave con o senza una versione.
Rotazione delle chiavi crittografiche
È possibile scegliere la rotazione manuale o automatica delle chiavi.
La crittografia di un registry con una chiave gestita dal cliente con una versione della chiave consentirà solo la rotazione manuale delle chiavi in Registro Azure Container. In questo esempio viene archiviata la proprietà kid della chiave:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
La crittografia di un registro con una chiave gestita dal cliente, omettendo la versione della chiave, consentirà la rotazione automatica delle chiavi e il conseguente rilevamento di una nuova versione della chiave in Azure Key Vault. In questo esempio viene rimossa la versione dalla proprietà kid della chiave:
keyID=$(az keyvault key show \
--name <keyname> \
--vault-name <key-vault-name> \
--query 'key.kid' --output tsv)
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Creare e configurare un Managed HSM
È necessario effettuare il provisioning e attivare un Managed HSM prima di poter creare chiavi o assegnare ruoli del piano dati. Seguire Avvio rapido: Effettuare il provisioning e attivare un modulo di protezione hardware gestito usando il interfaccia della riga di comando di Azure e quindi tornare a questo articolo.
Se il firewall di HSM gestito è abilitato, configurare servizi attendibili o altri accessi di rete prima di creare il registro. Per altre informazioni, vedere Sicurezza di rete per Managed HSM.
L'utente che crea la chiave di crittografia deve disporre di un ruolo di HSM gestito che consenta la creazione di chiavi, ad esempio utente per la crittografia di HSM gestito. Per altre informazioni, vedere Gestione dei ruoli del piano dati del modulo di protezione hardware gestito.
Creare una chiave RSA-HSM che supporta il wrapping delle chiavi:
az keyvault key create \
--hsm-name <managed-hsm-name> \
--name <key-name> \
--kty RSA-HSM \
--ops wrapKey unwrapKey
Il modulo di protezione hardware gestito usa il controllo degli accessi in base al ruolo locale anziché i criteri di accesso di Key Vault. Assegnare il ruolo utente per la crittografia del servizio di crittografia di HSM gestito all'identità gestita assegnata dall'utente. L'esempio seguente limita l'assegnazione alla chiave usata dal Registro di sistema:
az keyvault role assignment create \
--hsm-name <managed-hsm-name> \
--role "Managed HSM Crypto Service Encryption User" \
--assignee-object-id $identityPrincipalID \
--assignee-principal-type MSI \
--scope /keys/<key-name>
Archiviare l'ID chiave con la relativa versione per la rotazione manuale:
keyID=$(az keyvault key show \
--hsm-name <managed-hsm-name> \
--name <key-name> \
--query 'key.kid' --output tsv)
Per abilitare la rotazione automatica delle chiavi, rimuovere la versione dall'ID chiave:
keyID=$(echo $keyID | sed -e "s/\/[^/]*$//")
Note
Un URI della chiave HSM gestita usa il formato https://<managed-hsm-name>.managedhsm.azure.net/keys/<key-name>/<version>. Il suffisso DNS può variare in base Azure cloud.
Creare un registro con la chiave gestita dal cliente
Eseguire il comando az acr create per creare un registro nel livello di servizio Premium e abilitare la chiave gestita dal cliente.
Passare i valori dell'ID identità gestita (
id) e dell'ID chiave (kid) archiviati nelle variabili di ambiente nei passaggi precedenti:az acr create \ --resource-group <resource-group-name> \ --name <container-registry-name> \ --identity $identityID \ --key-encryption-key $keyID \ --sku Premium
Visualizzare lo stato della crittografia
Eseguire il comando az acr encryption show per visualizzare lo stato della crittografia del registro con una chiave gestita dal cliente:
az acr encryption show --name <container-registry-name>
A seconda della chiave usata per crittografare il registro, l'output è simile al seguente:
{
"keyVaultProperties": {
"identity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"keyIdentifier": "https://myvault.vault.azure.net/keys/myresourcegroup/abcdefg123456789...",
"keyRotationEnabled": true,
"lastKeyRotationTimestamp": xxxxxxxx
"versionedKeyIdentifier": "https://myvault.vault.azure.net/keys/myresourcegroup/abcdefg123456789...",
},
"status": "enabled"
}
Abilitare una chiave gestita dal cliente tramite il portale di Azure
Creare un'identità gestita assegnata dall'utente
Creare un'identità gestita assegnata dall'utente per le risorse di Azure nel portale di Azure.
Seguire la procedura per creare un'identità assegnata dall'utente.
Salvare il nome dell'identità per usarlo nei passaggi successivi.
Creare un insieme di credenziali delle chiavi
Seguire la procedura descritta in Guida introduttiva: Creare un Key Vault tramite il portale di Azure.
Quando si crea un insieme di credenziali per una chiave gestita dal cliente, nella scheda Informazioni di base abilitare l'impostazione Protezione da rimozione. Questa impostazione consente di prevenire la perdita di dati a causa dell’eliminazione accidentale di chiavi o insiemi di credenziali.
Abilitare i servizi attendibili per accedere al Key Vault
Se l'insieme di credenziali è protetto da un firewall o da una rete virtuale (endpoint privato), abilitare l'impostazione di rete per consentire l'accesso da parte dei servizi di Azure attendibili. Per altre informazioni, vedere Configurare le impostazioni di rete di Azure Key Vault.
Abilitare le identità gestite per l’accesso al Key Vault
Esistono due modi per consentire alle identità gestite di accedere al Key Vault.
La prima opzione consiste nel configurare i criteri di accesso per il Key Vault e impostare le autorizzazioni della chiave per l'accesso con un'identità gestita assegnata dall'utente:
- Accedere all'insieme di credenziali delle chiavi.
- Selezionare Impostazioni>Criteri di accesso > +Aggiungi un criterio di accesso.
- Selezionare Autorizzazioni chiave, quindi scegliere Recupera, Annulla il wrapping della chiave ed Esegui il wrapping della chiave.
- In Seleziona entità, selezionare il nome della risorsa dell'identità gestita assegnata dall'utente.
- Seleziona Aggiungi e quindi Salva.
L'altra opzione consiste nell'assegnare il ruolo RBAC Key Vault Crypto Service Encryption User all'identità gestita assegnata dall'utente nell'ambito dell'insieme di credenziali delle chiavi. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Creare e configurare un Managed HSM
- Seguire Avvio rapido: Effettuare il provisioning e attivare un modulo di protezione hardware gestito usando il portale di Azure.
- Assicurarsi che l'utente che crea la chiave di crittografia abbia un ruolo HSM gestito che consenta la creazione della chiave, ad esempio Managed HSM Crypto User.
- In Impostazioni selezionare Chiavi e quindi creare o importare una chiave RSA-HSM che supporta le operazioni
wrapKeyeunwrapKey. - In Impostazioni, seleziona RBAC locale.
- Aggiungere l'assegnazione di ruolo Managed HSM Crypto Service Encryption User per l'identità assegnata dall'utente. Per il principio del privilegio minimo, assegnare il ruolo nell'ambito della chiave di crittografia. Per altre informazioni, vedere Gestione dei ruoli del piano dati dell'HSM gestito.
- Se il firewall di Managed HSM è abilitato, configurare i servizi attendibili o altri accessi alla rete. Per altre informazioni, vedere Sicurezza di rete per HSM gestito.
Importante
Registro Azure Container non crea o aggiorna assegnazioni di ruolo di Managed HSM. Configurare l'assegnazione di ruolo prima di creare il registro o modificarne la chiave di crittografia.
Creare una chiave nell'insieme di credenziali delle chiavi
Creare una chiave nel Key Vault e usarla per crittografare il registry. Seguire questa procedura per selezionare una versione di chiave specifica come chiave gestita dal cliente. Potrebbe anche essere necessario creare una chiave prima di creare il registry se l'accesso al Key Vault è limitato a un endpoint privato o a reti selezionate.
- Vai al tuo Key Vault.
- Selezionare Impostazioni>Tasti.
- Selezionare +Genera/Importa e immettere un nome univoco per la chiave.
- Accettare i rimanenti valori predefiniti e quindi selezionare Crea.
- Dopo la creazione, selezionare la chiave e quindi selezionare la versione corrente. Copiare l'identificatore della chiave per la versione della chiave.
Creare un registro contenitori
Selezionare Crea una risorsa>Contenitori>Registro Container.
Nella scheda Nozioni di base selezionare o creare un gruppo di risorse e immettere un nome di registro. In SKU selezionare Premium.
Nella scheda Crittografia, per Chiave gestita dal cliente, selezionare Abilitata.
In Identità selezionare l'identità gestita creata.
Per Crittografia scegliere una delle opzioni seguenti:
- Scegliere Seleziona dall'insieme di credenziali delle chiavi e quindi selezionare un insieme di credenziali delle chiavi esistente o un HSM gestito e una chiave. Selezionare Crea nuovo per creare un insieme di credenziali e una chiave. La chiave selezionata è senza versione e abilita la rotazione automatica delle chiavi.
- Selezionare Immetti URI della chiave e specificare l'identificatore di un insieme di credenziali delle chiavi esistente o di una chiave di HSM gestito. È possibile specificare un URI della chiave con controllo delle versioni (per una chiave che è necessario ruotare manualmente) o un URI della chiave senza versione (che abilita la rotazione automatica delle chiavi).
Se un firewall di Managed HSM impedisce al portale di elencare le chiavi, consentire l'indirizzo IP del client o selezionare Immetti URI della chiave. Consentire ai servizi attendibili di Registro Azure Container di raggiungere HSM gestito ma non consentire a un client esterno al limite di rete configurato di usare il selettore chiavi.
Selezionare Rivedi e crea.
Selezionare Crea per distribuire l'istanza del registro.
Visualizzare lo stato della crittografia
Per visualizzare lo stato della crittografia del registro nel portale, andare al registro. In Impostazioni selezionare Crittografia.
Abilitare una chiave gestita dal cliente tramite un modello di Resource Manager
È possibile usare un modello di Resource Manager per creare un registro container e abilitare la crittografia con una chiave gestita dal cliente archiviata nell'insieme di credenziali delle chiavi o in HSM gestito.
Prima di distribuire il modello, creare l'identità assegnata dall'utente e configurarne l'accesso alla chiave:
- Per Key Vault, concedere all'identità le autorizzazioni
get,wrapKeyeunwrapKeyusando un criterio di accesso o il ruolo Azure RBAC Key Vault Crypto Service Encryption User. - Per Managed HSM, assegnare all'identità il ruolo RBAC locale Managed HSM Crypto Service Encryption User nell'ambito della chiave.
Il modello dichiara l'identità esistente in modo che il registro possa farvi affidamento. Distribuire il modello nello stesso gruppo di risorse dell'identità.
Copiare il contenuto seguente di un modello di Resource Manager in un nuovo file e salvarlo con il nome CMKtemplate.json:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "registry_name": { "type": "String" }, "identity_name": { "type": "String" }, "kek_id": { "type": "String" } }, "resources": [ { "type": "Microsoft.ContainerRegistry/registries", "apiVersion": "2019-12-01-preview", "name": "[parameters('registry_name')]", "location": "[resourceGroup().location]", "sku": { "name": "Premium", "tier": "Premium" }, "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name'))]": {} } }, "dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name'))]" ], "properties": { "adminUserEnabled": false, "encryption": { "status": "enabled", "keyVaultProperties": { "identity": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identity_name')), '2018-11-30').clientId]", "keyIdentifier": "[parameters('kek_id')]" } }, "networkRuleSet": { "defaultAction": "Allow", "virtualNetworkRules": [], "ipRules": [] }, "policies": { "quarantinePolicy": { "status": "disabled" }, "trustPolicy": { "type": "Notary", "status": "disabled" }, "retentionPolicy": { "days": 7, "status": "disabled" } } } }, { "type": "Microsoft.ManagedIdentity/userAssignedIdentities", "apiVersion": "2018-11-30", "name": "[parameters('identity_name')]", "location": "[resourceGroup().location]" } ] }Seguire i passaggi delle sezioni precedenti per creare le risorse seguenti:
- Identità gestita assegnata all'utente, identificata dal nome
- chiave di Key Vault o chiave di HSM gestito, identificata dall'ID della chiave
- Autorizzazioni di Key Vault necessarie o assegnazione del ruolo RBAC locale di Managed HSM
Eseguire il comando az deployment group create per creare il registro usando il file di modello precedente. Specificare un nuovo nome del registro, il nome dell’identità gestita assegnata dall’utente esistente e l’ID della chiave creato.
az deployment group create \ --resource-group <resource-group-name> \ --template-file CMKtemplate.json \ --parameters \ registry_name=<registry-name> \ identity_name=<managed-identity> \ kek_id=<key-id>Per visualizzare lo stato della crittografia del registro, eseguire il comando az acr encryption show:
az acr encryption show --name <registry-name>
Passaggi successivi
Passare all'articolo successivo per informazioni dettagliate sulla rotazione delle chiavi gestite dal cliente, l'aggiornamento delle versioni delle chiavi e la revoca di una chiave gestita dal cliente.