Usare Azure PowerShell per creare un'entità servizio per accedere alle risorseUse Azure PowerShell to create a service principal to access resources

Quando si ha un'app o uno script che deve accedere alle risorse, è possibile configurare un'identità per l'app ed eseguirne l'autenticazione con credenziali specifiche.When you have an app or script that needs to access resources, you can set up an identity for the app and authenticate the app with its own credentials. Questa identità è nota come entità servizio.This identity is known as a service principal. Questo approccio consente di:This approach enables you to:

  • Assegnare all'identità dell'app autorizzazioni diverse rispetto a quelle dell'utente.Assign permissions to the app identity that are different than your own permissions. Tali autorizzazioni sono in genere limitate alle specifiche operazioni che devono essere eseguite dall'app.Typically, these permissions are restricted to exactly what the app needs to do.
  • Usare un certificato per l'autenticazione in caso di esecuzione di uno script automatico.Use a certificate for authentication when executing an unattended script.

Questo argomento illustra come usare Azure PowerShell per impostare tutte le informazioni necessarie a un'applicazione per l'esecuzione con credenziali e identità proprie.This topic shows you how to use Azure PowerShell to set up everything you need for an application to run under its own credentials and identity.

Autorizzazioni necessarieRequired permissions

Per completare questo argomento è necessario avere autorizzazioni sufficienti sia nell'istanza di Azure Active Directory che nella sottoscrizione di Azure.To complete this topic, you must have sufficient permissions in both your Azure Active Directory and your Azure subscription. In particolare, è necessario poter creare un'app in Azure Active Directory e assegnare l'entità servizio a un ruolo.Specifically, you must be able to create an app in the Azure Active Directory, and assign the service principal to a role.

Il modo più semplice per verificare se l'account dispone delle autorizzazioni appropriate è tramite il portale.The easiest way to check whether your account has adequate permissions is through the portal. Vedere Controllare le autorizzazioni necessarie.See Check required permission.

A questo punto, procedere a una sezione per l'autenticazione con:Now, proceed to a section for authenticating with:

Comandi di PowerShellPowerShell commands

Per configurare un'entità servizio, usare:To set up a service principal, you use:

ComandoCommand DescrizioneDescription
New-AzureRmADServicePrincipalNew-AzureRmADServicePrincipal Crea un'entità servizio di Azure Active DirectoryCreates an Azure Active Directory service principal
New-AzureRmRoleAssignmentNew-AzureRmRoleAssignment Assegna il ruolo specificato del controllo degli accessi in base al ruolo all'entità specificata nell'ambito specificato.Assigns the specified RBAC role to the specified principal, at the specified scope.

Creare un'entità servizio con passwordCreate service principal with password

Per creare un'entità servizio con il ruolo Collaboratore per la sottoscrizione, usare:To create a service principal with the Contributor role for your subscription, use:

Login-AzureRmAccount
$password = convertto-securestring {provide-password} -asplaintext -force
$sp = New-AzureRmADServicePrincipal -DisplayName exampleapp -Password $password
Sleep 20
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $sp.ApplicationId

L'esempio viene sospeso per 20 secondi per consentire la propagazione della nuova entità servizio in Azure Active Directory.The example sleeps for 20 seconds to allow some time for the new service principal to propagate throughout Azure Active Directory. Se la durata dell'attesa dello script non è sufficiente, viene visualizzato un errore simile al seguente: "PrincipalNotFound: L'entità {ID} non esiste nella directory".If your script does not wait long enough, you see an error stating: "PrincipalNotFound: Principal {ID} does not exist in the directory."

Lo script seguente consente di specificare un ambito diverso dalla sottoscrizione predefinita e ritenta l'assegnazione del ruolo, se si verifica un errore:The following script enables you to specify a scope other than the default subscription, and retries the role assignment if an error occurs:

Param (

 # Use to set scope to resource group. If no value is provided, scope is set to subscription.
 [Parameter(Mandatory=$false)]
 [String] $ResourceGroup,

 # Use to set subscription. If no value is provided, default subscription is used. 
 [Parameter(Mandatory=$false)]
 [String] $SubscriptionId,

 [Parameter(Mandatory=$true)]
 [String] $ApplicationDisplayName,

 [Parameter(Mandatory=$true)]
 [String] $Password
)

 Login-AzureRmAccount
 Import-Module AzureRM.Resources

 if ($SubscriptionId -eq "") 
 {
    $SubscriptionId = (Get-AzureRmContext).Subscription.Id
 }
 else
 {
    Set-AzureRmContext -SubscriptionId $SubscriptionId
 }

 if ($ResourceGroup -eq "")
 {
    $Scope = "/subscriptions/" + $SubscriptionId
 }
 else
 {
    $Scope = (Get-AzureRmResourceGroup -Name $ResourceGroup -ErrorAction Stop).ResourceId
 }


 # Create Service Principal for the AD app
 $ServicePrincipal = New-AzureRMADServicePrincipal -DisplayName $ApplicationDisplayName -Password $Password
 Get-AzureRmADServicePrincipal -ObjectId $ServicePrincipal.Id 

 $NewRole = $null
 $Retries = 0;
 While ($NewRole -eq $null -and $Retries -le 6)
 {
    # Sleep here for a few seconds to allow the service principal application to become active (should only take a couple of seconds normally)
    Sleep 15
    New-AzureRMRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $ServicePrincipal.ApplicationId -Scope $Scope | Write-Verbose -ErrorAction SilentlyContinue
    $NewRole = Get-AzureRMRoleAssignment -ObjectId $ServicePrincipal.Id -ErrorAction SilentlyContinue
    $Retries++;
 }

Alcuni elementi da considerare per lo script:A few items to note about the script:

  • Per concedere l'accesso all'identità alla sottoscrizione predefinita, non è necessario specificare i parametri ResourceGroup o SubscriptionId.To grant the identity access to the default subscription, you do not need to provide either ResourceGroup or SubscriptionId parameters.
  • Specificare il parametro ResourceGroup solo quando si vuole limitare l'ambito dell'assegnazione di ruolo a un gruppo di risorse.Specify the ResourceGroup parameter only when you want to limit the scope of the role assignment to a resource group.
  • In questo esempio viene aggiunta l'entità servizio al ruolo Collaboratore.In this example, you add the service principal to the Contributor role. Per gli altri ruoli, vedere Controllo degli accessi in base al ruolo: ruoli predefiniti.For other roles, see RBAC: Built-in roles.
  • Lo script viene sospeso per 15 secondi per consentire la propagazione della nuova entità servizio in Azure Active Directory.The script sleeps for 15 seconds to allow some time for the new service principal to propagate throughout Azure Active Directory. Se la durata dell'attesa dello script non è sufficiente, viene visualizzato un errore simile al seguente: "PrincipalNotFound: L'entità {ID} non esiste nella directory".If your script does not wait long enough, you see an error stating: "PrincipalNotFound: Principal {ID} does not exist in the directory."
  • Se è necessario concedere l'accesso all'entità servizio a più sottoscrizioni o gruppi di risorse, eseguire il cmdlet New-AzureRMRoleAssignment con ambiti diversi.If you need to grant the service principal access to more subscriptions or resource groups, run the New-AzureRMRoleAssignment cmdlet again with different scopes.

Fornire le credenziali tramite PowerShellProvide credentials through PowerShell

A questo punto è necessario accedere come applicazione per eseguire operazioni.Now, you need to log in as the application to perform operations. Per il nome utente, usare il valore ApplicationId creato per l'applicazione.For the user name, use the ApplicationId that you created for the application. Per la password, usare quella specificata durante la creazione dell'account.For the password, use the one you specified when creating the account.

$creds = Get-Credential
Login-AzureRmAccount -Credential $creds -ServicePrincipal -TenantId {tenant-ID}

Poiché l'ID tenant non è sensibile, è possibile incorporarlo direttamente nello script.The tenant ID is not sensitive, so you can embed it directly in your script. Se è necessario recuperare l'ID tenant, usare:If you need to retrieve the tenant ID, use:

(Get-AzureRmSubscription -SubscriptionName "Contoso Default").TenantId

Creare un'entità servizio con certificato autofirmatoCreate service principal with self-signed certificate

Per creare un'entità servizio con un certificato autofirmato e il ruolo Collaboratore per la sottoscrizione, usare:To create a service principal with a self-signed certificate and the Contributor role for your subscription, use:

Login-AzureRmAccount
$cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=exampleappScriptCert" -KeySpec KeyExchange
$keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

$sp = New-AzureRMADServicePrincipal -DisplayName exampleapp -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore
Sleep 20
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $sp.ApplicationId

L'esempio viene sospeso per 20 secondi per consentire la propagazione della nuova entità servizio in Azure Active Directory.The example sleeps for 20 seconds to allow some time for the new service principal to propagate throughout Azure Active Directory. Se la durata dell'attesa dello script non è sufficiente, viene visualizzato un errore simile al seguente: "PrincipalNotFound: L'entità {ID} non esiste nella directory".If your script does not wait long enough, you see an error stating: "PrincipalNotFound: Principal {ID} does not exist in the directory."

Lo script seguente consente di specificare un ambito diverso dalla sottoscrizione predefinita e ritenta l'assegnazione di ruolo, se si verifica un errore.The following script enables you to specify a scope other than the default subscription, and retries the role assignment if an error occurs. È necessario che sia installato Azure PowerShell 2.0 su Windows 10 o Windows Server 2016.You must have Azure PowerShell 2.0 on Windows 10 or Windows Server 2016.

Param (

 # Use to set scope to resource group. If no value is provided, scope is set to subscription.
 [Parameter(Mandatory=$false)]
 [String] $ResourceGroup,

 # Use to set subscription. If no value is provided, default subscription is used. 
 [Parameter(Mandatory=$false)]
 [String] $SubscriptionId,

 [Parameter(Mandatory=$true)]
 [String] $ApplicationDisplayName
 )

 Login-AzureRmAccount
 Import-Module AzureRM.Resources

 if ($SubscriptionId -eq "") 
 {
    $SubscriptionId = (Get-AzureRmContext).Subscription.Id
 }
 else
 {
    Set-AzureRmContext -SubscriptionId $SubscriptionId
 }

 if ($ResourceGroup -eq "")
 {
    $Scope = "/subscriptions/" + $SubscriptionId
 }
 else
 {
    $Scope = (Get-AzureRmResourceGroup -Name $ResourceGroup -ErrorAction Stop).ResourceId
 }

 $cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=exampleappScriptCert" -KeySpec KeyExchange
 $keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

 $ServicePrincipal = New-AzureRMADServicePrincipal -DisplayName $ApplicationDisplayName -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore
 Get-AzureRmADServicePrincipal -ObjectId $ServicePrincipal.Id 

 $NewRole = $null
 $Retries = 0;
 While ($NewRole -eq $null -and $Retries -le 6)
 {
    # Sleep here for a few seconds to allow the service principal application to become active (should only take a couple of seconds normally)
    Sleep 15
    New-AzureRMRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $ServicePrincipal.ApplicationId -Scope $Scope | Write-Verbose -ErrorAction SilentlyContinue
    $NewRole = Get-AzureRMRoleAssignment -ObjectId $ServicePrincipal.Id -ErrorAction SilentlyContinue
    $Retries++;
 }

Alcuni elementi da considerare per lo script:A few items to note about the script:

  • Per concedere l'accesso all'identità alla sottoscrizione predefinita, non è necessario specificare i parametri ResourceGroup o SubscriptionId.To grant the identity access to the default subscription, you do not need to provide either ResourceGroup or SubscriptionId parameters.
  • Specificare il parametro ResourceGroup solo quando si vuole limitare l'ambito dell'assegnazione di ruolo a un gruppo di risorse.Specify the ResourceGroup parameter only when you want to limit the scope of the role assignment to a resource group.
  • In questo esempio viene aggiunta l'entità servizio al ruolo Collaboratore.In this example, you add the service principal to the Contributor role. Per gli altri ruoli, vedere Controllo degli accessi in base al ruolo: ruoli predefiniti.For other roles, see RBAC: Built-in roles.
  • Lo script viene sospeso per 15 secondi per consentire la propagazione della nuova entità servizio in Azure Active Directory.The script sleeps for 15 seconds to allow some time for the new service principal to propagate throughout Azure Active Directory. Se la durata dell'attesa dello script non è sufficiente, viene visualizzato un errore simile al seguente: "PrincipalNotFound: L'entità {ID} non esiste nella directory".If your script does not wait long enough, you see an error stating: "PrincipalNotFound: Principal {ID} does not exist in the directory."
  • Se è necessario concedere l'accesso all'entità servizio a più sottoscrizioni o gruppi di risorse, eseguire il cmdlet New-AzureRMRoleAssignment con ambiti diversi.If you need to grant the service principal access to more subscriptions or resource groups, run the New-AzureRMRoleAssignment cmdlet again with different scopes.

Se non si dispone di Windows 10 o Windows Server 2016 Technical Preview, è necessario scaricare il generatore di certificato autofirmato da Microsoft Script Center.If you do not have Windows 10 or Windows Server 2016 Technical Preview, you need to download the Self-signed certificate generator from Microsoft Script Center. Estrarre i contenuti e importare il cmdlet necessario.Extract its contents and import the cmdlet you need.

# Only run if you could not use New-SelfSignedCertificate
Import-Module -Name c:\ExtractedModule\New-SelfSignedCertificateEx.ps1

Nello script sostituire le due righe seguenti per generare il certificato.In the script, substitute the following two lines to generate the certificate.

New-SelfSignedCertificateEx  -StoreLocation CurrentUser -StoreName My -Subject "CN=exampleapp" -KeySpec "Exchange" -FriendlyName "exampleapp"
$cert = Get-ChildItem -path Cert:\CurrentUser\my | where {$PSitem.Subject -eq 'CN=exampleapp' }

Fornire il certificato tramite uno script di PowerShell automatizzatoProvide certificate through automated PowerShell script

Ogni volta che si accede come un'entità servizio, è necessario fornire l'ID tenant della directory per l'app AD.Whenever you sign in as a service principal, you need to provide the tenant ID of the directory for your AD app. Un tenant è un'istanza di Azure Active Directory.A tenant is an instance of Azure Active Directory. Se è disponibile solo una sottoscrizione, è possibile usare:If you only have one subscription, you can use:

Param (

 [Parameter(Mandatory=$true)]
 [String] $CertSubject,

 [Parameter(Mandatory=$true)]
 [String] $ApplicationId,

 [Parameter(Mandatory=$true)]
 [String] $TenantId
 )

 $Thumbprint = (Get-ChildItem cert:\CurrentUser\My\ | Where-Object {$_.Subject -match $CertSubject }).Thumbprint
 Login-AzureRmAccount -ServicePrincipal -CertificateThumbprint $Thumbprint -ApplicationId $ApplicationId -TenantId $TenantId

Poiché l'ID applicazione e l'ID tenant non sono sensibili, è possibile incorporarli direttamente nello script.The application ID and tenant ID are not sensitive, so you can embed them directly in your script. Se è necessario recuperare l'ID tenant, usare:If you need to retrieve the tenant ID, use:

(Get-AzureRmSubscription -SubscriptionName "Contoso Default").TenantId

Se è necessario recuperare l'ID applicazione, usare:If you need to retrieve the application ID, use:

(Get-AzureRmADApplication -DisplayNameStartWith {display-name}).ApplicationId

Creare un'entità servizio con certificato dell'autorità di certificazioneCreate service principal with certificate from Certificate Authority

Per usare un certificato emesso da un'autorità di certificazione per creare un'entità servizio, usare lo script seguente:To use a certificate issued from a Certificate Authority to create service principal, use the following script:

Param (
 [Parameter(Mandatory=$true)]
 [String] $ApplicationDisplayName,

 [Parameter(Mandatory=$true)]
 [String] $SubscriptionId,

 [Parameter(Mandatory=$true)]
 [String] $CertPath,

 [Parameter(Mandatory=$true)]
 [String] $CertPlainPassword
 )

 Login-AzureRmAccount
 Import-Module AzureRM.Resources
 Set-AzureRmContext -SubscriptionId $SubscriptionId

 $CertPassword = ConvertTo-SecureString $CertPlainPassword -AsPlainText -Force

 $PFXCert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @($CertPath, $CertPassword)
 $KeyValue = [System.Convert]::ToBase64String($PFXCert.GetRawCertData())

 $ServicePrincipal = New-AzureRMADServicePrincipal -DisplayName $ApplicationDisplayName
 New-AzureRmADSpCredential -ObjectId $ServicePrincipal.Id -CertValue $KeyValue -StartDate $PFXCert.NotBefore -EndDate $PFXCert.NotAfter
 Get-AzureRmADServicePrincipal -ObjectId $ServicePrincipal.Id 

 $NewRole = $null
 $Retries = 0;
 While ($NewRole -eq $null -and $Retries -le 6)
 {
    # Sleep here for a few seconds to allow the service principal application to become active (should only take a couple of seconds normally)
    Sleep 15
    New-AzureRMRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $ServicePrincipal.ApplicationId | Write-Verbose -ErrorAction SilentlyContinue
    $NewRole = Get-AzureRMRoleAssignment -ObjectId $ServicePrincipal.Id -ErrorAction SilentlyContinue
    $Retries++;
 }

 $NewRole

Alcuni elementi da considerare per lo script:A few items to note about the script:

  • L'ambito di accesso è limitato alla sottoscrizione.Access is scoped to the subscription.
  • In questo esempio viene aggiunta l'entità servizio al ruolo Collaboratore.In this example, you add the service principal to the Contributor role. Per gli altri ruoli, vedere Controllo degli accessi in base al ruolo: ruoli predefiniti.For other roles, see RBAC: Built-in roles.
  • Lo script viene sospeso per 15 secondi per consentire la propagazione della nuova entità servizio in Azure Active Directory.The script sleeps for 15 seconds to allow some time for the new service principal to propagate throughout Azure Active Directory. Se la durata dell'attesa dello script non è sufficiente, viene visualizzato un errore simile al seguente: "PrincipalNotFound: L'entità {ID} non esiste nella directory".If your script does not wait long enough, you see an error stating: "PrincipalNotFound: Principal {ID} does not exist in the directory."
  • Se è necessario concedere l'accesso all'entità servizio a più sottoscrizioni o gruppi di risorse, eseguire il cmdlet New-AzureRMRoleAssignment con ambiti diversi.If you need to grant the service principal access to more subscriptions or resource groups, run the New-AzureRMRoleAssignment cmdlet again with different scopes.

Fornire il certificato tramite uno script di PowerShell automatizzatoProvide certificate through automated PowerShell script

Ogni volta che si accede come un'entità servizio, è necessario fornire l'ID tenant della directory per l'app AD.Whenever you sign in as a service principal, you need to provide the tenant ID of the directory for your AD app. Un tenant è un'istanza di Azure Active Directory.A tenant is an instance of Azure Active Directory.

Param (

 [Parameter(Mandatory=$true)]
 [String] $CertPath,

 [Parameter(Mandatory=$true)]
 [String] $CertPlainPassword,

 [Parameter(Mandatory=$true)]
 [String] $ApplicationId,

 [Parameter(Mandatory=$true)]
 [String] $TenantId
 )

 $CertPassword = ConvertTo-SecureString $CertPlainPassword -AsPlainText -Force
 $PFXCert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @($CertPath, $CertPassword)
 $Thumbprint = $PFXCert.Thumbprint

 Login-AzureRmAccount -ServicePrincipal -CertificateThumbprint $Thumbprint -ApplicationId $ApplicationId -TenantId $TenantId

Poiché l'ID applicazione e l'ID tenant non sono sensibili, è possibile incorporarli direttamente nello script.The application ID and tenant ID are not sensitive, so you can embed them directly in your script. Se è necessario recuperare l'ID tenant, usare:If you need to retrieve the tenant ID, use:

(Get-AzureRmSubscription -SubscriptionName "Contoso Default").TenantId

Se è necessario recuperare l'ID applicazione, usare:If you need to retrieve the application ID, use:

(Get-AzureRmADApplication -DisplayNameStartWith {display-name}).ApplicationId

Modificare le credenzialiChange credentials

Per modificare le credenziali per un'app AD, a causa di una violazione della sicurezza o della scadenza delle credenziali, usare i cmdlet Remove-AzureRmADAppCredential e New-AzureRmADAppCredential.To change the credentials for an AD app, either because of a security compromise or a credential expiration, use the Remove-AzureRmADAppCredential and New-AzureRmADAppCredential cmdlets.

Per rimuovere tutte le credenziali per un'applicazione, usare:To remove all the credentials for an application, use:

Remove-AzureRmADAppCredential -ApplicationId 8bc80782-a916-47c8-a47e-4d76ed755275 -All

Per aggiungere una password, usare:To add a password, use:

New-AzureRmADAppCredential -ApplicationId 8bc80782-a916-47c8-a47e-4d76ed755275 -Password p@ssword!

Per aggiungere un valore del certificato, creare un certificato autofirmato come illustrato in questo argomento.To add a certificate value, create a self-signed certificate as shown in this topic. Successivamente, usare:Then, use:

New-AzureRmADAppCredential -ApplicationId 8bc80782-a916-47c8-a47e-4d76ed755275 -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore

Salvare il token di accesso per semplificare l'accessoSave access token to simplify log in

Il token di accesso può essere slavato al fine di evitare di dover fornire le credenziali dell'entità servizio ogni volta che viene richiesto di effettuare l'accesso.To avoid providing the service principal credentials every time it needs to log in, you can save the access token.

Salvare il profilo per usare il token di accesso corrente in una sessione successiva.To use the current access token in a later session, save the profile.

Save-AzureRmProfile -Path c:\Users\exampleuser\profile\exampleSP.json

Aprire il profilo ed esaminare il relativo contenuto.Open the profile and examine its contents. Si noti che contiene un token di accesso.Notice that it contains an access token. Invece di effettuare di nuovo l'accesso manuale, caricare il profilo.Instead of manually logging in again, load the profile.

Select-AzureRmProfile -Path c:\Users\exampleuser\profile\exampleSP.json

Nota

Il token di accesso scade, quindi l'uso di un profilo salvato funziona solo fino al termine del periodo di validità del token.The access token expires, so using a saved profile only works for as long as the token is valid.

In alternativa, è possibile richiamare operazioni REST da PowerShell per eseguire l'accesso.Alternatively, you can invoke REST operations from PowerShell to log in. Dalla risposta di autenticazione è possibile recuperare il token di accesso da usare con altre operazioni.From the authentication response, you can retrieve the access token for use with other operations. Per un esempio di come recuperare il token di accesso richiamando operazioni REST, vedere Generazione di un token di accesso.For an example of retrieving the access token by invoking REST operations, see Generating an Access Token.

DebugDebug

Durante la creazione di un'entità servizio, è possibile riscontrare gli errori seguenti:You may encounter the following errors when creating a service principal:

  • "Authentication_Unauthorized" o "Nessuna sottoscrizione trovata nel contesto"."Authentication_Unauthorized" or "No subscription found in the context." - Questo errore viene visualizzato quando l'account non ha le autorizzazioni necessarie in Azure Active Directory per registrare un'app.- You see this error when your account does not have the required permissions on the Azure Active Directory to register an app. In genere, l'errore si verifica quando solo gli utenti amministratori di Azure Active Directory possono registrare le app e l'account in uso non è un account di amministratore. Chiedere all'amministratore di essere assegnati a un ruolo di amministratore oppure di consentire agli utenti di registrare le app.Typically, you see this error when only admin users in your Azure Active Directory can register apps, and your account is not an admin. Ask your administrator to either assign you to an administrator role, or to enable users to register apps.

  • L'account "non è autorizzato a eseguire l'azione 'Microsoft.Authorization/roleAssignments/write' nell'ambito '/subscriptions/{guid}'." - Questo errore viene visualizzato quando l'account non dispone di autorizzazioni sufficienti per assegnare un ruolo a un'identità.Your account "does not have authorization to perform action 'Microsoft.Authorization/roleAssignments/write' over scope '/subscriptions/{guid}'." - You see this error when your account does not have sufficient permissions to assign a role to an identity. Chiedere all'amministratore della sottoscrizione di essere aggiunti al ruolo Amministratore accessi utente.Ask your subscription administrator to add you to User Access Administrator role.

Applicazioni di esempioSample applications

Per informazioni su come effettuare l'accesso all'applicazione su diverse piattaforme, vedere:For information about logging in as the application through different platforms, see:

Passaggi successiviNext steps