Usar uma identidade de aplicativo para acessar recursos de Azure Stack HubUse an app identity to access Azure Stack Hub resources

Um aplicativo que precisa implantar ou configurar recursos por meio de Azure Resource Manager deve ser representado por 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 usuário é representado por uma entidade de segurança chamada entidade de usuário, um aplicativo é representado por uma entidade 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. A entidade de serviço fornece uma identidade para seu aplicativo, permitindo que você delegue apenas as permissões necessárias para o aplicativo.The service principal provides an identity for your app, allowing you to delegate only the necessary permissions to the app.

Por exemplo, você pode ter um aplicativo de gerenciamento de configuração que usa 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. Nesse cenário, você pode criar uma entidade de serviço, conceder a função de "leitor" para essa entidade de serviço e limitar o aplicativo de gerenciamento de configuração a acesso somente 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.

Visão geralOverview

Como um usuário, um aplicativo deve apresentar as credenciais durante a autenticação.Like a user, an app must present credentials during authentication. Essa autenticação consiste em dois elementos:This authentication consists of two elements:

  • Uma ID de aplicativo, às vezes chamada de ID do cliente.An Application ID, sometimes referred to as a Client ID. Um GUID que identifica exclusivamente o registro do aplicativo em seu locatário Active Directory.A GUID that uniquely identifies the app's registration in your Active Directory tenant.
  • Um segredo associado à ID do aplicativo.A secret associated with the application ID. Você pode gerar uma cadeia de caracteres secreta do cliente (semelhante a uma senha) ou especificar um certificado X509 (que usa 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).

É preferível executar um aplicativo sob sua própria identidade para executá-lo sob a identidade do usuário pelos seguintes motivos:Running an app under its own identity is preferable to running it under the user's identity for the following reasons:

  • Credenciais mais fortes – um aplicativo pode entrar usando um certificado X509, em vez de um segredo compartilhado/senha textual.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 um aplicativo.More restrictive permissions can be assigned to an app. Normalmente, essas permissões são restritas apenas ao que o aplicativo precisa fazer, conhecido como o princípio de privilégios mínimos.Typically, these permissions are restricted to only what the app needs to do, known as the principle of least privilege.
  • As credenciais e as permissões não são alteradas com frequência para um aplicativo como credenciais do usuário.Credentials and permissions don't change as frequently for an app as user credentials. Por exemplo, quando as responsabilidades do usuário mudam, os requisitos de senha determinam uma alteração ou quando um usuário sai da empresa.For example, when the user's responsibilities change, password requirements dictate a change, or when a user leaves the company.

Você começa criando um novo registro de aplicativo em seu diretório, que cria um objeto de entidade de serviço associado para representar a identidade do aplicativo 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 gerenciamento de uma entidade de serviço, dependendo do diretório escolhido para sua instância de Hub de Azure Stack: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:

  • Azure Active Directory (AD do Azure).Azure Active Directory (Azure AD). O Azure AD é um serviço de gerenciamento de identidades e um diretório multilocatário baseado em nuvem.Azure AD is a multi-tenant, cloud-based directory, and identity management service. Você pode usar o Azure AD com uma instância do hub de Azure Stack conectada.You can use Azure AD with a connected Azure Stack Hub instance.
  • Serviços de Federação do Active Directory (AD FS) (AD FS).Active Directory Federation Services (AD FS). O AD FS fornece recursos de SSO (logon único) da Web e simplificados, seguros.AD FS provides simplified, secured identity federation, and web single sign-on (SSO) capabilities. Você pode usar AD FS com instâncias de Hub de Azure Stack conectadas e desconectadas.You can use AD FS with both connected and disconnected Azure Stack Hub instances.

Em seguida, você aprende a atribuir a entidade de serviço a uma função, limitando seu acesso a recursos.Then you learn how to assign the service principal to a role, limiting its resource access.

Gerenciar uma identidade de aplicativo do Azure ADManage an Azure AD app identity

Se você implantou o Hub Azure Stack com o Azure AD como seu serviço de gerenciamento de identidade, você cria entidades de serviço da mesma forma que 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 seção mostra como executar as etapas por meio do portal do Azure.This section shows you how to perform the steps through the Azure portal. Verifique se você tem as permissões necessárias do Azure ad antes de começar.Check that you have the required Azure AD permissions before beginning.

Criar uma entidade de serviço que usa uma credencial de segredo do clienteCreate a service principal that uses a client secret credential

Nesta seção, você registra seu aplicativo usando o portal do Azure, que cria o objeto de entidade de serviço em seu locatário do 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, você especifica uma credencial de segredo do cliente, mas o portal também oferece suporte a credenciais baseadas em certificado X509.In this example, you specify a client secret credential, but the portal also supports X509 certificate-based credentials.

  1. Entre no portal do Azure usando a conta do Azure.Sign in to the Azure portal using your Azure account.

  2. Selecione Azure Active Directory > Registros do aplicativo > Novo registro.Select Azure Active Directory > App registrations > New registration.

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

  4. Selecione os tipos de conta compatíveis apropriados.Select the appropriate Supported account types.

  5. Em URI de redirecionamento, selecione Web como o tipo de aplicativo e (opcionalmente) especifique um URI de redirecionamento se seu aplicativo 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 registrar.After setting the values, select Register. O registro do aplicativo é criado e a página visão geral é exibida.The app registration is created and the Overview page displays.

  7. Copie a ID do aplicativo para uso em seu código do aplicativo.Copy the Application ID for use in your app code. Esse valor também é conhecido como a ID do cliente.This value is also referred to as the Client ID.

  8. Para gerar um segredo do 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 para o segredo e uma duração de expiração .Provide a description for the secret, and an expires duration.

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

  11. O valor do segredo é exibido.The value of the secret displays. Copie e salve esse valor em outro local, porque você não pode recuperá-lo mais tarde.Copy and save this value in another location, because you can't retrieve it later. Você fornece o segredo com a ID do aplicativo em seu aplicativo cliente para entrar.You provide the secret with the Application ID in your client app for sign-in.

    Chave salva nos segredos do cliente

Agora, vá para atribuir uma função para saber como estabelecer o controle de acesso baseado em função para a identidade do aplicativo.Now proceed to Assign a role to learn how to establish role-based access control for the app's identity.

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

Se você implantou o Azure Stack Hub com AD FS como seu serviço de gerenciamento de identidade, você deve usar o PowerShell para gerenciar a identidade do aplicativo.If you deployed Azure Stack Hub with AD FS as your identity management service, you must use PowerShell to manage your app's identity. Os exemplos são fornecidos abaixo para gerenciar as credenciais da entidade de serviço, demonstrando um certificado X509 e um segredo do cliente.Examples are provided below for managing service principal credentials, demonstrating both an X509 certificate and a client secret.

Os scripts devem ser executados em um console do PowerShell com privilégios elevados ("executar como administrador"), que abre outra sessão para uma VM que hospeda um ponto de extremidade com privilégios para sua instância de Hub de Azure Stack.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. Depois que a sessão de ponto de extremidade privilegiado tiver sido estabelecida, cmdlets adicionais serão executados e gerenciarão a entidade de 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 de extremidade privilegiado, consulte usando o ponto de extremidade privilegiado no Hub Azure Stack.For more information about the privileged endpoint, see Using the privileged endpoint in Azure Stack Hub.

Criar uma entidade de serviço que usa uma credencial de certificadoCreate a service principal that uses a certificate credential

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

  • Para produção, o certificado deve ser emitido de uma autoridade de certificação interna ou de uma autoridade de certificação pública.For production, the certificate must be issued from either an internal Certificate Authority or a Public Certificate Authority. Ao usar uma autoridade pública, você deve incluir a autoridade na imagem do sistema operacional base como parte do programa de autoridade raiz confiável da Microsoft.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. Você pode encontrar a lista completa no programa de certificado raiz confiável da Microsoft: participantes.You can find the full list at Microsoft Trusted Root Certificate Program: Participants. Um exemplo de criação de um certificado de teste "autoassinado" também será mostrado posteriormente 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 provedor criptográfico deve ser especificado como um provedor de chaves CSP (provedor de serviços de criptografia) herdado 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 arquivo PFX, pois as chaves pública e privada são necessárias.The certificate format must be in PFX file, as both the public and private keys are required. Os servidores Windows usam arquivos. pfx que contêm o arquivo de chave pública (arquivo de certificado TLS/SSL) e o arquivo 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.
  • Sua infraestrutura de Hub de Azure Stack deve ter acesso à rede para o local da CRL (lista de certificados revogados) da autoridade de certificação 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. Essa CRL deve ser um ponto de extremidade HTTP.This CRL must be an HTTP endpoint.

Depois de ter um certificado, use o script do PowerShell abaixo para registrar seu aplicativo e criar uma entidade de serviço.Once you have a certificate, use the PowerShell script below to register your app and create a service principal. Você também usa a entidade de serviço para entrar no Azure.You also use the service principal to sign in to Azure. Substitua seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Espaço reservadoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome da VM de ponto de extremidade privilegiada em sua instância de Hub de Azure Stack.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourCertificateLocation> O local do certificado X509 no repositório de certificados local.The location of your X509 certificate in the local certificate store. "CERT: \ CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<YourAppName> Um nome descritivo para o novo registro do aplicativo.A descriptive name for the new app registration. "Minha ferramenta de gerenciamento""My management tool"
  1. Abra uma sessão do Windows PowerShell com privilégios elevados e execute o script a seguir.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. Depois que o script for concluído, ele exibirá as informações de registro do aplicativo, incluindo as credenciais da entidade de serviço.After the script finishes, it displays the app registration info, including the service principal's credentials. O ClientID e Thumbprint são autenticados e, posteriormente, autorizados para acesso a recursos gerenciados pelo 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 do console do PowerShell aberta, pois você a usa com o ApplicationIdentifier valor na próxima seção.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 você criou uma entidade de serviço, esta seção lhe mostrará como:Now that you created a service principal, this section will show you how to:

  1. Crie um novo certificado X509 autoassinado para teste.Create a new self-signed X509 certificate for testing.
  2. Atualize as credenciais da entidade de serviço, atualizando sua propriedade de impressão digital para corresponder ao novo certificado.Update the service principal's credentials, by updating its Thumbprint property to match the new certificate.

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

Espaço reservadoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome da VM de ponto de extremidade privilegiada em sua instância de Hub de Azure Stack.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourAppName> Um nome descritivo para o novo registro do aplicativo.A descriptive name for the new app registration. "Minha ferramenta de gerenciamento""My management tool"
<YourCertificateLocation> O local do certificado X509 no repositório de certificados local.The location of your X509 certificate in the local certificate store. "CERT: \ CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<AppIdentifier> O identificador atribuído ao registro do aplicativo.The identifier assigned to the application registration. "S-1-5-21-1512385356-3796245103-1243299919-1356""S-1-5-21-1512385356-3796245103-1243299919-1356"
  1. Usando a 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. Depois que o script for concluído, ele exibirá as informações de registro do aplicativo atualizado, incluindo o valor da impressão digital para o novo certificado autoassinado.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 uma entidade de serviço que usa credenciais de segredo do clienteCreate a service principal that uses client secret credentials

Aviso

Usar um segredo do cliente é menos seguro do que usar uma credencial de certificado X509.Using a client secret is less secure than using an X509 certificate credential. O mecanismo de autenticação não é apenas menos seguro, mas também requer a inserção do segredo no código-fonte do aplicativo 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 aplicativos de produção, você é altamente incentivado a usar uma credencial de certificado.As such, for production apps, you're strongly encouraged to use a certificate credential.

Agora você cria outro registro de aplicativo, mas desta vez especifique uma credencial de segredo 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 de segredo do cliente.Unlike a certificate credential, the directory has the ability to generate a client secret credential. Em vez de especificar o segredo do cliente, use a -GenerateClientSecret opção para solicitar que ele seja gerado.Instead of specifying the client secret, you use the -GenerateClientSecret switch to request that it be generated. Substitua seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Espaço reservadoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome da VM de ponto de extremidade privilegiada em sua instância de Hub de Azure Stack.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourAppName> Um nome descritivo para o novo registro do aplicativo.A descriptive name for the new app registration. "Minha ferramenta de gerenciamento""My management tool"
  1. Abra uma sessão do Windows PowerShell com privilégios elevados 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. Depois que o script for concluído, ele exibirá as informações de registro do aplicativo, incluindo as credenciais da entidade de serviço.After the script finishes, it displays the app registration info, including the service principal's credentials. O ClientID e ClientSecret são autenticados e, posteriormente, autorizados para acesso a recursos gerenciados pelo 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 do console do PowerShell aberta, pois você a usa com o ApplicationIdentifier valor na próxima seção.Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

Atualizar um segredo do clienteUpdate a client secret

Atualize a credencial de segredo do cliente usando o PowerShell, usando 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 seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Espaço reservadoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome da VM de ponto de extremidade privilegiada em sua instância de Hub de Azure Stack.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<AppIdentifier> O identificador atribuído ao registro do aplicativo.The identifier assigned to the application registration. "S-1-5-21-1634563105-1224503876-2692824315-2623""S-1-5-21-1634563105-1224503876-2692824315-2623"
  1. Usando a 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. Depois que o script for concluído, ele exibirá as informações de registro do aplicativo atualizado, incluindo o segredo do cliente recém-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 uma entidade de serviçoRemove a service principal

Agora você verá como remover/excluir um registro de aplicativo do seu diretório e seu objeto de entidade de serviço associado, usando 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 seus próprios valores pelos seguintes espaços reservados:Substitute your own values for the following placeholders:

Espaço reservadoPlaceholder DescriçãoDescription ExemploExample
<PepVM> O nome da VM de ponto de extremidade privilegiada em sua instância de Hub de Azure Stack.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<AppIdentifier> O identificador atribuído ao registro do aplicativo.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á nenhuma saída retornada pela chamada do cmdlet Remove-GraphApplication no ponto de extremidade privilegiado, mas você verá a saída de confirmação textual para o console 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 uma funçãoAssign a role

O acesso aos recursos do Azure por usuários e aplicativos é autorizado por meio do controle de acesso de Role-Based (RBAC).Access to Azure resources by users and apps is authorized through Role-Based Access Control (RBAC). Para permitir que um aplicativo acesse recursos em sua assinatura, você deve atribuir sua entidade 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 função representa as permissões corretas para o aplicativo.First decide which role represents the right permissions for the app. Para saber mais sobre as funções disponíveis, consulte funções internas para recursos do Azure.To learn about the available roles, see Built-in roles for Azure resources.

O tipo de recurso escolhido também estabelece o escopo de acesso para o aplicativo.The type of resource you choose also establishes the access scope for the app. Você pode definir o escopo de acesso na assinatura, no grupo de recursos ou no nível de recurso.You can set the access scope at the subscription, resource group, or resource level. As permissão são herdadas para níveis inferiores do escopo.Permissions are inherited to lower levels of scope. Por exemplo, adicionar um aplicativo à função de "leitor" para um grupo de recursos significa que ele pode ler o grupo de recursos e todos os recursos que ele contém.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. Entre no portal apropriado, com base no diretório especificado durante a instalação Azure Stack Hub (o portal do Azure para o Azure AD ou o portal de usuário do Hub Azure Stack 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 usuário conectado ao portal do usuário do hub de Azure Stack.In this example, we show a user signed in to the Azure Stack Hub user portal.

    Observação

    Para adicionar atribuições de função para um determinado recurso, sua conta de usuário deve pertencer a uma função que declara 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, o proprietário ou as funções internas do administrador de acesso do usuário .For example, either the Owner or User Access Administrator built-in roles.

  2. Navegue até o recurso que você deseja permitir que o aplicativo acesse.Navigate to the resource you wish to allow the app to access. Neste exemplo, atribua a entidade de serviço do aplicativo a uma função no escopo da assinatura, selecionando assinaturas e, em seguida, uma assinatura 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, você 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 a assinatura para atribuição

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

  4. Selecione + AdicionarSelect + Add

  5. Em função, escolha a função que você deseja atribuir ao aplicativo.Under Role, pick the role you wish to assign to the app.

  6. Em selecionar, pesquise seu aplicativo usando um nome de aplicativo completo ou parcial.Under Select, search for your app using a full or partial Application Name. Durante o registro, o nome do aplicativo é gerado como Azurestack- <YourAppName> - <ClientId>.During registration, the Application Name is generated as Azurestack-<YourAppName>-<ClientId>. Por exemplo, se você usou um nome de aplicativo 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. Você pode pesquisar a cadeia de caracteres 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. Depois de encontrar o aplicativo, selecione-o e ele será exibido em Membros selecionados.Once you find the app, select it and it will show under Selected members.

  8. Selecione Salvar para finalizar a atribuição da função.Select Save to finish assigning the role.

    Atribuir funçãoAssign role

  9. Quando terminar, o aplicativo será exibido na lista de entidades de segurança atribuídas para o escopo atual, para a função determinada.When finished, the app will show in the list of principals assigned for the current scope, for the given role.

    Função atribuídaAssigned role

Agora que você concedeu ao seu aplicativo uma identidade e o autorizou para acesso a recursos, você pode habilitar seu script ou código para entrar e acessar com segurança Azure Stack recursos do 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.

Próximas etapasNext steps

Gerenciar permissões de usuárioManage user permissions
Documentação do Azure Active DirectoryAzure Active Directory Documentation
Serviços de Federação do Active Directory (AD FS)Active Directory Federation Services