Fornisci alle applicazioni l'accesso ad Azure StackProvide applications access to Azure Stack

Si applica a: Azure Stack Development Kit e i sistemi integrati di Azure StackApplies to: Azure Stack integrated systems and Azure Stack Development Kit

Quando un'applicazione deve accedere a distribuire o configurare le risorse tramite Azure Resource Manager in Azure Stack, si crea un'entità servizio, ovvero una credenziale per l'applicazione.When an application needs access to deploy or configure resources through Azure Resource Manager in Azure Stack, you create a service principal, which is a credential for your application. È quindi possibile delegare solo le autorizzazioni necessarie per tale entità servizio.You can then delegate only the necessary permissions to that service principal.

Ad esempio, potrebbe essere uno strumento di Gestione configurazione che usa Azure Resource Manager per creare un inventario delle risorse di Azure.As an example, you may have a configuration management tool that uses Azure Resource Manager to inventory Azure resources. In questo scenario, è possibile creare un'entità servizio, concedere al ruolo lettore a tale entità servizio e limitare lo strumento di Gestione configurazione per l'accesso di sola lettura.In this scenario, you can create a service principal, grant the reader role to that service principal, and limit the configuration management tool to read-only access.

Le entità servizio sono preferibili per l'esecuzione dell'app con le proprie credenziali perché:Service principals are preferable to running the app under your own credentials because:

  • È possibile assegnare autorizzazioni all'entità che sono diverse dalle proprie autorizzazioni dell'account servizio.You can assign permissions to the service principal that are different than your own account 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.
  • Non è necessario modificare le credenziali dell'app in caso di cambiamento delle responsabilità dell'utente.You do not have to change the app's credentials if your responsibilities change.
  • È possibile usare un certificato per automatizzare l'autenticazione in caso di esecuzione di uno script automatico.You can use a certificate to automate authentication when executing an unattended script.

IntroduzioneGetting started

A seconda del modo in cui è stato distribuito Azure Stack, è necessario creare un'entità servizio.Depending on how you have deployed Azure Stack, you start by creating a service principal. Questo documento illustra come creare un'entità servizio per entrambi Azure Active Directory (Azure AD) e Active Directory Federation Services(AD FS).This document guides you through creating a service principal for both Azure Active Directory (Azure AD) and Active Directory Federation Services(AD FS). Dopo aver creato l'entità servizio, vengono usati per una serie di passaggi comuni per AD FS sia Azure Active Directory delegare le autorizzazioni al ruolo.Once you've created the service principal, a set of steps common to both AD FS and Azure Active Directory are used to delegate permissions to the role.

Creare un'entità servizio per Azure ADCreate service principal for Azure AD

Se è stato distribuito Azure Stack tramite Azure AD come archivio identità, è possibile creare le entità servizio, proprio come per Azure.If you've deployed Azure Stack using Azure AD as the identity store, you can create service principals just like you do for Azure. Questa sezione illustra come eseguire la procedura tramite il portale.This section shows you how to perform the steps through the portal. Verificare di disporre il autorizzazioni di Azure AD necessarie prima di iniziare.Check that you have the required Azure AD permissions before beginning.

Creare un'entità servizioCreate service principal

In questa sezione si crea un'applicazione (entità servizio) in Azure AD che rappresenta l'applicazione.In this section, you create an application (service principal) in Azure AD that represents your application.

  1. Accedi all'Account di Azure tramite il portale di Azure.Sign in to your Azure Account through the Azure portal.
  2. Selezionare Azure Active Directory > registrazioni per l'App > AddSelect Azure Active Directory > App registrations > Add
  3. Specificare un nome e un URL per l'applicazione.Provide a name and URL for the application. Selezionare App Web/API o Nativa come tipo di applicazione da creare.Select either Web app / API or Native for the type of application you want to create. Dopo aver impostato i valori selezionare Crea.After setting the values, select Create.

È stato creato un'entità servizio per l'applicazione.You have created a service principal for your application.

Ottieni credenzialiGet credentials

Durante l'accesso a livello di codice, si usa l'ID per l'applicazione e per un'app Web / API, una chiave di autenticazione.When programmatically logging in, you use the ID for your application, and for a Web app / API, an authentication key. Per ottenere questi valori eseguire la procedura seguente:To get those values, use the following steps:

  1. Da Registrazioni dell'app in Active Directory selezionare l'applicazione.From App registrations in Active Directory, select your application.

  2. Copiare l'ID applicazione e archiviarlo nel codice dell'applicazione.Copy the Application ID and store it in your application code. Le applicazioni nella sezione delle applicazioni di esempio indicano questo valore come ID client.The applications in the sample applications section refer to this value as the client ID.

    ID CLIENT

  3. Per generare una chiave di autenticazione per un'app Web / API, selezionare le impostazioni > chiavi.To generate an authentication key for a Web app / API, select Settings > Keys.

  4. Specificare una descrizione e una durata per la chiave.Provide a description of the key, and a duration for the key. Al termine scegliere Salva.When done, select Save.

Dopo aver salvato la chiave viene visualizzato il valore della chiave.After saving the key, the value of the key is displayed. Copiare il valore in quanto non sarà possibile recuperare la chiave in seguito.Copy this value because you are not able to retrieve the key later. È fornire il valore della chiave con l'ID applicazione per accedere come l'applicazione.You provide the key value with the application ID to sign as the application. Salvare il valore della chiave in una posizione in cui l'applicazione possa recuperarlo.Store the key value where your application can retrieve it.

chiave salvata

Al termine dell'operazione, passare alla assegnazione di un ruolo applicazione.Once complete, proceed to assigning your application a role.

Creare un'entità servizio per AD FSCreate service principal for AD FS

Se è stato distribuito Azure Stack con AD FS, è possibile usare PowerShell per creare un'entità servizio, assegnare un ruolo per l'accesso e accesso da PowerShell usando tale identità.If you have deployed Azure Stack with AD FS, you can use PowerShell to create a service principal, assign a role for access, and sign in from PowerShell using that identity.

Lo script viene eseguito dall'endpoint con privilegi in una macchina virtuale ERCS.The script is run from the privileged endpoint on an ERCS virtual machine.

Requirements:Requirements:

  • È necessario un certificato.A certificate is required.

ParametersParameters

Le informazioni seguenti sono necessarie come input per i parametri di automazione:The following information is required as input for the automation parameters:

ParametroParameter DESCRIZIONEDescription EsempioExample
NOMEName Nome per l'account del nome SPNName for the SPN account MyAPPMyAPP
ClientCertificatesClientCertificates Matrice di oggetti certificatoArray of certificate objects X509 certificatoX509 certificate
ClientRedirectUrisClientRedirectUris
Facoltativa(Optional)
URI di reindirizzamento dell'applicazioneApplication redirect URI

EsempioExample

  1. Aprire una sessione di Windows PowerShell con privilegi elevata ed eseguire i comandi seguenti:Open an elevated Windows PowerShell session, and run the following commands:

    Nota

    Questo esempio crea un certificato autofirmato.This example creates a self-signed certificate. Quando si eseguono questi comandi in una distribuzione di produzione, usare Get-Certificate per recuperare l'oggetto certificato per il certificato da usare.When you run these commands in a production deployment, use Get-Certificate to retrieve the certificate object for the certificate you want to use.

     # Credential for accessing the ERCS PrivilegedEndpoint typically domain\cloudadmin
     $creds = Get-Credential
    
     # Creating a PSSession to the ERCS PrivilegedEndpoint
     $session = New-PSSession -ComputerName <ERCS IP> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
     # This produces a self signed cert for testing purposes.  It is prefered to use a managed certificate for this.
     $cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=<yourappname>" -KeySpec KeyExchange
    
     $ServicePrincipal = Invoke-Command -Session $session -ScriptBlock { New-GraphApplication -Name '<yourappname>' -ClientCertificates $using:cert}
     $AzureStackInfo = Invoke-Command -Session $session -ScriptBlock { get-azurestackstampinformation }
     $session|remove-pssession
    
     # For Azure Stack development kit, this value is set to https://management.local.azurestack.external. We will read this from the AzureStackStampInformation output of the ERCS VM.
     $ArmEndpoint = $AzureStackInfo.TenantExternalEndpoints.TenantResourceManager
    
     # For Azure Stack development kit, this value is set to https://graph.local.azurestack.external/. We will read this from the AzureStackStampInformation output of the ERCS VM.
     $GraphAudience = "https://graph." + $AzureStackInfo.ExternalDomainFQDN + "/"
    
     # TenantID for the stamp. We will read this from the AzureStackStampInformation output of the ERCS VM.
     $TenantID = $AzureStackInfo.AADTenantID
    
     # Register an AzureRM environment that targets your Azure Stack instance
     Add-AzureRMEnvironment `
     -Name "AzureStackUser" `
     -ArmEndpoint $ArmEndpoint
    
     # Set the GraphEndpointResourceId value
     Set-AzureRmEnvironment `
     -Name "AzureStackUser" `
     -GraphAudience $GraphAudience `
     -EnableAdfsAuthentication:$true
    
     Add-AzureRmAccount -EnvironmentName "azurestackuser" `
     -ServicePrincipal `
     -CertificateThumbprint $ServicePrincipal.Thumbprint `
     -ApplicationId $ServicePrincipal.ClientId `
     -TenantId $TenantID
    
  2. Al termine del processo di automazione, vengono visualizzati i dettagli necessari per usare il nome SPN.After the automation finishes, it displays the required details to use the SPN.

    Ad esempio: For example:

    ApplicationIdentifier : S-1-5-21-1512385356-3796245103-1243299919-1356
    ClientId              : 3c87e710-9f91-420b-b009-31fa9e430145
    Thumbprint            : 30202C11BE6864437B64CE36C8D988442082A0F1
    ApplicationName       : Azurestack-MyApp-c30febe7-1311-4fd8-9077-3d869db28342
    PSComputerName        : azs-ercs01
    RunspaceId            : a78c76bb-8cae-4db4-a45a-c1420613e01b
    

Assegnare un ruoloAssign a role

Dopo aver creato l'entità servizio, è necessario assegnarlo a un ruoloOnce the Service Principal is created, you must assign it to a role

Eseguire l'accesso tramite PowerShellSign in through PowerShell

Dopo aver assegnato un ruolo, è possibile accedere ad Azure Stack usando l'entità servizio con il comando seguente:Once you've assigned a role, you can sign in to Azure Stack using the service principal with the following command:

Add-AzureRmAccount -EnvironmentName "<AzureStackEnvironmentName>" `
 -ServicePrincipal `
 -CertificateThumbprint $servicePrincipal.Thumbprint `
 -ApplicationId $servicePrincipal.ClientId ` 
 -TenantId $directoryTenantId

Assegnazione di ruolo all'entità servizioAssign role to service principal

Per accedere alle risorse della propria sottoscrizione è necessario assegnare l'applicazione a un ruolo.To access resources in your subscription, you must assign the application to a role. Decidere quale ruolo rappresenti le autorizzazioni appropriate per l'applicazione.Decide which role represents the right permissions for the application. Per informazioni sui ruoli disponibili, vedere Controllo degli accessi in base al ruolo: ruoli predefiniti.To learn about the available roles, see RBAC: Built in Roles.

È possibile impostare l'ambito al livello della sottoscrizione, del gruppo di risorse o della risorsa.You can set the scope at the level of the subscription, resource group, or resource. Le autorizzazioni vengono ereditate a livelli inferiori dell'ambito.Permissions are inherited to lower levels of scope. Se ad esempio si aggiunge un'applicazione al ruolo Lettore per un gruppo di risorse, l'applicazione può leggere il gruppo di risorse e le risorse in esso contenute.For example, adding an application to the Reader role for a resource group means it can read the resource group and any resources it contains.

  1. Nel portale di Azure Stack, passare al livello dell'ambito che si desidera assegnare l'applicazione.In the Azure Stack portal, navigate to the level of scope you wish to assign the application to. Ad esempio, per assegnare un ruolo a un ambito della sottoscrizione, selezionare Sottoscrizioni.For example, to assign a role at the subscription scope, select Subscriptions. In alternativa è possibile selezionare una risorsa o un gruppo di risorse.You could instead select a resource group or resource.

  2. Selezionare la sottoscrizione specifica (risorsa o un gruppo di risorse) a cui assegnare l'applicazione.Select the particular subscription (resource group or resource) to assign the application to.

    selezionare la sottoscrizione per l'assegnazione

  3. Selezionare Controllo di accesso (IAM).Select Access Control (IAM).

    selezionare accesso

  4. Selezionare Aggiungi.Select Add.

  5. Selezionare il ruolo che si desidera assegnare all'applicazione.Select the role you wish to assign to the application.

  6. Cercare l'applicazione e selezionarla.Search for your application, and select it.

  7. Selezionare OK per completare l'assegnazione del ruolo.Select OK to finish assigning the role. L'applicazione ora compare nell'elenco degli utenti assegnati a un ruolo per quell'ambito.You see your application in the list of users assigned to a role for that scope.

Ora che è stato creato un'entità servizio e assegnato un ruolo, è possibile iniziare a usare questo all'interno dell'applicazione per accedere alle risorse di Azure Stack.Now that you've created a service principal and assigned a role, you can begin using this within your application to access Azure Stack resources.

Passaggi successiviNext steps

Aggiungere utenti ad ad FS gestire le autorizzazioni utenteAdd users for ADFS Manage user permissions