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.
Gli strumenti automatizzati che usano Azure servizi devono avere sempre autorizzazioni limitate. Invece di avere le applicazioni che accedono come utente con tutti i privilegi, Azure offre principali di servizio.
Un principale servizio Azure è un'identità creata per l'uso con applicazioni, servizi ospitati e strumenti automatizzati per accedere alle risorse di Azure. L'accesso è limitato dai ruoli assegnati al principale del servizio, permettendoti di controllare a quali risorse è possibile accedere e a quale livello. Per motivi di sicurezza, è sempre consigliabile usare entità servizio con strumenti automatizzati anziché consentire l'accesso con un'identità utente.
Questo articolo illustra i passaggi per la creazione, il recupero di informazioni e la reimpostazione di un'entità servizio con Azure PowerShell.
Attenzione
Quando crei un principale del servizio usando il comando New-AzADServicePrincipal, l'output include credenziali che devono essere protette. In alternativa, è consigliabile usare le identità gestite per evitare la necessità di usare le credenziali.
Prerequisiti
- Se si sceglie di usare Azure PowerShell in locale:
- Installare il modulo Az PowerShell.
- Connettersi all'account Azure usando il cmdlet Connect-AzAccount.
- Se si sceglie di usare Azure Cloud Shell:
- Per altre informazioni, vedere Panoramica di Azure Cloud Shell.
Creare un principale servizio
Creare un service principal con il cmdlet New-AzADServicePrincipal. Quando si crea un'entità servizio, si sceglie il tipo di autenticazione di accesso usata.
Importante
A partire dalla versione 7.x in poi del modulo Az PowerShell, New-AzADServicePrincipal non assegna più il ruolo Collaboratore al principale del servizio per impostazione predefinita. Per assegnare un ruolo specifico a un principale del servizio, vedere Procedure per aggiungere un'assegnazione di ruolo.
Annotazioni
Se il tuo account non ha l'autorizzazione per creare un service principal, restituirà un messaggio di errore contenente "Privilegi insufficienti per completare l'operazione". Contattare l'amministratore di Microsoft Entra per creare un service principal.
In una directory Microsoft Entra ID in cui l'impostazione utente Users può registrare le applicazioni è stata impostata su No, è necessario essere membri di uno dei ruoli predefiniti seguenti Microsoft Entra ID (che hanno l'azione: microsoft.directory/applications/createAsOwner o microsoft.directory/applications/create):
- Sviluppatore di applicazioni
- Amministratore di applicazioni
- Amministratore di applicazioni cloud
- Amministratore globale
- Amministratore delle identità ibride
Per ulteriori informazioni sulle impostazioni utente in Microsoft Entra ID, consultare Limitare chi può creare applicazioni.
Esistono due tipi di autenticazione disponibili per le entità servizio: autenticazione basata su password e autenticazione basata su certificati.
Autenticazione basata su password
Importante
Il ruolo predefinito per un principale del servizio di autenticazione basato su password è Collaboratore. Questo ruolo dispone delle autorizzazioni complete per la lettura e la scrittura in un account Azure. Per informazioni sulla gestione delle assegnazioni di ruolo, vedere Gestire i ruoli dell'entità servizio.
Senza altri parametri di autenticazione, viene usata l'autenticazione basata su password e viene creata automaticamente una password casuale. Se si vuole l'autenticazione basata su password, questo metodo è consigliato.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
L'oggetto restituito contiene la proprietà contenente la password generata. Assicurati di conservare questo valore in modo sicuro per autenticarti con il service principal. Il valore non verrà visualizzato nell'output della console. Se si perde la password, reimpostare le credenziali del principale di servizio.
Il codice seguente consente di esportare il segreto:
$sp.PasswordCredentials.SecretText
L'oggetto restituito da contiene i membri e , entrambi possono essere utilizzati per l'accesso con il principale del servizio.
Importante
L'accesso con un'entità servizio richiede l'ID tenant in cui è stata creata l'entità servizio. Per ottenere il tenant attivo al momento della creazione dell'entità servizio, eseguire il comando seguente subito dopo la creazione dell'entità servizio:
(Get-AzContext).Tenant.Id
Autenticazione basata su certificati
Importante
Non viene assegnato alcun ruolo predefinito quando si crea un principale del servizio di autenticazione basata su certificato. Per informazioni sulla gestione delle assegnazioni di ruolo, vedere Gestire i ruoli dell'entità servizio.
Le entità servizio che utilizzano l'autenticazione basata su certificati vengono create con il parametro specifico. Questo parametro accetta una stringa ASCII con codifica Base64 del certificato pubblico. Questa operazione è rappresentata da un file PEM o da un file CRT o CER codificato in testo. Le codifiche binarie del certificato pubblico non sono supportate. Queste istruzioni presuppongono che sia già disponibile un certificato.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
Il oggetto restituito contiene le proprietà specificate, ognuna delle quali può essere utilizzata per accedere con il principale del servizio. Anche i client che accedono con il principale del servizio necessitano di accesso alla chiave privata del certificato.
Importante
L'accesso con un'entità servizio richiede l'ID tenant sotto il quale è stato creato il servizio principale. Per ottenere il tenant attivo al momento della creazione dell'entità servizio, eseguire il comando seguente subito dopo la creazione dell'entità servizio:
(Get-AzContext).Tenant.Id
Ottenere un principale di servizio esistente
È possibile recuperare un elenco di servizi principali per il tenant attivo con il comando di Get-AzADServicePrincipal. Per impostazione predefinita, questo comando restituisce tutte le entità servizio in un tenant. Per le organizzazioni di grandi dimensioni, potrebbe essere necessario molto tempo per restituire i risultati. È invece consigliabile usare uno degli argomenti di filtro sul lato server facoltativi:
- richiede entità servizio con un prefisso corrispondente al valore specificato. Il nome visualizzato di un principal del servizio è il valore impostato al momento della creazione.
- richiede una corrispondenza esatta del nome di un'entità servizio.
Gestire i ruoli dei principali del servizio
Azure PowerShell include i cmdlet seguenti per gestire le assegnazioni di ruolo:
- Get-AzRoleAssignment
- New-AzRoleAssignment
- Remove-AzRoleAssignment
Per altre informazioni su Role-Based Access Control e ruoli, vedere RBAC: Ruoli predefiniti.
Nell'esempio seguente viene aggiunto il ruolo Lettore e viene rimosso il ruolo Collaboratore :
New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'
Importante
I cmdlet di assegnazione di ruolo non accettano l'ID oggetto del service principal. Accettano l'ID applicazione associato, generato al momento della creazione. Per ottenere l'ID applicazione per un'entità servizio, usare .
Annotazioni
Se l'account non dispone dell'autorizzazione per assegnare un ruolo, viene visualizzato un messaggio di errore che indica che l'account "non dispone dell'autorizzazione per eseguire l'azione "Microsoft.Authorization/roleAssignments/write". Contatta l'amministratore di Microsoft Entra per la gestione dei ruoli.
L'aggiunta di un ruolo non limita le autorizzazioni assegnate in precedenza. Quando si limitano le autorizzazioni di un principale del servizio, è necessario rimuovere il ruolo Contributor.
Le modifiche possono essere verificate elencando i ruoli assegnati:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Accedere con un principal del servizio
Testare le credenziali e le autorizzazioni del nuovo principale del servizio accedendo. Per accedere con un principal del servizio, è necessario il valore ad esso associato e il tenant in cui è stato creato.
Per accedere con un'entità del servizio usando una password:
# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>
L'autenticazione basata su certificati richiede che Azure PowerShell possa recuperare informazioni da un archivio certificati locale in base a un'identificazione personale del certificato.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
Per istruzioni sull'importazione di un certificato in un archivio credenziali accessibile da PowerShell, vedere Autenticazione basata su certificati
Reimpostare le credenziali
Se dimentichi le credenziali per un servizio principale di Azure, usa New-AzADSpCredential per aggiungere una nuova credenziale con una password casuale. Questo cmdlet non supporta le credenziali definite dall'utente durante la reimpostazione della password.
Importante
Prima di assegnare nuove credenziali, è possibile rimuovere le credenziali esistenti per impedire l'accesso con esse. A tale scopo, usare il cmdlet Remove-AzADSpCredential :
Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName
Risoluzione dei problemi
Se viene visualizzato l'errore " New-AzADServicePrincipal: Un altro oggetto con lo stesso valore per property identifierUris esiste già". Verificare che un'entità servizio con lo stesso nome non esista già.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Se l'entità servizio esistente non è più necessaria, è possibile rimuoverla usando l'esempio seguente.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
Questo errore può verificarsi anche quando è stata creata in precedenza un'entità servizio per un'applicazione Azure Active Directory. Se si rimuove il principale del servizio, l'applicazione è ancora disponibile. Questa applicazione impedisce di creare un'altra entità servizio con lo stesso nome.
È possibile usare l'esempio seguente per verificare che un'applicazione Microsoft Entra con lo stesso nome non esista:
Get-AzADApplication -DisplayName ServicePrincipalName
Se un'applicazione con lo stesso nome esiste e non è più necessaria, può essere rimossa usando l'esempio seguente.
Remove-AzADApplication -DisplayName ServicePrincipalName
In caso contrario, scegliere un nome alternativo per il nuovo principale del servizio che si sta cercando di creare.