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 i servizi di Azure devono avere sempre autorizzazioni limitate. Anziché consentire alle applicazioni di accedere come utente con privilegi completi, Azure offre principali di servizio.
Una principalità di servizio di Azure è un'identità creata per essere utilizzata con applicazioni, servizi ospitati e strumenti automatizzati per accedere alle risorse di Azure. Questo accesso è limitato dai ruoli assegnati al principale del servizio, permettendo di controllare le risorse a cui è possibile accedere e a quale livello. Per motivi di sicurezza, è sempre consigliabile utilizzare i principali del servizio attraverso strumenti di automazione piuttosto che permettere loro di accedere 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 si crea un principale del servizio usando il comando New-AzADServicePrincipal, l'output include le credenziali da proteggere. Come alternativa, puoi considerare di usare managed identities per evitare l'uso delle credenziali.
Prerequisiti
- Se scegli di utilizzare Azure PowerShell localmente:
- Installare il modulo Az PowerShell.
- Connettersi all'account Azure con il cmdlet Connect-AzAccount.
- Se si sceglie di usare Azure Cloud Shell:
- Vedi Panoramica di Azure Cloud Shell per ulteriori informazioni.
Creare un principale servizio
Crea un service principal con il cmdlet New-AzADServicePrincipal. Quando si crea un principale del servizio, si sceglie il tipo di autenticazione di accesso che utilizza.
Importante
A partire dal modulo Az PowerShell versione 7.x, New-AzADServicePrincipal non assegna più di default il ruolo Contributore all'entità servizio. Per assegnare un ruolo specifico a un principale del servizio, vedere Passaggi per aggiungere un'assegnazione di ruolo.
Annotazioni
Se il tuo account non ha l'autorizzazione per creare un service principal, New-AzADServicePrincipal
restituirà un messaggio di errore contenente "Privilegi insufficienti per completare l'operazione". Contatta l'amministratore di Microsoft Entra per creare un principale del servizio.
In una directory di Microsoft Entra ID in cui l'impostazione utente Gli utenti possono registrare applicazioni è stata impostata su No, è necessario essere membri di uno dei seguenti ruoli predefiniti di 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 altre informazioni sulle impostazioni utente in Microsoft Entra ID, vedere Limitare gli utenti che possono creare applicazioni.
Sono disponibili due tipi di autenticazione per i principali del servizio: autenticazione basata su password e autenticazione basata su certificato.
Autenticazione basata su password
Importante
Il ruolo predefinito per un principale del servizio di autenticazione basata su password è Collaboratore. Questo ruolo ha tutte le autorizzazioni per leggere e scrivere su un account Azure. Per informazioni sulla gestione delle assegnazioni di ruolo, vedere Gestire i ruoli del principale del servizio.
Senza alcun altro parametro di autenticazione, viene utilizzata l'autenticazione basata su password e viene generata una password casuale per te. Se desideri l'autenticazione basata su password, questo metodo è consigliato.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
L'oggetto restituito contiene la proprietà PasswordCredentials.SecretText
contenente la password generata. Assicurati di memorizzare questo valore in un luogo sicuro per poterti autenticare con il principale del servizio. Il suo valore non sarà visualizzato nell'output della console. Se perdi la password, reimposta le credenziali principali del servizio.
Il codice seguente consente di esportare il segreto:
$sp.PasswordCredentials.SecretText
L'oggetto restituito da New-AzADServicePrincipal
contiene i membri Id
e DisplayName
, ciascuno dei quali può essere utilizzato per accedere con il principale del servizio.
Importante
L'accesso con un'entità servizio richiede l'ID del tenant sotto cui è stata creata l'entità servizio. Per ottenere il tenant attivo al momento della creazione del principal del servizio, eseguire immediatamente il seguente comando dopo la creazione del principal del 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 basato su certificato. Per informazioni sulla gestione delle assegnazioni di ruolo, vedere Gestire i ruoli del principale del servizio.
I principali di servizio che utilizzano l'autenticazione basata su certificati vengono creati con il parametro CertValue
. Questo parametro richiede una stringa ASCII codificata in 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 tu abbia già un certificato disponibile.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
L'oggetto restituito da New-AzADServicePrincipal
contiene le proprietà Id
e DisplayName
, entrambe utilizzabili per l'accesso con il servizio principale. I clienti che accedono tramite il principale del servizio hanno anche bisogno di accesso alla chiave privata del certificato.
Importante
L'accesso con un'entità servizio richiede l'ID del tenant sotto cui è stata creata l'entità servizio. Per ottenere il tenant attivo al momento della creazione del principal del servizio, eseguire immediatamente il seguente comando dopo la creazione del principal del servizio:
(Get-AzContext).Tenant.Id
Ottieni un principale di servizio esistente
Un elenco di principali di servizio per il tenant attivo può essere recuperato con 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 utilizzare uno degli argomenti opzionali di filtro lato server:
-
DisplayNameBeginsWith
richiede i principali del servizio che hanno un prefisso che corrisponde al valore fornito. Il nome visualizzato di un service principal è il valore impostato conDisplayName
durante la creazione. -
DisplayName
richiede una corrispondenza esatta di un nome principale del servizio.
Gestire i ruoli dei principali del servizio
Azure PowerShell dispone dei seguenti cmdlet per gestire le assegnazioni dei ruoli:
Per maggiori informazioni su Role-Based Access Control (RBAC) e ruoli, vedere RBAC: Ruoli integrati.
L'esempio seguente aggiunge il ruolo Lettore e rimuove 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. Prendono l'ID dell'applicazione associato, generato al momento della creazione. Per ottenere l'ID dell'applicazione per un principale del servizio, usare Get-AzADServicePrincipal
.
Annotazioni
Se il tuo account non ha i permessi necessari per assegnare un ruolo, vedrai un messaggio di errore che indica che il tuo account "non ha l'autorizzazione per eseguire l'azione 'Microsoft.Authorization/roleAssignments/write'". Contatta il tuo amministratore di Microsoft Entra per gestire i ruoli.
L'aggiunta di un ruolo non restringe le autorizzazioni assegnate in precedenza. Quando si limitano le autorizzazioni di un service principal, il ruolo Contributor dovrebbe essere rimosso.
Le modifiche possono essere verificate elencando i ruoli assegnati:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Accedi utilizzando un principal del servizio
Testare le credenziali e le autorizzazioni del nuovo principale del servizio effettuando l'accesso. Per effettuare l'accesso con un principal di servizio, è necessario il valore applicationId
associato ad esso e al tenant sotto il quale è stato creato.
Per accedere con un principale del servizio utilizzando 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 all'impronta digitale del certificato.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
Per istruzioni su come importare un certificato in un archivio di credenziali accessibile tramite PowerShell, vedere l'autenticazione basata su certificato
Ripristina le credenziali
Se si sono dimenticate le credenziali per un principale del servizio, usare 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, potrebbe essere utile rimuovere quelle esistenti per evitare di accedervi con esse. Per farlo, usa 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 altro principale del 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
Altrimenti, scegli un nome alternativo per il nuovo principal del servizio che stai tentando di creare.