Korzystanie z tożsamości aplikacji w celu uzyskania dostępu do zasobów centrum Azure StackUse an app identity to access Azure Stack Hub resources

Aplikacja wymagająca wdrożenia lub skonfigurowania zasobów za pomocą Azure Resource Manager musi być reprezentowana przez własną tożsamość.An application that needs to deploy or configure resources through Azure Resource Manager must be represented by its own identity. Tak samo jak użytkownik jest reprezentowany przez podmiot zabezpieczeń o nazwie podmiotu użytkownika, aplikacja jest reprezentowana przez jednostkę usługi.Just as a user is represented by a security principal called a user principal, an app is represented by a service principal. Jednostka usługi zapewnia tożsamość dla aplikacji, co umożliwia delegowanie tylko niezbędnych uprawnień do aplikacji.The service principal provides an identity for your app, allowing you to delegate only the necessary permissions to the app.

Przykładowo może istnieć aplikacja do zarządzania konfiguracją, która używa Azure Resource Manager do spisu zasobów platformy Azure.As an example, you may have a configuration management app that uses Azure Resource Manager to inventory Azure resources. W tym scenariuszu można utworzyć nazwę główną usługi, przyznać rolę "czytelnik" tej jednostce usługi i ograniczyć dostęp do aplikacji do zarządzania konfiguracją.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.

OmówienieOverview

Podobnie jak użytkownik, aplikacja musi przedstawić poświadczenia podczas uwierzytelniania.Like a user, an app must present credentials during authentication. To uwierzytelnianie składa się z dwóch elementów:This authentication consists of two elements:

  • Identyfikator aplikacji, czasami określany jako identyfikator klienta.An Application ID, sometimes referred to as a Client ID. Identyfikator GUID, który jednoznacznie identyfikuje rejestrację aplikacji w dzierżawie Active Directory.A GUID that uniquely identifies the app's registration in your Active Directory tenant.
  • Wpis tajny SKOJARZONY z identyfikatorem aplikacji.A secret associated with the application ID. Można wygenerować ciąg tajny klienta (podobny do hasła) lub określić certyfikat x509 (używany przez jego klucz publiczny).You can either generate a client secret string (similar to a password), or specify an X509 certificate (which uses its public key).

Uruchomienie aplikacji pod własną tożsamością jest preferowane w celu uruchomienia jej w ramach tożsamości użytkownika z następujących powodów:Running an app under its own identity is preferable to running it under the user's identity for the following reasons:

  • Silniejsze poświadczenia — aplikacja może zalogować się przy użyciu certyfikatu x509 zamiast hasła, wspólnego klucza tajnego.Stronger credentials - an app can sign in using an X509 certificate, instead of a textual shared secret/password.
  • Do aplikacji można przypisać bardziej restrykcyjne uprawnienia .More restrictive permissions can be assigned to an app. Zazwyczaj te uprawnienia są ograniczone do działania aplikacji, co jest nazywane zasadą najniższych uprawnień.Typically, these permissions are restricted to only what the app needs to do, known as the principle of least privilege.
  • Poświadczenia i uprawnienia nie są często zmieniane dla aplikacji jako poświadczenia użytkownika.Credentials and permissions don't change as frequently for an app as user credentials. Na przykład po zmianie obowiązków użytkownika wymagania dotyczące haseł powodują zmianę lub czas opuszczenia firmy przez użytkownika.For example, when the user's responsibilities change, password requirements dictate a change, or when a user leaves the company.

Zacznij od utworzenia nowej rejestracji aplikacji w katalogu, która tworzy skojarzony obiekt głównej usługi do reprezentowania tożsamości aplikacji w katalogu.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.

Ten artykuł rozpoczyna się od procesu tworzenia nazwy głównej usługi i zarządzania nią, w zależności od katalogu wybranego dla wystąpienia centrum 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 (Azure AD).Azure Active Directory (Azure AD). Azure AD to wielodostępna, oparta na chmurze usługa do katalogowania tożsamości i zarządzania nimi.Azure AD is a multi-tenant, cloud-based directory, and identity management service. Możesz użyć usługi Azure AD z połączonym wystąpieniem centrum Azure Stack.You can use Azure AD with a connected Azure Stack Hub instance.
  • Active Directory Federation Services (AD FS).Active Directory Federation Services (AD FS). AD FS oferuje uproszczoną, zabezpieczoną Federację tożsamości i funkcję logowania jednokrotnego (SSO) w sieci Web.AD FS provides simplified, secured identity federation, and web single sign-on (SSO) capabilities. AD FS można używać zarówno z podłączonymi, jak i rozłączonymi wystąpieniami centrów Azure Stack.You can use AD FS with both connected and disconnected Azure Stack Hub instances.

Następnie dowiesz się, jak przypisać jednostkę usługi do roli, ograniczając jej dostęp do zasobów.Then you learn how to assign the service principal to a role, limiting its resource access.

Zarządzanie tożsamością aplikacji usługi Azure ADManage an Azure AD app identity

W przypadku wdrożenia centrum Azure Stack w usłudze Azure AD jako usługi zarządzania tożsamościami tworzone są jednostki usługi tak samo jak w przypadku platformy 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. W tej sekcji przedstawiono sposób wykonywania czynności za pomocą Azure Portal.This section shows you how to perform the steps through the Azure portal. Przed rozpoczęciem upewnij się, że masz wymagane uprawnienia usługi Azure AD .Check that you have the required Azure AD permissions before beginning.

Tworzenie jednostki usługi używającej poświadczeń klucza tajnego klientaCreate a service principal that uses a client secret credential

W tej sekcji rejestrujesz aplikację przy użyciu Azure Portal, która tworzy obiekt główny usługi w dzierżawie usługi Azure AD.In this section, you register your app using the Azure portal, which creates the service principal object in your Azure AD tenant. W tym przykładzie określono poświadczenia klucza tajnego klienta, ale Portal obsługuje również poświadczenia certyfikatu x509.In this example, you specify a client secret credential, but the portal also supports X509 certificate-based credentials.

  1. Zaloguj się do Azure Portal przy użyciu konta platformy Azure.Sign in to the Azure portal using your Azure account.

  2. Wybierz pozycję Azure Active Directory > rejestracje aplikacji > nową rejestrację.Select Azure Active Directory > App registrations > New registration.

  3. Podaj nazwę aplikacji.Provide a name for the app.

  4. Wybierz odpowiednie obsługiwane typy kont.Select the appropriate Supported account types.

  5. W obszarze Identyfikator URI przekierowania wybierz pozycję Sieć Web jako typ aplikacji i (opcjonalnie) Określ identyfikator URI przekierowania, jeśli aplikacja go wymaga.Under Redirect URI, select Web as the app type, and (optionally) specify a redirect URI if your app requires it.

  6. Po ustawieniu wartości wybierz pozycję zarejestruj.After setting the values, select Register. Zostanie utworzona Rejestracja aplikacji i zostanie wyświetlona strona Przegląd .The app registration is created and the Overview page displays.

  7. Skopiuj Identyfikator aplikacji do użycia w kodzie aplikacji.Copy the Application ID for use in your app code. Ta wartość jest również określana mianem identyfikatora klienta.This value is also referred to as the Client ID.

  8. Aby wygenerować klucz tajny klienta, wybierz stronę certyfikaty & wpisy tajne .To generate a client secret, select the Certificates & secrets page. Wybierz pozycję Nowy wpis tajny klienta.Select New client secret.

  9. Podaj Opis wpisu tajnego i okres ważności .Provide a description for the secret, and an expires duration.

  10. Po zakończeniu wybierz pozycję Dodaj.When done, select Add.

  11. Wartość wpisu tajnego.The value of the secret displays. Skopiuj i Zapisz tę wartość w innej lokalizacji, ponieważ nie można pobrać jej później.Copy and save this value in another location, because you can't retrieve it later. Podaj klucz tajny z IDENTYFIKATORem aplikacji w aplikacji klienckiej, aby móc się zalogować.You provide the secret with the Application ID in your client app for sign-in.

    Zapisany klucz w kluczach tajnych klienta

Teraz możesz przystąpić do przypisywania roli , aby dowiedzieć się, jak ustanowić kontrolę dostępu opartą na rolach dla tożsamości aplikacji.Now proceed to Assign a role to learn how to establish role-based access control for the app's identity.

Zarządzanie tożsamością aplikacji AD FSManage an AD FS app identity

Jeśli wdrożono Azure Stack centrum z AD FS jako usługą zarządzania tożsamościami, musisz użyć programu PowerShell do zarządzania tożsamością swojej aplikacji.If you deployed Azure Stack Hub with AD FS as your identity management service, you must use PowerShell to manage your app's identity. Poniżej przedstawiono przykłady dotyczące zarządzania poświadczeniami nazwy głównej usługi, pokazując zarówno certyfikat x509, jak i klucz tajny klienta.Examples are provided below for managing service principal credentials, demonstrating both an X509 certificate and a client secret.

Skrypty muszą być uruchamiane w konsoli programu PowerShell z podwyższonym poziomem uprawnień ("Uruchom jako administrator"), która otwiera kolejną sesję do maszyny wirtualnej, która hostuje uprzywilejowany punkt końcowy dla wystąpienia Azure Stack centrum.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. Po ustanowieniu sesji uprzywilejowanego punktu końcowego zostaną wykonane dodatkowe polecenia cmdlet i będzie ona zarządzać jednostką usługi.Once the privileged endpoint session has been established, additional cmdlets will execute and manage the service principal. Aby uzyskać więcej informacji na temat uprzywilejowanego punktu końcowego, zobacz Używanie uprzywilejowanego punktu końcowego w centrum Azure Stack.For more information about the privileged endpoint, see Using the privileged endpoint in Azure Stack Hub.

Tworzenie jednostki usługi, która używa poświadczeń certyfikatuCreate a service principal that uses a certificate credential

Podczas tworzenia poświadczenia certyfikatu muszą zostać spełnione następujące wymagania:When creating a certificate credential, the following requirements must be met:

  • W przypadku produkcji certyfikat musi być wystawiony przez wewnętrzny urząd certyfikacji lub publiczny urząd certyfikacji.For production, the certificate must be issued from either an internal Certificate Authority or a Public Certificate Authority. W przypadku korzystania z urzędu publicznego należy uwzględnić urząd w podstawowym obrazie systemu operacyjnego w ramach programu zaufanego głównego urzędu certyfikacji firmy 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. Pełną listę można znaleźć w programie certyfikatów zaufanych głównych firmy Microsoft: uczestnicy.You can find the full list at Microsoft Trusted Root Certificate Program: Participants. Przykład utworzenia certyfikatu testowego z podpisem własnym zostanie również wyświetlony później podczas aktualizacji poświadczenia certyfikatu.An example of creating a "self-signed" test certificate will also be shown later during Update a certificate credential.
  • Dostawca usług kryptograficznych musi być określony jako dostawca klucza dostawcy usług kryptograficznych (CSP) firmy Microsoft.The cryptographic provider must be specified as a Microsoft legacy Cryptographic Service Provider (CSP) key provider.
  • Format certyfikatu musi być w pliku PFX, ponieważ wymagane są zarówno klucze publiczne, jak i prywatne.The certificate format must be in PFX file, as both the public and private keys are required. Serwery z systemem Windows używają plików PFX zawierających plik klucza publicznego (plik certyfikatu TLS/SSL) i skojarzony plik klucza prywatnego.Windows servers use .pfx files that contain the public key file (TLS/SSL certificate file) and the associated private key file.
  • Infrastruktura Centrum Azure Stack musi mieć dostęp sieciowy do lokalizacji listy odwołania certyfikatów (CRL) urzędu certyfikacji, która została opublikowana w certyfikacie.Your Azure Stack Hub infrastructure must have network access to the certificate authority's Certificate Revocation List (CRL) location published in the certificate. Ta lista CRL musi być punktem końcowym protokołu HTTP.This CRL must be an HTTP endpoint.

Po uzyskaniu certyfikatu Użyj poniższego skryptu programu PowerShell, aby zarejestrować aplikację i utworzyć nazwę główną usługi.Once you have a certificate, use the PowerShell script below to register your app and create a service principal. Aby zalogować się do platformy Azure, należy również użyć nazwy głównej usługi.You also use the service principal to sign in to Azure. Podstaw własne wartości dla następujących symboli zastępczych:Substitute your own values for the following placeholders:

Symbol zastępczyPlaceholder OpisDescription PrzykładExample
<PepVM> Nazwa maszyny wirtualnej z uprzywilejowanym punktem końcowym w wystąpieniu Azure Stack centrum.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourCertificateLocation> Lokalizacja certyfikatu x509 w lokalnym magazynie certyfikatów.The location of your X509 certificate in the local certificate store. "CERT: \ CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<YourAppName> Opisowa nazwa nowej rejestracji aplikacji.A descriptive name for the new app registration. "Moje narzędzie do zarządzania""My management tool"
  1. Otwórz sesję programu Windows PowerShell z podwyższonym poziomem uprawnień i uruchom poniższy skrypt.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. Po zakończeniu działania skryptu zostaną wyświetlone informacje o rejestracji aplikacji, w tym poświadczenia jednostki usługi.After the script finishes, it displays the app registration info, including the service principal's credentials. Usługi ClientID i Thumbprint są uwierzytelniane i później autoryzowane na potrzeby dostępu do zasobów zarządzanych przez 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
    

Należy pamiętać, aby sesja konsoli programu PowerShell była otwarta, gdy jest używana z ApplicationIdentifier wartością w następnej sekcji.Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

Aktualizowanie poświadczeń certyfikatuUpdate a certificate credential

Teraz, po utworzeniu jednostki usługi, w tej sekcji opisano, jak:Now that you created a service principal, this section will show you how to:

  1. Utwórz nowy certyfikat x509 z podpisem własnym na potrzeby testowania.Create a new self-signed X509 certificate for testing.
  2. Zaktualizuj poświadczenia jednostki usługi, aktualizując Właściwość odcisku palca tak, aby była zgodna z nowym certyfikatem.Update the service principal's credentials, by updating its Thumbprint property to match the new certificate.

Zaktualizuj poświadczenia certyfikatu przy użyciu programu PowerShell, zastępując własne wartości dla następujących symboli zastępczych:Update the certificate credential using PowerShell, substituting your own values for the following placeholders:

Symbol zastępczyPlaceholder OpisDescription PrzykładExample
<PepVM> Nazwa maszyny wirtualnej z uprzywilejowanym punktem końcowym w wystąpieniu Azure Stack centrum.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourAppName> Opisowa nazwa nowej rejestracji aplikacji.A descriptive name for the new app registration. "Moje narzędzie do zarządzania""My management tool"
<YourCertificateLocation> Lokalizacja certyfikatu x509 w lokalnym magazynie certyfikatów.The location of your X509 certificate in the local certificate store. "CERT: \ CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34""Cert:\CurrentUser\My\AB5A8A3533CC7AA2025BF05120117E06DE407B34"
<AppIdentifier> Identyfikator przypisany do rejestracji aplikacji.The identifier assigned to the application registration. "S-1-5-21-1512385356-3796245103-1243299919-1356""S-1-5-21-1512385356-3796245103-1243299919-1356"
  1. Korzystając z podwyższonej poziomu sesji środowiska Windows PowerShell, uruchom następujące polecenia cmdlet: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. Po zakończeniu działania skryptu zostaną wyświetlone zaktualizowane informacje o rejestracji aplikacji, w tym wartość odcisku palca nowego certyfikatu z podpisem własnym.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
    

Tworzenie nazwy głównej usługi używającej poświadczeń klucza tajnego klientaCreate a service principal that uses client secret credentials

Ostrzeżenie

Użycie klucza tajnego klienta jest mniej bezpieczne niż przy użyciu poświadczeń certyfikatu x509.Using a client secret is less secure than using an X509 certificate credential. Mechanizm uwierzytelniania jest mniej bezpieczny, ale zazwyczaj wymaga osadzania wpisu tajnego w kodzie źródłowym aplikacji klienta.Not only is the authentication mechanism less secure, but it also typically requires embedding the secret in the client app source code. W związku z tym w przypadku aplikacji produkcyjnych zdecydowanie zaleca się korzystanie z poświadczeń certyfikatu.As such, for production apps, you're strongly encouraged to use a certificate credential.

Teraz utworzysz kolejną rejestrację aplikacji, ale tym razem podasz poświadczenia klucza tajnego klienta.Now you create another app registration, but this time specify a client secret credential. W przeciwieństwie do poświadczeń certyfikatu, katalog ma możliwość generowania poświadczeń klucza tajnego klienta.Unlike a certificate credential, the directory has the ability to generate a client secret credential. Zamiast określać klucz tajny klienta, należy użyć -GenerateClientSecret przełącznika, aby zażądać jego wygenerowania.Instead of specifying the client secret, you use the -GenerateClientSecret switch to request that it be generated. Podstaw własne wartości dla następujących symboli zastępczych:Substitute your own values for the following placeholders:

Symbol zastępczyPlaceholder OpisDescription PrzykładExample
<PepVM> Nazwa maszyny wirtualnej z uprzywilejowanym punktem końcowym w wystąpieniu Azure Stack centrum.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<YourAppName> Opisowa nazwa nowej rejestracji aplikacji.A descriptive name for the new app registration. "Moje narzędzie do zarządzania""My management tool"
  1. Otwórz sesję programu Windows PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenia cmdlet: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. Po zakończeniu działania skryptu zostaną wyświetlone informacje o rejestracji aplikacji, w tym poświadczenia jednostki usługi.After the script finishes, it displays the app registration info, including the service principal's credentials. Usługi ClientID i ClientSecret są uwierzytelniane i później autoryzowane na potrzeby dostępu do zasobów zarządzanych przez 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
    

Należy pamiętać, aby sesja konsoli programu PowerShell była otwarta, gdy jest używana z ApplicationIdentifier wartością w następnej sekcji.Keep your PowerShell console session open, as you use it with the ApplicationIdentifier value in the next section.

Aktualizowanie klucza tajnego klientaUpdate a client secret

Zaktualizuj poświadczenia klucza tajnego klienta przy użyciu programu PowerShell, używając parametru ResetClientSecret , który natychmiast zmienia klucz tajny klienta.Update the client secret credential using PowerShell, using the ResetClientSecret parameter, which immediately changes the client secret. Podstaw własne wartości dla następujących symboli zastępczych:Substitute your own values for the following placeholders:

Symbol zastępczyPlaceholder OpisDescription PrzykładExample
<PepVM> Nazwa maszyny wirtualnej z uprzywilejowanym punktem końcowym w wystąpieniu Azure Stack centrum.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<AppIdentifier> Identyfikator przypisany do rejestracji aplikacji.The identifier assigned to the application registration. "S-1-5-21-1634563105-1224503876-2692824315-2623""S-1-5-21-1634563105-1224503876-2692824315-2623"
  1. Korzystając z podwyższonej poziomu sesji środowiska Windows PowerShell, uruchom następujące polecenia cmdlet: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. Po zakończeniu działania skryptu zostaną wyświetlone zaktualizowane informacje o rejestracji aplikacji, w tym nowo wygenerowany klucz tajny klienta.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
    

Usuwanie nazwy głównej usługiRemove a service principal

Teraz zobaczysz, jak usunąć/usunąć rejestrację aplikacji z katalogu oraz skojarzoną z nią obiekt główny usługi przy użyciu programu PowerShell.Now you'll see how to remove/delete an app registration from your directory, and its associated service principal object, using PowerShell.

Podstaw własne wartości dla następujących symboli zastępczych:Substitute your own values for the following placeholders:

Symbol zastępczyPlaceholder OpisDescription PrzykładExample
<PepVM> Nazwa maszyny wirtualnej z uprzywilejowanym punktem końcowym w wystąpieniu Azure Stack centrum.The name of the privileged endpoint VM on your Azure Stack Hub instance. "AzS-ERCS01""AzS-ERCS01"
<AppIdentifier> Identyfikator przypisany do rejestracji aplikacji.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>"}

Nie zostaną zwrócone żadne dane wyjściowe z wywołania polecenia cmdlet Remove-GraphApplication w punkcie końcowym Privileged, ale po wykonaniu polecenia cmdlet zobaczysz dane wyjściowe potwierdzenia Verbatim: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

Przypisywanie roliAssign a role

Dostęp do zasobów platformy Azure według użytkowników i aplikacji jest autoryzowany za pomocą Role-Based Access Control (RBAC).Access to Azure resources by users and apps is authorized through Role-Based Access Control (RBAC). Aby umożliwić aplikacji dostęp do zasobów w ramach subskrypcji, należy przypisać jej jednostkę usługi do roli dla określonego zasobu.To allow an app to access resources in your subscription, you must assign its service principal to a role for a specific resource. Najpierw zdecyduj, która rola reprezentuje odpowiednie uprawnienia do aplikacji.First decide which role represents the right permissions for the app. Aby dowiedzieć się więcej o dostępnych rolach, zobacz wbudowane role dla zasobów platformy Azure.To learn about the available roles, see Built-in roles for Azure resources.

Wybrany typ zasobu określa również zakres dostępu dla aplikacji.The type of resource you choose also establishes the access scope for the app. Zakres dostępu można ustawić na poziomie subskrypcji, grupy zasobów lub zasobu.You can set the access scope at the subscription, resource group, or resource level. Uprawnienia są dziedziczone do niższych poziomów zakresu.Permissions are inherited to lower levels of scope. Na przykład dodanie aplikacji do roli "czytelnik" dla grupy zasobów oznacza, że może ona odczytać grupę zasobów i wszystkie zawarte w niej zasoby.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. Zaloguj się do odpowiedniego portalu na podstawie katalogu określonego podczas instalacji centrum Azure Stack (Azure Portal dla usługi Azure AD lub portalu użytkowników centrum Azure Stack dla AD FS, na przykład).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). W tym przykładzie pokazano, że użytkownik zalogował się do portalu użytkowników centrum Azure Stack.In this example, we show a user signed in to the Azure Stack Hub user portal.

    Uwaga

    Aby dodać przypisania ról dla danego zasobu, konto użytkownika musi należeć do roli, która deklaruje Microsoft.Authorization/roleAssignments/write uprawnienie.To add role assignments for a given resource, your user account must belong to a role that declares the Microsoft.Authorization/roleAssignments/write permission. Na przykład role wbudowane administratora dostępu właściciela lub użytkownika.For example, either the Owner or User Access Administrator built-in roles.

  2. Przejdź do zasobu, do którego chcesz zezwolić na dostęp do aplikacji.Navigate to the resource you wish to allow the app to access. W tym przykładzie Przypisz jednostkę usługi aplikacji do roli w zakresie subskrypcji, wybierając pozycję subskrypcje, a następnie określoną subskrypcję.In this example, assign the app's service principal to a role at the subscription scope, by selecting Subscriptions, then a specific subscription. Zamiast tego można wybrać grupę zasobów lub określony zasób, na przykład maszynę wirtualną.You could instead select a resource group, or a specific resource like a virtual machine.

    Wybierz subskrypcję do przypisania

  3. Wybierz stronę Access Control (IAM) , która jest uniwersalna dla wszystkich zasobów, które obsługują RBAC.Select the Access Control (IAM) page, which is universal across all resources that support RBAC.

  4. Wybierz pozycję + DodajSelect + Add

  5. W obszarze rola wybierz rolę, którą chcesz przypisać do aplikacji.Under Role, pick the role you wish to assign to the app.

  6. W obszarze Wybierz Wyszukaj swoją aplikację przy użyciu pełnej lub częściowej nazwy aplikacji.Under Select, search for your app using a full or partial Application Name. Podczas rejestracji nazwa aplikacji jest generowana jako Azurestack- <YourAppName> - <ClientId>.During registration, the Application Name is generated as Azurestack-<YourAppName>-<ClientId>. Jeśli na przykład użyto nazwy aplikacji APP2 i ClientId 2bbe67d8-3fdb-4b62-87cf-cc41dd4344ff została przypisana podczas tworzenia, pełna nazwa będzie 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. Można wyszukać dokładny ciąg lub część, np. Azurestack lub Azurestack-APP2.You can search for either the exact string, or a portion, like Azurestack or Azurestack-App2.

  7. Po znalezieniu aplikacji wybierz ją, która będzie widoczna w obszarze wybrane elementy członkowskie.Once you find the app, select it and it will show under Selected members.

  8. Wybierz pozycję Zapisz , aby zakończyć Przypisywanie roli.Select Save to finish assigning the role.

    Przypisywanie roliAssign role

  9. Po zakończeniu aplikacja będzie wyświetlana na liście podmiotów zabezpieczeń przypisanych do bieżącego zakresu dla danej roli.When finished, the app will show in the list of principals assigned for the current scope, for the given role.

    Przypisana rolaAssigned role

Teraz, gdy znasz aplikację jako tożsamość i masz do niej uprawnienia dostępu do zasobów, możesz włączyć skrypt lub kod w celu zalogowania się i bezpiecznego dostępu Azure Stack zasobów centrum.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.

Następne krokiNext steps

Zarządzanie uprawnieniami użytkownikówManage user permissions
Dokumentacja Azure Active DirectoryAzure Active Directory Documentation
Usługi Active Directory Federation ServicesActive Directory Federation Services