Proteggere l'accesso a un insieme di credenziali delle chiaviSecure access to a key vault

Azure Key Vault è un servizio cloud che protegge le chiavi di crittografia e i segreti, come certificati, stringhe di connessione e password.Azure Key Vault is a cloud service that safeguards encryption keys and secrets like certificates, connection strings, and passwords. Poiché questi dati sono riservati e importanti per l'azienda, è necessario proteggere gli insiemi di credenziali delle chiavi consentendo l'accesso solo ad applicazioni e utenti autorizzati.Because this data is sensitive and business critical, you need to secure access to your key vaults by allowing only authorized applications and users. Questo articolo offre una panoramica del modello di accesso a Key Vault.This article provides an overview of the Key Vault access model. Verranno illustrate l'autenticazione e l'autorizzazione e sarà descritto come proteggere l'accesso agli insiemi di credenziali delle chiavi.It explains authentication and authorization, and describes how to secure access to your key vaults.

Nota

Questo articolo è stato aggiornato per usare il nuovo modulo Az di Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. È comunque possibile usare il modulo AzureRM, che continuerà a ricevere correzioni di bug almeno fino a dicembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Per altre informazioni sul nuovo modulo Az e sulla compatibilità di AzureRM, vedere Introduzione del nuovo modulo Az di Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Panoramica del modello di accessoAccess model overview

L'accesso a un insieme di credenziali delle chiavi è controllato tramite due interfacce: il piano di gestione e il piano dati.Access to a key vault is controlled through two interfaces: the management plane and the data plane. Il piano di gestione consente di gestire l'insieme di credenziali delle chiavi stesso.The management plane is where you manage Key Vault itself. Le operazioni in questo piano includono la creazione e l'eliminazione di insiemi di credenziali delle chiavi, il recupero delle proprietà dell'insieme di credenziali delle chiavi e l'aggiornamento dei criteri di accesso.Operations in this plane include creating and deleting key vaults, retrieving Key Vault properties, and updating access policies. Il piano dati consente di lavorare con i dati archiviati in un insieme di credenziali delle chiavi.The data plane is where you work with the data stored in a key vault. È possibile aggiungere, eliminare e modificare chiavi, segreti e certificati.You can add, delete, and modify keys, secrets, and certificates.

Per accedere a un insieme di credenziali delle chiavi in uno dei piani, tutti i chiamanti (utenti o applicazioni) devono disporre di autenticazione e autorizzazione appropriate.To access a key vault in either plane, all callers (users or applications) must have proper authentication and authorization. L'autenticazione stabilisce l'identità del chiamante.Authentication establishes the identity of the caller. L'autorizzazione determina le operazioni che il chiamante può eseguire.Authorization determines which operations the caller can execute.

Entrambi i piani usano Azure Active Directory (Azure AD) per l'autenticazione.Both planes use Azure Active Directory (Azure AD) for authentication. Per l'autorizzazione, il piano di gestione usa il controllo degli accessi in base al ruolo, mentre il piano dati usa i criteri di accesso dell'insieme di credenziali delle chiavi.For authorization, the management plane uses role-based access control (RBAC) and the data plane uses a Key Vault access policy.

Autenticazione di Active DirectoryActive Directory authentication

Quando si crea un insieme di credenziali delle chiavi in una sottoscrizione di Azure, questo viene automaticamente associato al tenant di Azure AD della sottoscrizione.When you create a key vault in an Azure subscription, it's automatically associated with the Azure AD tenant of the subscription. Tutti i chiamanti in entrambi i piani devono essere registrati in questo tenant ed eseguire l'autenticazione per accedere all'insieme di credenziali delle chiavi.All callers in both planes must register in this tenant and authenticate to access the key vault. In entrambi i casi, le applicazioni possono accedere a un insieme di credenziali delle chiavi in due modi:In both cases, applications can access Key Vault in two ways:

  • Accesso utente più applicazione: l'applicazione accede all'insieme di credenziali delle chiavi per conto di un utente connesso.User plus application access: The application accesses Key Vault on behalf of a signed-in user. Azure PowerShell e il portale di Azure sono esempi di questo tipo di accesso.Examples of this type of access include Azure PowerShell and the Azure portal. L'accesso utente viene concesso in due modi.User access is granted in two ways. Gli utenti possono accedere all'insieme di credenziali delle chiavi da un'applicazione oppure devono usare un'applicazione specifica (definita identità composta).Users can access Key Vault from any application, or they must use a specific application (referred to as compound identity).
  • Accesso solo dell'applicazione: l'applicazione viene eseguita come servizio daemon o processo in background.Application-only access: The application runs as a daemon service or background job. All'identità di applicazione viene concesso l'accesso all'insieme di credenziali delle chiavi.The application identity is granted access to the key vault.

Per entrambi i tipi di accesso, l'applicazione esegue l'autenticazione con Azure AD.For both types of access, the application authenticates with Azure AD. L'applicazione usa qualsiasi metodo di autenticazione supportato in base al tipo di applicazione.The application uses any supported authentication method based on the application type. L'applicazione acquisisce un token per una risorsa del piano per la concessione dell'accesso.The application acquires a token for a resource in the plane to grant access. La risorsa è un endpoint nel piano dati o di gestione, in base all'ambiente di Azure.The resource is an endpoint in the management or data plane, based on the Azure environment. L'applicazione usa il token e invia una richiesta API REST all'insieme di credenziali delle chiavi.The application uses the token and sends a REST API request to Key Vault. Per altre informazioni, vedere l'intero flusso di autenticazione.To learn more, review the whole authentication flow.

Il modello con un singolo meccanismo di autenticazione per entrambi i piani presenta alcuni vantaggi:The model of a single mechanism for authentication to both planes has several benefits:

  • Le organizzazioni possono controllare l'accesso a tutti gli insiemi di credenziali delle chiavi in modo centralizzato.Organizations can control access centrally to all key vaults in their organization.
  • Se un utente lascia l'organizzazione, perde immediatamente l'accesso a tutti gli insiemi di credenziali delle chiavi all'interno dell'organizzazione.If a user leaves, they instantly lose access to all key vaults in the organization.
  • Le organizzazioni possono personalizzare l'autenticazione tramite le opzioni disponibili in Azure AD, ad esempio abilitando l'autenticazione a più fattori per una maggiore sicurezza.Organizations can customize authentication by using the options in Azure AD, such as to enable multi-factor authentication for added security.

Endpoint delle risorseResource endpoints

Le applicazioni accedono ai piani tramite endpoint.Applications access the planes through endpoints. I controlli di accesso per i due piani funzionano in maniera indipendente.The access controls for the two planes work independently. Per concedere a un'applicazione l'accesso per l'uso delle chiavi in un insieme di credenziali delle chiavi, concedere l'accesso al piano dati usando i criteri di accesso dell'insieme di credenziali delle chiavi.To grant an application access to use keys in a key vault, you grant data plane access by using a Key Vault access policy. Per concedere a un utente l'accesso in lettura alle proprietà e ai tag dell'insieme di credenziali delle chiavi, ma non ai dati (chiavi, segreti o certificati), concedere l'accesso al piano di gestione con il controllo degli accessi in base al ruolo.To grant a user read access to Key Vault properties and tags, but not access to data (keys, secrets, or certificates), you grant management plane access with RBAC.

La tabella seguente illustra gli endpoint per il piano dati e di gestione.The following table shows the endpoints for the management and data planes.

Piano di accessoAccess plane Endpoint di accessoAccess endpoints OperazioniOperations Meccanismo di controllo di accessoAccess control mechanism
Piano di gestioneManagement plane Globale:Global:
management.azure.com:443management.azure.com:443

21Vianet per Azure Cina:Azure China 21Vianet:
management.chinacloudapi.cn:443management.chinacloudapi.cn:443

Azure per enti pubblici statunitensi:Azure US Government:
management.usgovcloudapi.net:443management.usgovcloudapi.net:443

Azure per la Germania:Azure Germany:
management.microsoftazure.de:443management.microsoftazure.de:443
Creare, leggere, aggiornare ed eliminare insiemi di credenziali delle chiaviCreate, read, update, and delete key vaults

Impostare i criteri di accesso dell'insieme di credenziali delle chiaviSet Key Vault access policies

Impostare tag per l'insieme di credenziali delle chiaviSet Key Vault tags
Controllo degli accessi in base al ruolo di Azure Resource ManagerAzure Resource Manager RBAC
Piano datiData plane Globale:Global:
<nome-insiemecredenziali>.vault.azure.net:443<vault-name>.vault.azure.net:443

21Vianet per Azure Cina:Azure China 21Vianet:
<nome-insiemecredenziali>.vault.azure.cn:443<vault-name>.vault.azure.cn:443

Azure per enti pubblici statunitensi:Azure US Government:
<nome-insiemecredenziali>.vault.usgovcloudapi.net:443<vault-name>.vault.usgovcloudapi.net:443

Azure per la Germania:Azure Germany:
<nome-insiemecredenziali>.vault.microsoftazure.de:443<vault-name>.vault.microsoftazure.de:443
Chiavi: decrittografare, crittografare,Keys: decrypt, encrypt,
annullare il wrapping, eseguire il wrapping, verificare, firmare,unwrap, wrap, verify, sign,
ottenere, elencare, aggiornare, creare,get, list, update, create,
importare, eliminare, eseguire il backup, ripristinareimport, delete, backup, restore

Segreti: ottenere, elencare, impostare, eliminareSecrets: get, list, set, delete
Criteri di accesso dell'insieme di credenziali delle chiaviKey Vault access policy

Piano di gestione e controllo degli accessi in base al ruoloManagement plane and RBAC

Nel piano di gestione si usa il controllo degli accessi in base al ruolo per autorizzare le operazioni che un chiamante può eseguire.In the management plane, you use RBAC(Role Based Access Control) to authorize the operations a caller can execute. Nel modello di controllo degli accessi in base al ruolo ogni sottoscrizione di Azure ha un'istanza di Azure AD.In the RBAC model, each Azure subscription has an instance of Azure AD. È possibile concedere l'accesso a utenti, gruppi e applicazioni da questa directory.You grant access to users, groups, and applications from this directory. Viene concesso l'accesso per gestire le risorse della sottoscrizione di Azure che usano il modello di distribuzione Azure Resource Manager.Access is granted to manage resources in the Azure subscription that use the Azure Resource Manager deployment model. Per concedere l'accesso, usare il portale di Azure, l'interfaccia della riga di comando di Azure, Azure PowerShell o le API REST di Azure Resource Manager.To grant access, use the Azure portal, the Azure CLI, Azure PowerShell, or the Azure Resource Manager REST APIs.

Creare un insieme di credenziali delle chiavi in un gruppo di risorse e gestire l'accesso usando Azure AD.You create a key vault in a resource group and manage access by using Azure AD. È possibile consentire a utenti o gruppi di gestire gli insiemi di credenziali delle chiavi in un gruppo di risorse.You grant users or groups the ability to manage the key vaults in a resource group. È possibile concedere l'accesso a un livello di ambito specifico assegnando i ruoli Controllo degli accessi in base al ruolo appropriati.You grant the access at a specific scope level by assigning appropriate RBAC roles. Per concedere l'accesso a un utente in modo che possa gestire insiemi di credenziali delle chiavi, assegnare all'utente un ruolo key vault Contributor predefinito in un ambito specifico.To grant access to a user to manage key vaults, you assign a predefined key vault Contributor role to the user at a specific scope. A un ruolo Controllo degli accessi in base al ruolo è possibile assegnare i livelli di ambiti seguenti:The following scopes levels can be assigned to an RBAC role:

  • Sottoscrizione Un ruolo Controllo degli accessi in base al ruolo assegnato a livello di sottoscrizione si applica a tutti i gruppi di risorse e a tutte le risorse in tale sottoscrizione.Subscription: An RBAC role assigned at the subscription level applies to all resource groups and resources within that subscription.
  • Gruppo di risorse: Un ruolo Controllo degli accessi in base al ruolo assegnato a livello di gruppo di risorse si applica a tutte le risorse di tale gruppo.Resource group: An RBAC role assigned at the resource group level applies to all resources in that resource group.
  • Risorsa specifica: Un ruolo Controllo degli accessi in base al ruolo assegnato per una risorsa specifica si applica a tale risorsa.Specific resource: An RBAC role assigned for a specific resource applies to that resource. In questo caso, la risorsa è un insieme di credenziali delle chiavi specifico.In this case, the resource is a specific key vault.

Ci sono diversi ruoli predefiniti.There are several predefined roles. Se un ruolo predefinito non soddisfa le specifiche esigenze, è possibile definire un ruolo personalizzato.If a predefined role doesn't fit your needs, you can define your own role. Per altre informazioni, vedere Controllo degli accessi in base al ruolo: ruoli predefiniti.For more information, see RBAC: Built-in roles.

Importante

Se un utente ha le autorizzazioni Contributor per un piano di gestione di un insieme di credenziali delle chiavi, l'utente può concedere a se stesso l'accesso al piano dati impostando criteri di accesso dell'insieme di credenziali delle chiavi.If a user has Contributor permissions to a key vault management plane, the user can grant themselves access to the data plane by setting a Key Vault access policy. È necessario controllare attentamente chi ha accesso al ruolo Contributor per gli insiemi di credenziali delle chiavi.You should tightly control who has Contributor role access to your key vaults. Assicurarsi che solo gli utenti autorizzati possano accedere e gestire gli insiemi di credenziali delle chiavi, le chiavi, i segreti e i certificati.Ensure that only authorized persons can access and manage your key vaults, keys, secrets, and certificates.

Piano dati e criteri di accessoData plane and access policies

L'accesso al piano dati viene concesso impostando i criteri di accesso di Key Vault per un insieme di credenziali delle chiavi.You grant data plane access by setting Key Vault access policies for a key vault. Per impostare i criteri di accesso, un utente, un gruppo o un'applicazione deve avere le autorizzazioni Contributor per il piano di gestione per l'insieme di credenziali delle chiavi.To set these access policies, a user, group, or application must have Contributor permissions for the management plane for that key vault.

È possibile concedere l'accesso a un utente, un gruppo o un'applicazione per eseguire operazioni specifiche relative a segreti o chiavi in un insieme di credenziali delle chiavi.You grant a user, group, or application access to execute specific operations for keys or secrets in a key vault. Key Vault supporta fino a 1.024 voci di criteri di accesso per un insieme di credenziali delle chiavi.Key Vault supports up to 1,024 access policy entries for a key vault. Per concedere a più utenti l'accesso al piano dati, creare un gruppo di sicurezza di Azure AD e aggiungere gli utenti a tale gruppo.To grant data plane access to several users, create an Azure AD security group and add users to that group.

I criteri di accesso dell'insieme di credenziali delle chiavi concedono autorizzazioni separate per chiavi, segreti e certificati.Key Vault access policies grant permissions separately to keys, secrets, and certificate. È possibile concedere a un utente l'accesso solo alle chiavi e non ai segreti.You can grant a user access only to keys and not to secrets. Le autorizzazioni di accesso per chiavi, segreti e certificati vengono definite a livello di insieme di credenziali.Access permissions for keys, secrets, and certificates are at the vault level. I criteri di accesso dell'insieme di credenziali delle chiavi non supportano le autorizzazioni granulari a livello di oggetto, ad esempio una chiave, un segreto o un certificato specifico.Key Vault access policies don't support granular, object-level permissions like a specific key, secret, or certificate. Per impostare i criteri di accesso per un insieme di credenziali delle chiavi, usare il portale di Azure, l'interfaccia della riga di comando di Azure, Azure PowerShell o le API REST di gestione di Key Vault.To set access policies for a key vault, use the Azure portal, the Azure CLI, Azure PowerShell, or the Key Vault Management REST APIs.

Importante

I criteri di accesso dell'insieme di credenziali delle chiavi si applicano a livello di insieme di credenziali.Key Vault access policies apply at the vault level. Quando a un utente viene concessa l'autorizzazione per creare ed eliminare chiavi, può eseguire tali operazioni su tutte le chiavi dell'insieme di credenziali.When a user is granted permission to create and delete keys, they can perform those operations on all keys in that key vault.

È possibile limitare l'accesso al piano dati usando gli endpoint servizio di rete virtuale per Azure Key Vault.You can restrict data plane access by using virtual network service endpoints for Azure Key Vault. È possibile configurare firewall e regole di rete virtuale per un ulteriore livello di sicurezza.You can configure firewalls and virtual network rules for an additional layer of security.

EsempioExample

In questo esempio si sviluppa un'applicazione che usa un certificato per SSL, il servizio Archiviazione di Azure per archiviare i dati e una chiave RSA a 2.048 bit per le operazioni di firma.In this example, we're developing an application that uses a certificate for SSL, Azure Storage to store data, and an RSA 2,048-bit key for sign operations. L'applicazione viene eseguita in una macchina virtuale di Azure (o un set di scalabilità di macchine virtuali).Our application runs in an Azure virtual machine (VM) (or a virtual machine scale set). È possibile usare un insieme di credenziali delle chiavi per archiviare i segreti dell'applicazione.We can use a key vault to store the application secrets. È possibile archiviare il certificato bootstrap usato dall'applicazione per l'autenticazione con Azure AD.We can store the bootstrap certificate that's used by the application to authenticate with Azure AD.

È necessario l'accesso alle chiavi e ai segreti seguenti:We need access to the following stored keys and secrets:

  • Certificato SSL: usato per SSL.SSL certificate: Used for SSL.
  • Chiave di archiviazione: usata per accedere all'account di archiviazione.Storage key: Used to access the Storage account.
  • Chiave RSA a 2.048 bit: usata per le operazioni di firma.RSA 2,048-bit key: Used for sign operations.
  • Certificato bootstrap: per eseguire l'autenticazione con Azure AD.Bootstrap certificate: Used to authenticate with Azure AD. Una volta concesso l'accesso, è possibile recuperare la chiave di archiviazione e usare la chiave RSA per la firma.After access is granted, we can fetch the storage key and use the RSA key for signing.

È necessario definire i ruoli seguenti per specificare chi può gestire, distribuire e controllare l'applicazione:We need to define the following roles to specify who can manage, deploy, and audit our application:

  • Team responsabile della sicurezza: personale IT che lavora nell'ufficio del responsabile della sicurezza o collaboratori analoghi.Security team: IT staff from the office of the CSO (Chief Security Officer) or similar contributors. Il team responsabile della sicurezza si occupa della salvaguardia di segreti.The security team is responsible for the proper safekeeping of secrets. I segreti possono includere certificati SSL, chiavi RSA usate per la firma, stringhe di connessione e chiavi degli account di archiviazione.The secrets can include SSL certificates, RSA keys for signing, connection strings, and storage account keys.
  • Sviluppatori e operatori: il personale che sviluppa l'applicazione e la distribuisce in Azure.Developers and operators: The staff who develop the application and deploy it in Azure. I membri di questo team non fanno parte del personale responsabile della sicurezza.The members of this team aren't part of the security staff. Non devono avere accesso ai dati sensibili, come i certificati SSL e le chiavi RSA.They shouldn't have access to sensitive data like SSL certificates and RSA keys. Solo l'applicazione da loro distribuita deve avere accesso ai dati sensibili.Only the application that they deploy should have access to sensitive data.
  • Revisori: questo ruolo è per i collaboratori che non sono membri del personale IT generico o di sviluppo.Auditors: This role is for contributors who aren't members of the development or general IT staff. Queste persone verificano l'uso e la gestione di certificati, chiavi e segreti per garantire la conformità agli standard di sicurezza.They review the use and maintenance of certificates, keys, and secrets to ensure compliance with security standards.

C'è un altro ruolo che non rientra nell'ambito dell'applicazione: l'amministratore della sottoscrizione (o del gruppo di risorse).There's another role that's outside the scope of our application: the subscription (or resource group) administrator. L'amministratore della sottoscrizione configura le autorizzazioni di accesso iniziali per il team responsabile della sicurezza.The subscription admin sets up initial access permissions for the security team. L'accesso al team responsabile della sicurezza viene concesso tramite un gruppo di risorse che contiene le risorse necessarie per l'applicazione.They grant access to the security team by using a resource group that has the resources required by the application.

È necessario autorizzare le operazioni seguenti per i ruoli:We need to authorize the following operations for our roles:

Team responsabile della sicurezzaSecurity team

  • Creare insiemi di credenziali delle chiavi.Create key vaults.
  • Attivare la registrazione per gli insiemi di credenziali delle chiavi.Turn on Key Vault logging.
  • Aggiungere chiavi e segreti.Add keys and secrets.
  • Creare i backup delle chiavi per il ripristino di emergenza.Create backups of keys for disaster recovery.
  • Impostare i criteri di accesso dell'insieme di credenziali delle chiavi per concedere a utenti e applicazioni le autorizzazioni per eseguire operazioni specifiche.Set Key Vault access policies to grant permissions to users and applications for specific operations.
  • Aggiornare periodicamente chiavi e segreti.Roll the keys and secrets periodically.

Sviluppatori e operatoriDevelopers and operators

  • Ottenere riferimenti per i certificati bootstrap e SSL (identificazioni personali), la chiave di archiviazione (URI del segreto) e la chiave RSA (URI della chiave) per la firma dal team responsabile della sicurezza.Get references from the security team for the bootstrap and SSL certificates (thumbprints), storage key (secret URI), and RSA key (key URI) for signing.
  • Sviluppare e distribuire l'applicazione per l'accesso a chiavi e segreti a livello di codice.Develop and deploy the application to access keys and secrets programmatically.

RevisoriAuditors

  • Esaminare i log di Key Vault per verificare che chiavi e segreti siano usati in modo appropriato e conformemente agli standard di sicurezza dei dati.Review the Key Vault logs to confirm proper use of keys and secrets, and compliance with data security standards.

Nella tabella seguente sono riepilogate le autorizzazioni di accesso per i ruoli e l'applicazione.The following table summarizes the access permissions for our roles and application.

RoleRole Autorizzazioni del piano di gestioneManagement plane permissions Autorizzazioni del piano datiData plane permissions
Team responsabile della sicurezzaSecurity team Collaboratore di Key VaultKey Vault Contributor Chiavi: backup, create, delete, get, import, list, restoreKeys: backup, create, delete, get, import, list, restore
Segreti: tutte le operazioniSecrets: all operations
Sviluppatori e operatoriDevelopers and operators Autorizzazione di distribuzione dell'insieme di credenziali delle chiaviKey Vault deploy permission

Nota: Questa autorizzazione consente alle macchine virtuali distribuite di recuperare i segreti da un insieme di credenziali delle chiavi.Note: This permission allows deployed VMs to fetch secrets from a key vault.
NessunaNone
RevisoriAuditors NessunaNone Chiavi: listKeys: list
Segreti: listSecrets: list

Nota: Questa autorizzazione consente ai revisori di esaminare gli attributi (tag e date di attivazione e scadenza) per le chiavi e i segreti che non vengono riportati nei log.Note: This permission enables auditors to inspect attributes (tags, activation dates, expiration dates) for keys and secrets not emitted in the logs.
ApplicazioneApplication NessunaNone Chiavi: signKeys: sign
Segreti: getSecrets: get

Oltre alle autorizzazioni per l'insieme di credenziali delle chiavi, i tre i ruoli dei team devono poter accedere ad altre risorse.The three team roles need access to other resources along with Key Vault permissions. Per distribuire le macchine virtuali (o la funzionalità App Web di Servizio app di Azure), sviluppatori e operatori necessitano dell'accesso Contributor a tali tipi di risorse.To deploy VMs (or the Web Apps feature of Azure App Service), developers and operators need Contributor access to those resource types. I revisori necessitano dell'accesso in lettura all'account di archiviazione in cui vengono archiviati i log dell'insieme di credenziali delle chiavi.Auditors need read access to the Storage account where the Key Vault logs are stored.

Per altre informazioni su come distribuire certificati, chiavi di accesso e segreti a livello di codice, vedere queste risorse:For more information about how to deploy certificates, access keys, and secrets programmatically, see these resources:

È possibile concedere la maggior parte delle autorizzazioni di accesso tramite il portale di Azure.You can grant most of the access permissions by using the Azure portal. Per concedere autorizzazioni granulari, è possibile usare Azure PowerShell o l'interfaccia della riga di comando di Azure.To grant granular permissions, you can use Azure PowerShell or the Azure CLI.

I frammenti di codice di PowerShell in questa sezione sono creati basandosi sui presupposti seguenti:The PowerShell snippets in this section are built with the following assumptions:

  • L'amministratore di Azure AD ha creato i gruppi di sicurezza per rappresentare i tre ruoli: Contoso Security Team, Contoso App DevOps e Contoso App Auditors.The Azure AD administrator has created security groups to represent the three roles: Contoso Security Team, Contoso App DevOps, and Contoso App Auditors. L'amministratore ha aggiunto gli utenti ai rispettivi gruppi.The admin has added users to their respective groups.
  • Tutte le risorse si trovano nel gruppo di risorse ContosoAppRG.All resources are located in the ContosoAppRG resource group.
  • I log dell'insieme di credenziali delle chiavi sono archiviati nell'account di archiviazione contosologstorage.The Key Vault logs are stored in the contosologstorage storage account.
  • L'insieme di credenziali delle chiavi ContosoKeyVault e l'account di archiviazione contosologstorage si trovano nello stesso percorso di Azure.The ContosoKeyVault key vault and the contosologstorage storage account are in the same Azure location.

L'amministratore della sottoscrizione assegna i ruoli key vault Contributor e User Access Administrator al team responsabile della sicurezza.The subscription admin assigns the key vault Contributor and User Access Administrator roles to the security team. Questi ruoli permettono al team responsabile della sicurezza di gestire l'accesso ad altre risorse e insiemi di credenziali delle chiavi, entrambi nel gruppo di risorse ContosoAppRG.These roles allow the security team to manage access to other resources and key vaults, both of which in the ContosoAppRG resource group.

New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -RoleDefinitionName "key vault Contributor" -ResourceGroupName ContosoAppRG
New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -RoleDefinitionName "User Access Administrator" -ResourceGroupName ContosoAppRG

Il team responsabile della sicurezza crea un insieme di credenziali delle chiavi e configura la registrazione e le autorizzazioni di accesso.The security team creates a key vault and sets up logging and access permissions. Per informazioni dettagliate sulle autorizzazioni dei criteri di accesso dell'insieme di credenziali delle chiavi, vedere Informazioni su chiavi, segreti e certificati di Azure Key Vault.For details about Key Vault access policy permissions, see About Azure Key Vault keys, secrets, and certificates.

# Create a key vault and enable logging
$sa = Get-AzStorageAccount -ResourceGroup ContosoAppRG -Name contosologstorage
$kv = New-AzKeyVault -Name ContosoKeyVault -ResourceGroup ContosoAppRG -SKU premium -Location 'westus' -EnabledForDeployment
Set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -Enabled $true -Category AuditEvent

# Set up data plane permissions for the Contoso Security Team role
Set-AzKeyVaultAccessPolicy -VaultName ContosoKeyVault -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -PermissionsToKeys backup,create,delete,get,import,list,restore -PermissionsToSecrets get,list,set,delete,backup,restore,recover,purge

# Set up management plane permissions for the Contoso App DevOps role
# Create the new role from an existing role
$devopsrole = Get-AzRoleDefinition -Name "Virtual Machine Contributor"
$devopsrole.Id = $null
$devopsrole.Name = "Contoso App DevOps"
$devopsrole.Description = "Can deploy VMs that need secrets from a key vault"
$devopsrole.AssignableScopes = @("/subscriptions/<SUBSCRIPTION-GUID>")

# Add permissions for the Contoso App DevOps role so members can deploy VMs with secrets deployed from key vaults
$devopsrole.Actions.Add("Microsoft.KeyVault/vaults/deploy/action")
New-AzRoleDefinition -Role $devopsrole

# Assign the new role to the Contoso App DevOps security group
New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso App Devops')[0].Id -RoleDefinitionName "Contoso App Devops" -ResourceGroupName ContosoAppRG

# Set up data plane permissions for the Contoso App Auditors role
Set-AzKeyVaultAccessPolicy -VaultName ContosoKeyVault -ObjectId (Get-AzADGroup -SearchString 'Contoso App Auditors')[0].Id -PermissionsToKeys list -PermissionsToSecrets list

I ruoli personalizzati definiti possono essere assegnati solo alla sottoscrizione in cui viene creato il gruppo di risorse ContosoAppRG.Our defined custom roles are assignable only to the subscription where the ContosoAppRG resource group is created. Per usare un ruolo personalizzato per altri progetti in altre sottoscrizioni, aggiungere altre sottoscrizioni all'ambito per il ruolo.To use a custom role for other projects in other subscriptions, add other subscriptions to the scope for the role.

Per il personale DevOps, l'assegnazione del ruolo personalizzato per l'autorizzazione deploy/action per l'insieme di credenziali delle chiavi ha come ambito il gruppo di risorse.For our DevOps staff, the custom role assignment for the key vault deploy/action permission is scoped to the resource group. Solo le macchine virtuali create nel gruppo di risorse ContosoAppRG possono accedere ai segreti (certificati SSL e bootstrap).Only VMs created in the ContosoAppRG resource group are allowed access to the secrets (SSL and bootstrap certificates). Le macchine virtuali create in altri gruppi di risorse da un membro del team DevOps non possono accedere a questi segreti, anche se dispongono dei relativi URI.VMs created in other resource groups by a DevOps member can't access these secrets, even if the VM has the secret URIs.

Questo esempio illustra uno scenario semplice.Our example describes a simple scenario. Gli scenari reali possono essere più complessi.Real-life scenarios can be more complex. È possibile modificare le autorizzazioni per l'insieme di credenziali delle chiavi in base alle esigenze.You can adjust permissions to your key vault based on your needs. In questo esempio si presuppone che il team responsabile della sicurezza fornisca i riferimenti a chiavi e segreti (URI e identificazioni personali) usati dal personale DevOps nelle applicazioni.We assumed the security team provides the key and secret references (URIs and thumbprints), which are used by the DevOps staff in their applications. Sviluppatori e operatori non necessitano di alcun accesso al piano dati.Developers and operators don't require any data plane access. In questo articolo è stato analizzato in particolare come proteggere l'insieme di credenziali delle chiavi.We focused on how to secure your key vault. Tenere presenti considerazioni simili per la protezione di macchine virtuali, account di archiviazione e altre risorse di Azure.Give similar consideration when you secure your VMs, storage accounts, and other Azure resources.

Nota

Questo esempio mostra come l'accesso all'insieme di credenziali delle chiavi viene bloccato nell'ambiente di produzione.This example shows how Key Vault access is locked down in production. Gli sviluppatori devono avere una sottoscrizione o un gruppo di risorse personale su cui dispongono di autorizzazioni complete per gestire gli insiemi di credenziali delle chiavi, le macchine virtuali e l'account di archiviazione in cui sviluppano l'applicazione.Developers should have their own subscription or resource group with full permissions to manage their vaults, VMs, and the storage account where they develop the application.

È consigliabile proteggere ulteriormente l'accesso all'insieme di credenziali delle chiavi mediante la configurazione di firewall e reti virtuali di Key Vault.We recommend that you set up additional secure access to your key vault by configuring Key Vault firewalls and virtual networks.

RisorseResources

Passaggi successiviNext steps

Configurare firewall e reti virtuali di Key Vault.Configure Key Vault firewalls and virtual networks.

Per un'esercitazione introduttiva per gli amministratori, vedere Cos'è Azure Key Vault?.For a getting-started tutorial for an administrator, see What is Azure Key Vault?.

Per altre informazioni sulla registrazione dell'utilizzo per l'insieme di credenziali delle chiavi, vedere Registrazione dell'insieme di credenziali delle chiavi di Azure.For more information about usage logging for Key Vault, see Azure Key Vault logging.

Per altre informazioni sull'uso di chiavi e segreti con Azure Key Vault, vedere Informazioni su chiavi e segreti.For more information about using keys and secrets with Azure Key Vault, see About keys and secrets.

In caso di domande su Key Vault, visitare i forum.If you have questions about Key Vault, visit the forums.