Use uma identidade de aplicativo para aceder aos recursos do Azure Stack HubUse an app identity to access Azure Stack Hub resources

Uma aplicação que precise de implantar ou configurar recursos através do Azure Resource Manager deve ser representada pela sua própria identidade.An application that needs to deploy or configure resources through Azure Resource Manager must be represented by its own identity. Assim como um utilizador é representado por um diretor de segurança chamado principal utilizador, uma aplicação é representada por um diretor de serviço.Just as a user is represented by a security principal called a user principal, an app is represented by a service principal. O diretor de serviço fornece uma identidade para a sua app, permitindo-lhe delegar apenas as permissões necessárias para a app.The service principal provides an identity for your app, allowing you to delegate only the necessary permissions to the app.

Como exemplo, pode ter uma aplicação de gestão de configuração que utiliza o Azure Resource Manager para inventariar recursos do Azure.As an example, you may have a configuration management app that uses Azure Resource Manager to inventory Azure resources. Neste cenário, pode criar um principal de serviço, conceder o papel de "leitor" a esse responsável de serviço e limitar a aplicação de gestão de configuração ao acesso apenas de leitura.In this scenario, you can create a service principal, grant the "reader" role to that service principal, and limit the configuration management app to read-only access.

Descrição geralOverview

Tal como um utilizador, uma aplicação deve apresentar credenciais durante a autenticação.Like a user, an app must present credentials during authentication. Esta autenticação é constituída por dois elementos:This authentication consists of two elements:

  • Um ID de aplicação, às vezes referido como ID do Cliente.An Application ID, sometimes referred to as a Client ID. Um GUID que identifica exclusivamente o registo da app no seu inquilino Ative Directory.A GUID that uniquely identifies the app's registration in your Active Directory tenant.
  • Um segredo associado à identificação da aplicação.A secret associated with the application ID. Pode gerar uma cadeia secreta do cliente (semelhante a uma palavra-passe) ou especificar um certificado X509 (que utiliza a sua chave pública).You can either generate a client secret string (similar to a password), or specify an X509 certificate (which uses its public key).

Executar uma aplicação com a sua própria identidade é preferível executá-la sob a identidade do utilizador pelas seguintes razões:Running an app under its own identity is preferable to running it under the user's identity for the following reasons:

  • Credenciais mais fortes - uma aplicação pode iniciar sação usando um certificado X509, em vez de um segredo/senha partilhado texual.Stronger credentials - an app can sign in using an X509 certificate, instead of a textual shared secret/password.
  • Permissões mais restritivas podem ser atribuídas a uma aplicação.More restrictive permissions can be assigned to an app. Normalmente, estas permissões limitam-se apenas ao que a app precisa de fazer, conhecida como o princípio do menor privilégio.Typically, these permissions are restricted to only what the app needs to do, known as the principle of least privilege.
  • Credenciais e permissões não mudam tão frequentemente para uma aplicação como credenciais de utilizador.Credentials and permissions don't change as frequently for an app as user credentials. Por exemplo, quando as responsabilidades do utilizador mudam, os requisitos de senha ditam uma alteração, ou quando um utilizador sai da empresa.For example, when the user's responsibilities change, password requirements dictate a change, or when a user leaves the company.

Começa por criar um novo registo de aplicações no seu diretório, o que cria um objeto principal de serviço associado para representar a identidade da app dentro do diretório.You start by creating a new app registration in your directory, which creates an associated service principal object to represent the app's identity within the directory.

Este artigo começa com o processo de criação e gestão de um diretor de serviço, dependendo do diretório que escolheu para o seu exemplo Azure Stack Hub:This article begins with the process of creating and managing a service principal, depending on the directory you chose for your Azure Stack Hub instance:

  • Diretório Ativo Azure (Azure AD).Azure Active Directory (Azure AD). O Azure AD é o serviço de gestão de identidades e diretórios baseado na cloud de multi-inquilino.Azure AD is a multi-tenant, cloud-based directory, and identity management service. Pode utilizar o Azure AD com uma instância do Azure Stack Hub ligada.You can use Azure AD with a connected Azure Stack Hub instance.
  • Serviços da Federação de Diretórios Ativos (AD FS).Active Directory Federation Services (AD FS). A AD FS fornece capacidades simplificadas e seguras de federação de identidade e web single sign-on (SSO).AD FS provides simplified, secured identity federation, and web single sign-on (SSO) capabilities. Pode utilizar O FS AD com instâncias do Azure Stack Hub ligadas e desligadas.You can use AD FS with both connected and disconnected Azure Stack Hub instances.

Depois aprende-se a atribuir o principal do serviço a um papel, limitando o seu acesso a recursos.Then you learn how to assign the service principal to a role, limiting its resource access.

Gerir uma identidade de aplicativo AD AZureManage an Azure AD app identity

Se implementou o Azure Stack Hub com a Azure AD como seu serviço de gestão de identidade, cria diretores de serviços tal como faz para o Azure.If you deployed Azure Stack Hub with Azure AD as your identity management service, you create service principals just like you do for Azure. Esta secção mostra-lhe como executar os passos através do portal Azure.This section shows you how to perform the steps through the Azure portal. Verifique se tem as permissões AD AZure necessárias antes de começar.Check that you have the required Azure AD permissions before beginning.

Criar um diretor de serviço que usa uma credencial secreta do clienteCreate a service principal that uses a client secret credential

Nesta secção, registe a sua aplicação utilizando o portal Azure, que cria o objeto principal de serviço no seu inquilino AZure AD.In this section, you register your app using the Azure portal, which creates the service principal object in your Azure AD tenant. Neste exemplo, especifica uma credencial secreta do cliente, mas o portal também suporta credenciais baseadas em certificados X509.In this example, you specify a client secret credential, but the portal also supports X509 certificate-based credentials.

  1. Inscreva-se no portal Azure utilizando a sua conta Azure.Sign in to the Azure portal using your Azure account.

  2. Selecione Azure Ative Directory > App registra > novo registo.Select Azure Active Directory > App registrations > New registration.

  3. Forneça um nome para a aplicação.Provide a name for the app.

  4. Selecione os tipos de conta suportados adequados.Select the appropriate Supported account types.

  5. Em Redirect URI, selecione Web como o tipo de aplicação e (opcionalmente) especifique um URI de redirecionamento se a sua aplicação o exigir.Under Redirect URI, select Web as the app type, and (optionally) specify a redirect URI if your app requires it.

  6. Depois de definir os valores, selecione Registar- se.After setting the values, select Register. O registo da aplicação é criado e a página de visão geral apresenta.s.The app registration is created and the Overview page displays.

  7. Copie o ID da aplicação para utilização no seu código de aplicação.Copy the Application ID for use in your app code. Este valor também é referido como o ID do Cliente.This value is also referred to as the Client ID.

  8. Para gerar um segredo de cliente, selecione a página Certificados & segredos.To generate a client secret, select the Certificates & secrets page. Selecione Novo segredo do cliente.Select New client secret.

  9. Forneça uma descrição do segredo, e uma duração expira.Provide a description for the secret, and an expires duration.

  10. Quando terminar, selecione Adicionar.When done, select Add.

  11. O valor das exibições secretas.The value of the secret displays. Copie e guarde este valor em outro local, porque não pode recuperá-lo mais tarde.Copy and save this value in another location, because you can't retrieve it later. Fornece o segredo com o ID da aplicação da aplicação do seu cliente para iniciar sôm.You provide the secret with the Application ID in your client app for sign-in.

    Chave guardada nos segredos dos clientes

Agora, proceda a atribuir uma função para aprender a estabelecer um controlo de acesso baseado em funções para a identidade da app.Now proceed to Assign a role to learn how to establish role-based access control for the app's identity.

Gerir uma identidade de aplicativo AD FSManage an AD FS app identity

Se implementou o Azure Stack Hub com O FS AD como o seu serviço de gestão de identidade, deve utilizar o PowerShell para gerir a identidade da sua aplicação.If you deployed Azure Stack Hub with AD FS as your identity management service, you must use PowerShell to manage your app's identity. Exemplos são fornecidos abaixo para gerir credenciais principais do serviço, demonstrando tanto um certificado X509 como um segredo de cliente.Examples are provided below for managing service principal credentials, demonstrating both an X509 certificate and a client secret.

Os scripts devem ser executados numa consola PowerShell elevada ("Run as administrator"), que abre mais uma sessão para um VM que acolhe um ponto final privilegiado para a sua instância Azure Stack Hub.The scripts must be run in an elevated ("Run as administrator") PowerShell console, which opens another session to a VM that hosts a privileged endpoint for your Azure Stack Hub instance. Uma vez estabelecida a sessão de ponto final privilegiada, os cmdlets adicionais executarão e gerirão o principal serviço.Once the privileged endpoint session has been established, additional cmdlets will execute and manage the service principal. Para obter mais informações sobre o ponto final privilegiado, consulte utilizando o ponto final privilegiado no Azure Stack Hub.For more information about the privileged endpoint, see Using the privileged endpoint in Azure Stack Hub.

Criar um principiante de serviço que utilize uma credencial de certificadoCreate a service principal that uses a certificate credential

Ao criar uma credencial de certificado, devem ser cumpridos os seguintes requisitos:When creating a certificate credential, the following requirements must be met:

  • Para a produção, o certificado deve ser emitido a partir de uma Autoridade de Certificados Internos ou de uma Autoridade de Certificados Públicos.For production, the certificate must be issued from either an internal Certificate Authority or a Public Certificate Authority. Ao utilizar uma autoridade pública, deve incluir a autoridade na imagem do sistema operativo base como parte do Programa Microsoft Trust Root Authority.When using a public authority, you must include the authority in the base operating system image as part of the Microsoft Trusted Root Authority Program. Pode encontrar a lista completa no Microsoft Trusted Root Certificate Program: Participantes.You can find the full list at Microsoft Trusted Root Certificate Program: Participants. Um exemplo da criação de um certificado de teste "auto-assinado" também será mostrado mais tarde durante a Atualização de uma credencial de certificado.An example of creating a "self-signed" test certificate will also be shown later during Update a certificate credential.
  • O fornecedor criptográfico deve ser especificado como um fornecedor de serviços criptográficos (CSP) legado da Microsoft.The cryptographic provider must be specified as a Microsoft legacy Cryptographic Service Provider (CSP) key provider.
  • O formato do certificado deve estar no ficheiro PFX, uma vez que são necessárias as chaves públicas e privadas.The certificate format must be in PFX file, as both the public and private keys are required. Os servidores do Windows utilizam ficheiros .pfx que contêm o ficheiro de chave pública (ficheiro de certificado TLS/SSL) e o ficheiro de chave privada associado.Windows servers use .pfx files that contain the public key file (TLS/SSL certificate file) and the associated private key file.
  • A sua infraestrutura Azure Stack Hub deve ter acesso à rede à localização da Lista de Revogação de Certificados (CRL) da autoridade de certificados publicada no certificado.Your Azure Stack Hub infrastructure must have network access to the certificate authority's Certificate Revocation List (CRL) location published in the certificate. Este CRL deve ser um ponto final HTTP.This CRL must be an HTTP endpoint.

Assim que tiver um certificado, utilize o script PowerShell abaixo para registar a sua aplicação e criar um principal de serviço.Once you have a certificate, use the PowerShell script below to register your app and create a service principal. Também usa o diretor de serviço para iniciar seduca no Azure.You also use the service principal to sign in to Azure. Substitua os seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Marcador de posiçãoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome do VM do ponto final privilegiado na sua instância Azure Stack Hub.The name of the privileged endpoint VM on your Azure Stack Hub instance. "Azs-ERCS01""AzS-ERCS01"
<YourCertificateLocation> A localização do seu certificado X509 na loja de certificados local.The location of your X509 certificate in the local certificate store. "Cert:\CurrentUser\My\AB5A8A3533CC7A2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<YourAppName> Um nome descritivo para o novo registo de aplicações.A descriptive name for the new app registration. "A minha ferramenta de gestão""My management tool"
  1. Abra uma sessão elevada do Windows PowerShell e execute o seguinte script.Open an elevated Windows PowerShell session, and run the following script.

    # Sign in to PowerShell interactively, using credentials that have access to the VM running the Privileged Endpoint (typically <domain>\cloudadmin)
    $Creds = Get-Credential
    
    # Create a PSSession to the Privileged Endpoint VM
    $Session = New-PSSession -ComputerName "<PepVm>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Use the Get-Item cmdlet to retrieve your certificate.
    # If you don't want to use a managed certificate, you can produce a self signed cert for testing purposes: 
    # $Cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=<YourAppName>" -KeySpec KeyExchange
    $Cert = Get-Item "<YourCertificateLocation>"
    
    # Use the privileged endpoint to create the new app registration (and service principal object)
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {New-GraphApplication -Name "<YourAppName>" -ClientCertificates $using:cert}
    $AzureStackInfo = Invoke-Command -Session $Session -ScriptBlock {Get-AzureStackStampInformation}
    $Session | Remove-PSSession
    
    # Using the stamp info for your Azure Stack Hub instance, populate the following variables:
    # - Az endpoint used for Azure Resource Manager operations 
    # - Audience for acquiring an OAuth token used to access Graph API 
    # - GUID of the directory tenant
    $ArmEndpoint = $AzureStackInfo.TenantExternalEndpoints.TenantResourceManager
    $GraphAudience = "https://graph." + $AzureStackInfo.ExternalDomainFQDN + "/"
    $TenantID = $AzureStackInfo.AADTenantID
    
    # Register and set an Az environment that targets your Azure Stack Hub instance
    Add-AzEnvironment -Name "AzureStackUser" -ArmEndpoint $ArmEndpoint
    
    # Sign in using the new service principal
    $SpSignin = Connect-AzAccount -Environment "AzureStackUser" `
    -ServicePrincipal `
    -CertificateThumbprint $SpObject.Thumbprint `
    -ApplicationId $SpObject.ClientId `
    -TenantId $TenantID
    
    # Output the service principal details
    $SpObject
    
    
  2. Após o final do script, exibe a informação de registo da aplicação, incluindo as credenciais do diretor do serviço.After the script finishes, it displays the app registration info, including the service principal's credentials. Os ClientID e Thumbprint são autenticados, e posteriormente autorizados para acesso a recursos geridos pela Azure Resource Manager.The ClientID and Thumbprint are authenticated, and later authorized for access to resources managed by Azure Resource Manager.

    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
    ClientSecret          :
    PSComputerName        : azs-ercs01
    RunspaceId            : a78c76bb-8cae-4db4-a45a-c1420613e01b
    

Mantenha a sessão de consola PowerShell aberta, uma vez que a utiliza com o ApplicationIdentifier valor na secção seguinte.Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

Atualizar uma credencial de certificadoUpdate a certificate credential

Agora que criou um diretor de serviço, esta secção irá mostrar-lhe como:Now that you created a service principal, this section will show you how to:

  1. Crie um novo certificado X509 auto-assinado para testes.Create a new self-signed X509 certificate for testing.
  2. Atualize as credenciais do diretor do serviço, atualizando a sua propriedade Thumbprint para corresponder ao novo certificado.Update the service principal's credentials, by updating its Thumbprint property to match the new certificate.

Atualize a credencial de certificado utilizando o PowerShell, substituindo os seus próprios valores pelos seguintes espaços reservados:Update the certificate credential using PowerShell, substituting your own values for the following placeholders:

Marcador de posiçãoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome do VM do ponto final privilegiado na sua instância Azure Stack Hub.The name of the privileged endpoint VM on your Azure Stack Hub instance. "Azs-ERCS01""AzS-ERCS01"
<YourAppName> Um nome descritivo para o novo registo de aplicações.A descriptive name for the new app registration. "A minha ferramenta de gestão""My management tool"
<YourCertificateLocation> A localização do seu certificado X509 na loja de certificados local.The location of your X509 certificate in the local certificate store. "Cert:\CurrentUser\My\AB5A8A3533CC7A2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<AppIdentifier> O identificador atribuído ao registo de pedidos.The identifier assigned to the application registration. "S-1-5-21-1512385356-3796245103-1243299919-1356""S-1-5-21-1512385356-3796245103-1243299919-1356"
  1. Utilizando a sua sessão elevada do Windows PowerShell, execute os seguintes cmdlets:Using your elevated Windows PowerShell session, run the following cmdlets:

    # Create a PSSession to the PrivilegedEndpoint VM
    $Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Create a self-signed certificate for testing purposes. 
    $NewCert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=<YourAppName>" -KeySpec KeyExchange
    # In production, use Get-Item and a managed certificate instead.
    # $Cert = Get-Item "<YourCertificateLocation>"
    
    # Use the privileged endpoint to update the certificate thumbprint, used by the service principal associated with <AppIdentifier>
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {Set-GraphApplication -ApplicationIdentifier "<AppIdentifier>" -ClientCertificates $using:NewCert}
    $Session | Remove-PSSession
    
    # Output the updated service principal details
    $SpObject
    
  2. Após o final do script, exibe a informação atualizada do registo da aplicação, incluindo o valor de impressão digital para o novo certificado auto-assinado.After the script finishes, it displays the updated app registration info, including the thumbprint value for the new self-signed certificate.

    ApplicationIdentifier : S-1-5-21-1512385356-3796245103-1243299919-1356
    ClientId              : 
    Thumbprint            : AF22EE716909041055A01FE6C6F5C5CDE78948E9
    ApplicationName       : Azurestack-MyApp-c30febe7-1311-4fd8-9077-3d869db28342
    ClientSecret          : 
    PSComputerName        : azs-ercs01
    RunspaceId            : a580f894-8f9b-40ee-aa10-77d4d142b4e5
    

Criar um diretor de serviço que usa credenciais secretas do clienteCreate a service principal that uses client secret credentials

Aviso

Usar um segredo de cliente é menos seguro do que usar uma credencial de certificado X509.Using a client secret is less secure than using an X509 certificate credential. Não só o mecanismo de autenticação é menos seguro, como também requer a incorporação do segredo no código fonte da aplicação do cliente.Not only is the authentication mechanism less secure, but it also typically requires embedding the secret in the client app source code. Como tal, para aplicações de produção, você é fortemente encorajado a usar uma credencial de certificado.As such, for production apps, you're strongly encouraged to use a certificate credential.

Agora cria outro registo de aplicações, mas desta vez especifica uma credencial secreta do cliente.Now you create another app registration, but this time specify a client secret credential. Ao contrário de uma credencial de certificado, o diretório tem a capacidade de gerar uma credencial secreta de cliente.Unlike a certificate credential, the directory has the ability to generate a client secret credential. Em vez de especificar o segredo do cliente, usa o -GenerateClientSecret interruptor para solicitar que seja gerado.Instead of specifying the client secret, you use the -GenerateClientSecret switch to request that it be generated. Substitua os seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Marcador de posiçãoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome do VM do ponto final privilegiado na sua instância Azure Stack Hub.The name of the privileged endpoint VM on your Azure Stack Hub instance. "Azs-ERCS01""AzS-ERCS01"
<YourAppName> Um nome descritivo para o novo registo de aplicações.A descriptive name for the new app registration. "A minha ferramenta de gestão""My management tool"
  1. Abra uma sessão elevada do Windows PowerShell e execute os seguintes cmdlets:Open an elevated Windows PowerShell session, and run the following cmdlets:

    # Sign in to PowerShell interactively, using credentials that have access to the VM running the Privileged Endpoint (typically <domain>\cloudadmin)
    $Creds = Get-Credential
    
    # Create a PSSession to the Privileged Endpoint VM
    $Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Use the privileged endpoint to create the new app registration (and service principal object)
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {New-GraphApplication -Name "<YourAppName>" -GenerateClientSecret}
    $AzureStackInfo = Invoke-Command -Session $Session -ScriptBlock {Get-AzureStackStampInformation}
    $Session | Remove-PSSession
    
    # Using the stamp info for your Azure Stack Hub instance, populate the following variables:
    # - Az endpoint used for Azure Resource Manager operations 
    # - Audience for acquiring an OAuth token used to access Graph API 
    # - GUID of the directory tenant
    $ArmEndpoint = $AzureStackInfo.TenantExternalEndpoints.TenantResourceManager
    $GraphAudience = "https://graph." + $AzureStackInfo.ExternalDomainFQDN + "/"
    $TenantID = $AzureStackInfo.AADTenantID
    
    # Register and set an Az environment that targets your Azure Stack Hub instance
    Add-AzEnvironment -Name "AzureStackUser" -ArmEndpoint $ArmEndpoint
    
    # Sign in using the new service principal
    $securePassword = $SpObject.ClientSecret | ConvertTo-SecureString -AsPlainText -Force
    $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $SpObject.ClientId, $securePassword
    $SpSignin = Connect-AzAccount -Environment "AzureStackUser" -ServicePrincipal -Credential $credential -TenantId $TenantID
    
    # Output the service principal details
    $SpObject
    
  2. Após o final do script, exibe a informação de registo da aplicação, incluindo as credenciais do diretor do serviço.After the script finishes, it displays the app registration info, including the service principal's credentials. Os ClientID e ClientSecret são autenticados, e posteriormente autorizados para acesso a recursos geridos pela Azure Resource Manager.The ClientID and ClientSecret are authenticated, and later authorized for access to resources managed by Azure Resource Manager.

    ApplicationIdentifier : S-1-5-21-1634563105-1224503876-2692824315-2623
    ClientId              : 8e0ffd12-26c8-4178-a74b-f26bd28db601
    Thumbprint            : 
    ApplicationName       : Azurestack-YourApp-6967581b-497e-4f5a-87b5-0c8d01a9f146
    ClientSecret          : 6RUWLRoBw3EebBLgaWGiowCkoko5_j_ujIPjA8dS
    PSComputerName        : azs-ercs01
    RunspaceId            : 286daaa1-c9a6-4176-a1a8-03f543f90998
    

Mantenha a sessão de consola PowerShell aberta, uma vez que a utiliza com o ApplicationIdentifier valor na secção seguinte.Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

Atualizar um segredo de clienteUpdate a client secret

Atualize a credencial secreta do cliente utilizando o PowerShell, utilizando o parâmetro ResetClientSecret, que altera imediatamente o segredo do cliente.Update the client secret credential using PowerShell, using the ResetClientSecret parameter, which immediately changes the client secret. Substitua os seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Marcador de posiçãoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome do VM do ponto final privilegiado na sua instância Azure Stack Hub.The name of the privileged endpoint VM on your Azure Stack Hub instance. "Azs-ERCS01""AzS-ERCS01"
<AppIdentifier> O identificador atribuído ao registo de pedidos.The identifier assigned to the application registration. "S-1-5-21-1634563105-1224503876-2692824315-2623""S-1-5-21-1634563105-1224503876-2692824315-2623"
  1. Utilizando a sua sessão elevada do Windows PowerShell, execute os seguintes cmdlets:Using your elevated Windows PowerShell session, run the following cmdlets:

    # Create a PSSession to the PrivilegedEndpoint VM
    $Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds
    
    # Use the privileged endpoint to update the client secret, used by the service principal associated with <AppIdentifier>
    $SpObject = Invoke-Command -Session $Session -ScriptBlock {Set-GraphApplication -ApplicationIdentifier "<AppIdentifier>" -ResetClientSecret}
    $Session | Remove-PSSession
    
    # Output the updated service principal details
    $SpObject
    
  2. Após o final do script, exibe a informação atualizada do registo da aplicação, incluindo o segredo do cliente recentemente gerado.After the script finishes, it displays the updated app registration info, including the newly generated client secret.

    ApplicationIdentifier : S-1-5-21-1634563105-1224503876-2692824315-2623
    ClientId              : 8e0ffd12-26c8-4178-a74b-f26bd28db601
    Thumbprint            : 
    ApplicationName       : Azurestack-YourApp-6967581b-497e-4f5a-87b5-0c8d01a9f146
    ClientSecret          : MKUNzeL6PwmlhWdHB59c25WDDZlJ1A6IWzwgv_Kn
    PSComputerName        : azs-ercs01
    RunspaceId            : 6ed9f903-f1be-44e3-9fef-e7e0e3f48564
    

Remover um diretor de serviçoRemove a service principal

Agora verá como remover/eliminar um registo de aplicações do seu diretório e o seu principal objeto de serviço associado, utilizando o PowerShell.Now you'll see how to remove/delete an app registration from your directory, and its associated service principal object, using PowerShell.

Substitua os seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Marcador de posiçãoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome do VM do ponto final privilegiado na sua instância Azure Stack Hub.The name of the privileged endpoint VM on your Azure Stack Hub instance. "Azs-ERCS01""AzS-ERCS01"
<AppIdentifier> O identificador atribuído ao registo de pedidos.The identifier assigned to the application registration. "S-1-5-21-1634563105-1224503876-2692824315-2623""S-1-5-21-1634563105-1224503876-2692824315-2623"
# Sign in to PowerShell interactively, using credentials that have access to the VM running the Privileged Endpoint (typically <domain>\cloudadmin)
$Creds = Get-Credential

# Create a PSSession to the PrivilegedEndpoint VM
$Session = New-PSSession -ComputerName "<PepVM>" -ConfigurationName PrivilegedEndpoint -Credential $Creds

# OPTIONAL: Use the privileged endpoint to get a list of applications registered in AD FS
$AppList = Invoke-Command -Session $Session -ScriptBlock {Get-GraphApplication}

# Use the privileged endpoint to remove the application and associated service principal object for <AppIdentifier>
Invoke-Command -Session $Session -ScriptBlock {Remove-GraphApplication -ApplicationIdentifier "<AppIdentifier>"}

Não haverá saída devolvida de chamar o Remove-GraphApplication cmdlet no ponto final privilegiado, mas verá a saída de confirmação verbatim para a consola durante a execução do cmdlet:There will be no output returned from calling the Remove-GraphApplication cmdlet on the privileged endpoint, but you'll see verbatim confirmation output to the console during execution of the cmdlet:

VERBOSE: Deleting graph application with identifier S-1-5-21-1634563105-1224503876-2692824315-2623.
VERBOSE: Remove-GraphApplication : BEGIN on AZS-ADFS01 on ADFSGraphEndpoint
VERBOSE: Application with identifier S-1-5-21-1634563105-1224503876-2692824315-2623 was deleted.
VERBOSE: Remove-GraphApplication : END on AZS-ADFS01 under ADFSGraphEndpoint configuration

Atribuir um papelAssign a role

O acesso aos recursos do Azure por utilizadores e aplicações é autorizado através do Role-Based Access Control (RBAC).Access to Azure resources by users and apps is authorized through Role-Based Access Control (RBAC). Para permitir que uma aplicação aceda a recursos na sua subscrição, tem de atribuir o seu principal de serviço a uma função para um recurso específico.To allow an app to access resources in your subscription, you must assign its service principal to a role for a specific resource. Primeiro, decida qual o papel que representa as permissões certas para a app.First decide which role represents the right permissions for the app. Para conhecer os papéis disponíveis, consulte as funções incorporadas para os recursos da Azure.To learn about the available roles, see Built-in roles for Azure resources.

O tipo de recurso que escolhe também estabelece o âmbito de acesso à aplicação.The type of resource you choose also establishes the access scope for the app. Pode definir o âmbito de acesso ao nível de subscrição, grupo de recursos ou recursos.You can set the access scope at the subscription, resource group, or resource level. As permissões são herdadas para níveis mais baixos de âmbito.Permissions are inherited to lower levels of scope. Por exemplo, adicionar uma aplicação ao papel "Reader" para um grupo de recursos, significa que pode ler o grupo de recursos e quaisquer recursos que contenha.For example, adding an app to the "Reader" role for a resource group, means it can read the resource group and any resources it contains.

  1. Inscreva-se no portal apropriado, com base no diretório especificado durante a instalação do Azure Stack Hub (o portal Azure para AZure AD ou o portal de utilizadores Azure Stack Hub para AD FS, por exemplo).Sign in to the appropriate portal, based on the directory you specified during Azure Stack Hub installation (the Azure portal for Azure AD, or the Azure Stack Hub user portal for AD FS, for example). Neste exemplo, mostramos um utilizador que se inscreveu no portal de utilizadores do Azure Stack Hub.In this example, we show a user signed in to the Azure Stack Hub user portal.

    Nota

    Para adicionar atribuições de funções para um determinado recurso, a sua conta de utilizador deve pertencer a uma função que declare a Microsoft.Authorization/roleAssignments/write permissão.To add role assignments for a given resource, your user account must belong to a role that declares the Microsoft.Authorization/roleAssignments/write permission. Por exemplo, as funções incorporadas do Proprietário ou do Administrador de Acesso ao Utilizador.For example, either the Owner or User Access Administrator built-in roles.

  2. Navegue para o recurso que deseja permitir o acesso da app.Navigate to the resource you wish to allow the app to access. Neste exemplo, atribua o principal de serviço da aplicação a uma função no âmbito de subscrição, selecionando Subscrições, em seguida, uma subscrição específica.In this example, assign the app's service principal to a role at the subscription scope, by selecting Subscriptions, then a specific subscription. Em vez disso, pode selecionar um grupo de recursos ou um recurso específico como uma máquina virtual.You could instead select a resource group, or a specific resource like a virtual machine.

    Selecione subscrição para a atribuição

  3. Selecione a página Access Control (IAM), que é universal em todos os recursos que suportam o RBAC.Select the Access Control (IAM) page, which is universal across all resources that support RBAC.

  4. Selecione + AdicionarSelect + Add

  5. Under Role, escolha o papel que deseja atribuir à app.Under Role, pick the role you wish to assign to the app.

  6. Em Select, procure a sua aplicação utilizando um Nome de Aplicação completo ou parcial.Under Select, search for your app using a full or partial Application Name. Durante o registo, o Nome de Aplicação é gerado como <YourAppName> - <ClientId> Azurestack-.During registration, the Application Name is generated as Azurestack-<YourAppName>-<ClientId>. Por exemplo, se usou um nome de aplicação de App2, e ClientId 2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff foi atribuído durante a criação, o nome completo seria Azurestack-App2-2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff.For example, if you used an application name of App2, and ClientId 2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff was assigned during creation, the full name would be Azurestack-App2-2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff. Pode pesquisar a corda exata, ou uma parte, como Azurestack ou Azurestack-App2.You can search for either the exact string, or a portion, like Azurestack or Azurestack-App2.

  7. Assim que encontrar a aplicação, selecione-a e ela aparecerá em membros Selecionados.Once you find the app, select it and it will show under Selected members.

  8. Selecione Guardar para terminar a atribuição do papel.Select Save to finish assigning the role.

    Atribuir funçãoAssign role

  9. Quando terminada, a aplicação apresentará na lista de principais atribuídos para o âmbito atual, para o papel dado.When finished, the app will show in the list of principals assigned for the current scope, for the given role.

    Papel atribuídoAssigned role

Agora que deu à sua aplicação uma identidade e autorizou-a para acesso a recursos, pode ativar o seu script ou código para iniciar e aceder de forma segura aos recursos do Azure Stack Hub.Now that you've given your app an identity and authorized it for resource access, you can enable your script or code to sign in and securely access Azure Stack Hub resources.

Passos seguintesNext steps

Gerir permissões de utilizadorManage user permissions
Documentação do Diretório Ativo AzureAzure Active Directory Documentation
Active Directory Federation ServicesActive Directory Federation Services