Condividi tramite


Gestire Key Vault nell'hub di Azure Stack con PowerShell

Questo articolo descrive come configurare e gestire un Key Vault in Hub di Azure Stack usando PowerShell. Si apprenderà come usare i cmdlet di PowerShell di Key Vault per:

  • Creare una cassaforte di chiavi.
  • Archiviare e gestire chiavi crittografiche e segreti.
  • Autorizzare utenti o app a richiamare le operazioni nel caveau.

Nota

I cmdlet di PowerShell per Key Vault descritti in questo articolo sono disponibili in Azure PowerShell SDK.

Prerequisiti

Attivare la sottoscrizione del proprio tenant per le operazioni di Key Vault

Prima di poter eseguire qualsiasi operazione su un Key Vault, devi assicurarti che la sottoscrizione del tenant sia abilitata per le operazioni nel Key Vault. Per verificare che le operazioni dell'insieme di credenziali siano abilitate, eseguire il comando seguente:

Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize

Se la sottoscrizione è abilitata per le operazioni dell'insieme di credenziali, l'output mostra RegistrationState è Registrato per tutti i tipi di risorse di un insieme di credenziali delle chiavi.

Stato di registrazione del Key Vault in PowerShell

Se le operazioni del Key Vault non sono abilitate, eseguire il comando seguente per registrare il servizio Key Vault nella tua sottoscrizione.

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

Se la registrazione ha esito positivo, viene restituito l'output seguente:

Registrazione del Key Vault in

Quando si richiamano i comandi di Key Vault, è possibile che venga visualizzato un errore, ad esempio "La sottoscrizione non è registrata per l'uso dello spazio dei nomi 'Microsoft.KeyVault'." Se viene visualizzato un errore, verificare di aver abilitato il provider delle risorse di Key Vault seguendo le istruzioni date precedentemente.

Creare una key vault

Prima di creare un insieme di credenziali delle chiavi, creare un gruppo di risorse in modo che tutte le risorse correlate all'insieme di credenziali delle chiavi esistano in un gruppo di risorse. Usare il comando seguente per creare un nuovo gruppo di risorse:

New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force

Nuovo gruppo di risorse generato in PowerShell

Ora, utilizza il seguente cmdlet per creare un Key Vault nel gruppo di risorse creato in precedenza. Questo comando legge tre parametri obbligatori: nome del gruppo di risorse, nome del Key Vault e posizione geografica.

Eseguire il comando seguente per creare un Key Vault:

New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose

Nuovo archivio chiavi generato in PowerShell

L'output di questo comando mostra le proprietà del vault delle chiavi che hai creato. Quando un'app accede a questo vault, deve usare la proprietà Vault URI, che è https://vault01.vault.local.azurestack.external in questo esempio.

Distribuzione di Active Directory Federation Services (AD FS)

In una distribuzione di AD FS è possibile che venga visualizzato questo avviso: "I criteri di accesso non sono impostati. Nessun utente o applicazione dispone dell'autorizzazione per accedere a questo archivio." Per risolvere questo problema, impostare un criterio di accesso per l'archivio utilizzando il comando Set-AzKeyVaultAccessPolicy :

# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value

# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation

Gestire chiavi e segreti

Dopo aver creato una cassaforte, seguire questa procedura per creare e gestire chiavi e segreti nella cassaforte.

Creazione di una chiave

Usare il cmdlet Add-AzureKeyVaultKey per creare o importare una chiave software-protetta in un insieme di credenziali:

Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software

Il -Destination parametro viene usato per specificare che la chiave è protetta da software. Quando la chiave viene creata correttamente, il comando restituisce i dettagli della chiave creata.

Nuova chiave di Key Vault generata in PowerShell

È ora possibile fare riferimento alla chiave creata usando il relativo URI. Se si crea o si importa una chiave con lo stesso nome di una chiave esistente, la chiave originale viene aggiornata con i valori specificati nella nuova chiave. È possibile accedere alla versione precedente usando l'URI specifico della versione della chiave. Ad esempio:

  • Usare https://vault10.vault.local.azurestack.external:443/keys/key01 per ottenere sempre la versione corrente.
  • Usare https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a per ottenere questa versione specifica.

Ottenere una chiave

Usare il cmdlet Get-AzureKeyVaultKey per leggere una chiave e i relativi dettagli:

Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"

Creare un segreto

Usare il cmdlet Set-AzureKeyVaultSecret per creare o aggiornare un segreto in una cassaforte. Se non esiste già, viene creato un segreto. Se esiste già, viene creata una nuova versione del segreto:

$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue

Creare un segreto in PowerShell

Ottenere un segreto

Usare il cmdlet Get-AzureKeyVaultSecret per leggere un segreto in un Key Vault. Questo comando può restituire tutte le versioni o specifiche di un segreto:

Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"

Dopo aver creato le chiavi e i segreti, è possibile autorizzare le app esterne a usarle.

Autorizzare un'app a usare una chiave o un segreto

Usare il cmdlet seguente per autorizzare un'app ad accedere a una chiave o a un segreto nel vault delle chiavi.

Nell'esempio seguente, il nome dell'insieme di credenziali è ContosoKeyVault e l'app da autorizzare ha un client ID di 00001111-aaaa-2222-bbbb-3333cccc4444. Per autorizzare l'app, eseguire il comando seguente. È anche possibile specificare il parametro PermissionsToKeys per impostare le autorizzazioni per un utente, un'app o un gruppo di sicurezza.

Quando si usa il cmdlet per un ambiente dell'hub di Azure Stack configurato da AD FS, è necessario specificare il parametro BypassObjectIdValidation

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 00001111-aaaa-2222-bbbb-3333cccc4444 -PermissionsToKeys decrypt,sign -BypassObjectIdValidation

Se vuoi autorizzare la stessa app a leggere i segreti nel tuo Key Vault, esegui il seguente cmdlet:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation

Passaggi successivi