Fornire un'autenticazione di Key Vault con un criterio di controllo di accessoProvide Key Vault authentication with an access control policy

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.

Il modo più semplice per autenticare un'applicazione basata sul cloud in Key Vault consiste nell'usare un'identità gestita. Per informazioni dettagliate, vedere Usare un'identità gestita del Servizio app di Azure per accedere ad Azure Key Vault.The simplest way to authenticate a cloud-based application to Key Vault is with a managed identity; see Use an App Service managed identity to access Azure Key Vault for details. Se si crea un'applicazione locale, si sviluppa in locale o se non è possibile usare un'identità gestita per altri motivi, si può provare a registrare manualmente un'entità servizio e fornire l'accesso all'insieme di credenziali delle chiavi usando un criterio di controllo di accesso.If you are creating an on-prem application, doing local development, or otherwise unable to use a managed identity, you can instead register a service principal manually and provide access to your key vault using an access control policy.

L'insieme di credenziali delle chiavi supporta fino a 1024 voci di criteri di accesso, con ogni voce che concede un set di autorizzazioni distinte a un'"entità di sicurezza": Ad esempio, questa è la modalità usata dall'app console in Avvio rapido: Libreria client di Azure Key Vault per .NET per accedere all'insieme di credenziali delle chiavi.Key vault supports up to 1024 access policy entries, with each entry granting a distinct set of permissions to a "principal": For example, this is how the console app in the Azure Key Vault client library for .NET quickstart accesses the key vault.

Per i dettagli completi sul controllo di accesso di Key Vault, vedere Sicurezza di Azure Key Vault: Gestione delle identità e dell'accesso.For full details on Key Vault access control, see Azure Key Vault security: Identity and access management. Per informazioni dettagliate sul controllo di accesso, vedere:For full details on access control, see:

Usare Azure Cloud ShellUse Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Per avviare Azure Cloud Shell:To start Azure Cloud Shell:

OpzioneOption Esempio/CollegamentoExample/Link
Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Avviare Cloud Shell.Start Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.Select the Copy button on a code block to copy the code.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Premere INVIO per eseguire il codice.Select Enter to run the code.

PrerequisitiPrerequisites

Concedere l'accesso all'insieme di credenziali delle chiaviGrant access to your key vault

Ogni voce dei criteri di accesso per l'insieme di credenziali delle chiavi concede un set distinto di autorizzazioni a un'entità di sicurezza:Each key vault access policy entry grants a distinct set of permissions to a principal:

  • Un'applicazione Se l'applicazione è basata sul cloud, è necessario Usare un'identità gestita per accedere ad Azure Key Vault, se possibileAn application If the application is cloud-based, you should instead Use an managed identity to access Azure Key Vault, if possible
  • Un gruppo di Azure AD Sebbene l'insieme di credenziali delle chiavi supporti fino a 1024 voci dei criteri di accesso, è possibile aggiungere più applicazioni e utenti a un singolo gruppo di Azure AD e quindi aggiungere il gruppo come singola voce ai criteri di controllo di accesso.An Azure AD group Although key vault only supports 1024 access policy entries, you can add multiple applications and users to a single Azure AD group, and then add that group as a single entry to your access control policy.
  • Un utente È sconsigliabile concedere agli utenti l'accesso diretto a un insieme di credenziali delle chiavi.A User Giving users direct access to a key vault is discouraged. È opportuno aggiungere gli utenti a un gruppo di Azure AD, a cui viene a sua volta concesso l'accesso all'insieme di credenziali delle chiavi.Ideally, users should be added to an Azure AD group, which is in turn given access to the key vault. Vedere Sicurezza di Azure Key Vault: Gestione delle identità e dell'accesso.See Azure Key Vault security: Identity and access management.

Ottenere l'objectIDGet the objectID

Per concedere l'accesso all'insieme di credenziali delle chiavi a un'applicazione, a un gruppo di Azure AD o a un utente, è prima necessario ottenere il relativo objectId.To give an application, Azure AD group, or user access to your key vault, you must first obtain its objectId.

APPLICAZIONIApplications

L'objectId per un'applicazione corrisponde all'entità servizio ad essa associata.The objectId for an applications corresponds with its associated service principal. Per informazioni dettagliate sulle entità servizio,For full details on service principals. vedere Oggetti applicazione e oggetti entità servizio in Azure Active Directory.see Application and service principal objects in Azure Active Directory.

Esistono due modi per ottenere un objectId per un'applicazione.There are two ways to obtain an objectId for an application. Il primo consiste nel registrare l'applicazione con Azure Active Directory.The first is to register your application with Azure Active Directory. A tale scopo, seguire la procedura illustrata nella guida di avvio rapido Registrare un'applicazione con Microsoft Identity Platform.To do so, follow the steps in the quickstart Register an application with the Microsoft identity platform. Al termine della registrazione, l'objectId verrà mostrato come "ID applicazione (client)".When registration is complete, the objectID will be listed as the "Application (client) ID".

Il secondo modo prevede la creazione di un'entità servizio in una finestra del terminale.The second is to create a service principal in a terminal window. Con l'interfaccia della riga di comando di Azure usare il comando az ad sp create-for-rbac e fornire un nome univoco dell'entità servizio nel flag -n nel formato "http://<nome-univoco-entità-servizio>".With the Azure CLI, use the az ad sp create-for-rbac command, and provide a unique service principal name to the -n flag in the format "http://<my-unique-service-principal-name>".

az ad sp create-for-rbac -n "http://<my-unique-service-principal-name"

L'objectId verrà mostrato nell'output come clientID.The objectId will be listed in the output as clientID.

Con Azure PowerShell, usare il cmdlet New-AzADServicePrincipal.With Azure PowerShell, use the New-AzADServicePrincipal cmdlet.

New-AzADServicePrincipal -DisplayName <my-unique-service-principal-name>

L'objectId verrà mostrato nell'output come Id (non ApplicationId).The objectId will be listed in the output as Id (not ApplicationId).

Gruppi di Azure ADAzure AD Groups

È possibile aggiungere più applicazioni e utenti a un gruppo di Azure AD e quindi concedere al gruppo l'accesso all'insieme di credenziali delle chiavi.You can add multiple applications and users to an Azure AD group, and then give the group access to your key vault. Per informazioni dettagliate, vedere la sezione Creazione e aggiunta di membri a un gruppo di Azure AD più avanti.For more details, see the Creating and adding members to an Azure AD group section, below.

Per trovare l'objectId di un gruppo di Azure AD con l'interfaccia della riga di comando di Azure, usare il comando az ad group list.To find the objectId of an Azure AD group with the Azure CLI, use the az ad group list command. Poiché il numero di gruppi all'interno dell'organizzazione potrebbe essere elevato, specificare anche una stringa di ricerca nel parametro --display-name.Because of the large number of groups that may be in your organization, you should also provide a search string to the --display-name parameter.

az ad group list --display-name <search-string>

L'objectId verrà restituito nel codice JSON:The objectId will be returned in the JSON:

    "objectId": "48b21bfb-74d6-48d2-868f-ff9eeaf38a64",
    "objectType": "Group",
    "odata.type": "Microsoft.DirectoryServices.Group",

Per trovare l'objectId di un gruppo di Azure AD con Azure PowerShell, usare il cmdlet Get-AzADGroup.To find the objectId of an Azure AD group with Azure PowerShell, use the Get-AzADGroup cmdlet. Poiché il numero di gruppi all'interno dell'organizzazione potrebbe essere elevato, è consigliabile specificare anche una stringa di ricerca nel parametro -SearchString.Because of the large number of groups that may be in your organization, you will probably wish to also provide a search string to the -SearchString parameter.

Get-AzADGroup -SearchString <search-string>

Nell'output l'objectId sarà visualizzato come Id:In the output, the objectId is listed as Id:

...
Id                    : 1cef38c4-388c-45a9-b5ae-3d88375e166a
...

UtentiUsers

È anche possibile aggiungere un singolo utente ai criteri di controllo di accesso dell'insieme di credenziali delle chiavi.You can also add an individual user to an key vault's access control policy. Questa procedura è sconsigliata.We do not recommend this. È opportuno aggiungere gli utenti a un gruppo di Azure AD e quindi aggiungere il gruppo ai criteri.We instead encourage you to add users to an Azure AD group, and add the group on the policies.

Tuttavia, se si vuole trovare un utente con l'interfaccia della riga di comando di Azure, usare il comando az ad user show, passando l'indirizzo di posta elettronica dell'utente al parametro --id.If you nonetheless wish to find a user with the Azure CLI, use the az ad user show command, passing the users email address to the --id parameter.

az ad user show --id <email-address-of-user>

L'objectId dell'utente verrà restituito nell'output:The user's objectId will be returned in the output:

  ...
  "objectId": "f76a2a6f-3b6d-4735-9abd-14dccbf70fd9",
  "objectType": "User",
  ...

Per trovare un utente con Azure PowerShell, usare il cmdlet Get-AzADUser, passando l'indirizzo di posta elettronica dell'utente al parametro -UserPrincipalName.To find a user with Azure PowerShell, use the Get-AzADUser cmdlet, passing the users email address to the -UserPrincipalName parameter.

 Get-AzAdUser -UserPrincipalName <email-address-of-user>

L'objectId dell'utente verrà restituito nell'output come Id.The user's objectId will be returned in the output as Id.

...
Id                : f76a2a6f-3b6d-4735-9abd-14dccbf70fd9
Type              :

Concedere all'entità di sicurezza l'accesso all'insieme di credenziali delle chiaviGive the principal access to your key vault

Ora che si dispone dell'objectId dell'entità di sicurezza, è possibile creare un criterio di accesso per l'insieme di credenziali delle chiavi al fine di concedere all'entità le autorizzazioni di recupero, elenco, impostazione ed eliminazione per chiavi e segreti e le eventuali autorizzazioni aggiuntive desiderate.Now that you have an objectID of your principal, you can create an access policy for your key vault that gives it get, list, set, and delete permissions for both keys and secrets, plus any additional permissions you wish.

Con l'interfaccia della riga di comando di Azure, passare l'objectId al comando az keyvault set-policy.With the Azure CLI, this is done by passing the objectId to the az keyvault set-policy command.

az keyvault set-policy -n <your-unique-keyvault-name> --spn <ApplicationID-of-your-service-principal> --secret-permissions get list set delete --key-permissions create decrypt delete encrypt get list unwrapKey wrapKey

Con Azure PowerShell, passare l'objectId al cmdlet Set-AzKeyVaultAccessPolicy.With Azure PowerShell, this is done by passing the objectId to the Set-AzKeyVaultAccessPolicy cmdlet.

Set-AzKeyVaultAccessPolicy –VaultName <your-key-vault-name> -PermissionsToKeys create,decrypt,delete,encrypt,get,list,unwrapKey,wrapKey -PermissionsToSecrets get,list,set,delete -ObjectId <Id>

Creazione e aggiunta di membri a un gruppo di Azure ADCreating and adding members to an Azure AD group

È possibile creare un gruppo di Azure AD, aggiungere applicazioni e utenti al gruppo e quindi concedere al gruppo l'accesso all'insieme di credenziali delle chiavi.You can create an Azure AD group, add applications and users to the group, and give the group access to your key vault. Questo consente di aggiungere a un insieme di credenziali delle chiavi più applicazioni come una singola voce di criterio di accesso eliminando così la necessità di concedere agli utenti l'accesso diretto all'insieme di credenziali delle chiavi (procedura sconsigliata).This allows you to add a number of applications to a key vault as a single access policy entry, and eliminates the need to give users direct access to your key vault (which we discourage). Per informazioni dettagliate, vedere Gestire l'accesso ad app e risorse tramite i gruppi di Azure Active Directory.For more details, see Manage app and resource access using Azure Active Directory groups.

Prerequisiti aggiuntiviAdditional prerequisites

Oltre ai prerequisiti precedenti, saranno necessarie le autorizzazioni per la creazione/modifica dei gruppi nel tenant di Azure Active Directory.In addition to the prerequisites above, you will need permissions to create/edit groups in your Azure Active Directory tenant. Se non si dispone delle autorizzazioni, può essere necessario contattare l'amministratore di Azure Active Directory.If you don't have permissions, you may need to contact your Azure Active Directory administrator.

Se si intende usare PowerShell, sarà inoltre necessario il modulo Azure AD PowerShellIf you intend to use PowerShell, you will also need the Azure AD PowerShell module

Creare un gruppo di Azure Active DirectoryCreate an Azure Active Directory group

Creare un nuovo gruppo di Azure Active Directory usando il comando az ad group create dell'interfaccia della riga di comando di Azure o il cmdlet New-AzureADGroup di Azure PowerShell.Create a new Azure Active Directory group using the Azure CLI az ad group create command, or the Azure PowerShell New-AzureADGroup cmdlet.

az ad group create --display-name <your-group-display-name> --mail-nickname <your-group-mail-nickname>
New-AzADGroup -DisplayName <your-group-display-name> -MailNickName <your-group-mail-nickname>

In entrambi i casi, prendere nota del GroupId dei gruppi appena creati, in quanto sarà necessario per le procedure successive.In either case, make note on the newly created groups GroupId, as you will need it for the steps below.

Individuare gli objectID di applicazioni e utentiFind the objectIds of your applications and users

È possibile trovare gli objectID delle applicazioni usando l'interfaccia della riga di comando di Azure con il comando az ad sp list e il parametro --show-mine.You can find the objectIds of your applications using the Azure CLI with the az ad sp list command, with the --show-mine parameter.

az ad sp list --show-mine

È anche possibile trovare gli objectID delle applicazioni usando Azure PowerShell con il cmdlet Get-AzADServicePrincipal, passando una stringa di ricerca al parametro -SearchString.Find the objectIds of your applications using Azure PowerShell with the Get-AzADServicePrincipal cmdlet, passing a search string to the -SearchString parameter.

Get-AzADServicePrincipal -SearchString <search-string>

Per trovare gli objectID degli utenti, seguire la procedura illustrata nella sezione Utenti precedente.To find the objectIds of your Users, follow the steps in the Users section, above.

Aggiungere le applicazioni e gli utenti al gruppoAdd your applications and users to the group

A questo punto, aggiungere gli objectID al gruppo di Azure AD appena creato.Now, add the objectIds to your newly created Azure AD group.

Con l'interfaccia della riga di comando di Azure, usare il comando az ad group member add, passando l'elemento objectId al parametro --member-id.With the Azure CLI, use the az ad group member add, passing the objectId to the --member-id parameter.

az ad group member add -g <groupId> --member-id <objectId>

Con Azure PowerShell, usare il cmdlet Add-AzADGroupMember, passando l'elemento objectId al parametro -MemberObjectId.With Azure PowerShell, use the Add-AzADGroupMember cmdlet, passing the objectId to the -MemberObjectId parameter.

Add-AzADGroupMember -TargetGroupObjectId <groupId> -MemberObjectId <objectId> 

Concedere al gruppo di Azure AD l'accesso all'insieme di credenziali delle chiaviGive the AD group access to your key vault

Infine, concedere al gruppo di Azure AD le autorizzazioni per l'insieme di credenziali delle chiavi usando il comando az keyvault set-policy dell'interfaccia della riga di comando di Azure o il cmdlet Set-AzKeyVaultAccessPolicy di Azure PowerShell.Lastly, give the AD group permissions to your key vault using the Azure CLI az keyvault set-policy command, or the Azure PowerShell Set-AzKeyVaultAccessPolicy cmdlet. Per gli esempi, vedere la sezione Concedere all'applicazione, al gruppo di Azure AD o all'utente l'accesso all'insieme di credenziali delle chiavi precedente.For examples, see the Give the application, Azure AD group, or user access to your key vault section, above.

L'applicazione necessita anche che sia assegnato almeno un ruolo di gestione delle identità e degli accessi (IAM) all'insieme di credenziali delle chiavi.The application also needs at least one Identity and Access Management (IAM) role assigned to the key vault. In caso contrario, non potrà eseguire l'accesso e l'accesso alla sottoscrizione non riuscirà a causa di diritti insufficienti.Otherwise it will not be able to login and will fail with insufficient rights to access the subscription.

Avviso

I gruppi di Azure AD con le identità gestite possono richiedere fino a 8 ore per aggiornare il token e diventare effettivi.Azure AD Groups with Managed Identities may require up to 8hr to refresh token and become effective.

Passaggi successiviNext steps