Integrowanie tożsamości usług AD FS z centrum danych usługi Azure Stack Hub

Usługę Azure Stack Hub można wdrożyć przy użyciu identyfikatora Microsoft Entra lub Active Directory Federation Services (AD FS) jako dostawcy tożsamości. Przed wdrożeniem usługi Azure Stack Hub należy dokonać wyboru. W połączonym scenariuszu możesz wybrać Microsoft Entra identyfikatora lub usług AD FS. W przypadku scenariusza rozłączonego obsługiwane są tylko usługi AD FS. W tym artykule pokazano, jak zintegrować usługi Azure Stack Hub AD FS z usługami AD FS centrum danych.

Ważne

Nie można przełączyć dostawcy tożsamości bez ponownego wdrożenia całego rozwiązania usługi Azure Stack Hub.

Active Directory Federation Services i graf

Wdrażanie przy użyciu usług AD FS umożliwia tożsamościom w istniejącym lesie usługi Active Directory uwierzytelnianie przy użyciu zasobów w usłudze Azure Stack Hub. Ten istniejący las usługi Active Directory wymaga wdrożenia usług AD FS, aby umożliwić utworzenie zaufania federacyjnego usług AD FS.

Uwierzytelnianie jest jedną częścią tożsamości. Aby zarządzać kontrolą dostępu opartą na rolach (RBAC) w usłudze Azure Stack Hub, należy skonfigurować składnik programu Graph. Gdy dostęp do zasobu jest delegowany, składnik programu Graph wyszukuje konto użytkownika w istniejącym lesie usługi Active Directory przy użyciu protokołu LDAP.

Architektura usług AD FS usługi Azure Stack Hub

Istniejące usługi AD FS to usługa tokenu zabezpieczającego konta (STS), która wysyła oświadczenia do usług AD FS usługi Azure Stack Hub (zasób STS). W usłudze Azure Stack Hub automatyzacja tworzy zaufanie dostawcy oświadczeń z punktem końcowym metadanych dla istniejących usług AD FS.

W istniejących usługach AD FS należy skonfigurować zaufanie jednostki uzależnionej. Ten krok nie jest wykonywany przez automatyzację i musi być skonfigurowany przez operatora. Punkt końcowy adresu VIP usługi Azure Stack Hub dla usług AD FS można utworzyć przy użyciu wzorca https://adfs.<Region>.<ExternalFQDN>/.

Konfiguracja zaufania jednostki uzależnionej wymaga również skonfigurowania reguł przekształcania oświadczeń udostępnianych przez firmę Microsoft.

W przypadku konfiguracji programu Graph należy podać konto usługi z uprawnieniem "odczyt" w istniejącej usłudze Active Directory. To konto jest wymagane jako dane wejściowe automatyzacji w celu włączenia scenariuszy RBAC.

W ostatnim kroku nowy właściciel jest skonfigurowany dla domyślnej subskrypcji dostawcy. To konto ma pełny dostęp do wszystkich zasobów po zalogowaniu się do portalu administratora usługi Azure Stack Hub.

Wymagania:

Składnik Wymaganie
Graph Microsoft Active Directory 2012/2012 R2/2016 2019
AD FS Windows Server 2012/2012 R2/2016 2019

Konfigurowanie integracji programu Graph

Program Graph obsługuje tylko integrację z pojedynczym lasem usługi Active Directory. Jeśli istnieje wiele lasów, tylko las określony w konfiguracji będzie używany do pobierania użytkowników i grup.

Następujące informacje są wymagane jako dane wejściowe dla parametrów automatyzacji:

Parametr Parametr arkusza wdrażania Opis Przykład
CustomADGlobalCatalog Nazwa FQDN lasu usług AD FS Nazwa FQDN docelowego lasu usługi Active Directory, z którym chcesz zintegrować Contoso.com
CustomADAdminCredentials Użytkownik z uprawnieniem do odczytu LDAP graphservice

Konfigurowanie lokacji usługi Active Directory

W przypadku wdrożeń usługi Active Directory z wieloma lokacjami skonfiguruj najbliższą lokację usługi Active Directory do wdrożenia usługi Azure Stack Hub. Konfiguracja unika używania usługi Azure Stack Hub Graph do rozwiązywania zapytań przy użyciu serwera wykazu globalnego z lokacji zdalnej.

Dodaj podsieć sieci publicznych adresów VIP usługi Azure Stack Hub do lokacji usługi Active Directory znajdującej się najbliżej usługi Azure Stack Hub. Załóżmy na przykład, że usługa Active Directory ma dwie witryny: Seattle i Redmond. Jeśli usługa Azure Stack Hub jest wdrożona w lokacji Seattle, należy dodać podsieć sieci publicznych adresów VIP usługi Azure Stack Hub do lokacji usługi Active Directory dla Seattle.

Aby uzyskać więcej informacji na temat lokacji usługi Active Directory, zobacz Projektowanie topologii lokacji.

Uwaga

Jeśli usługa Active Directory składa się z jednej lokacji, możesz pominąć ten krok. Jeśli skonfigurowano podsieć catch-all, sprawdź, czy podsieć sieci publicznych adresów VIP usługi Azure Stack Hub nie jest jej częścią.

Tworzenie konta użytkownika w istniejącej usłudze Active Directory (opcjonalnie)

Opcjonalnie możesz utworzyć konto dla usługi Graph w istniejącej usłudze Active Directory. Wykonaj ten krok, jeśli nie masz jeszcze konta, którego chcesz użyć.

  1. W istniejącej usłudze Active Directory utwórz następujące konto użytkownika (zalecenie):

    • Nazwa użytkownika: graphservice
    • Hasło: użyj silnego hasła i skonfiguruj hasło, aby nigdy nie wygasało.

    Nie są wymagane żadne specjalne uprawnienia ani członkostwo.

Wyzwalanie automatyzacji w celu skonfigurowania grafu

W tej procedurze użyj komputera w sieci centrum danych, który może komunikować się z uprzywilejowanym punktem końcowym w usłudze Azure Stack Hub.

  1. Otwórz sesję z podwyższonym poziomem uprawnień Windows PowerShell (uruchom jako administrator) i połącz się z adresem IP uprzywilejowanego punktu końcowego. Użyj poświadczeń dla usługi CloudAdmin , aby się uwierzytelnić.

    $creds = Get-Credential
    $pep = New-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
  2. Teraz, gdy masz sesję z uprzywilejowanym punktem końcowym, uruchom następujące polecenie:

    Uruchom poniższy skrypt dla kompilacji usługi Azure Stack Hub 2008 i nowszej

     $i = @(
            [pscustomobject]@{ 
                      CustomADGlobalCatalog="fabrikam.com"
                      CustomADAdminCredential= Get-Credential -Message "Do not include the domain name of the graphservice account in the username."
                      SkipRootDomainValidation = $false 
                      ValidateParameters = $true
                    }) 
    
     Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -customCatalog $using:i} 
    
    
    

    Uruchom poniższy skrypt dla kompilacji usługi Azure Stack Hub przed 2008 r.

    Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -CustomADGlobalCatalog contoso.com} 
    
    
    

    Po wyświetleniu monitu określ poświadczenia dla konta użytkownika, którego chcesz użyć dla usługi Graph (np. graphservice). Dane wejściowe polecenia cmdlet Register-DirectoryService muszą być nazwą lasu /domeną główną w lesie, a nie inną domeną w lesie.

    Ważne

    Poczekaj na wyskakujące okienko poświadczeń (Get-Credential nie jest obsługiwane w uprzywilejowanym punkcie końcowym) i wprowadź poświadczenia konta usługi programu Graph.

  3. Polecenie cmdlet Register-DirectoryService ma opcjonalne parametry, których można użyć w niektórych scenariuszach, w których istniejąca walidacja usługi Active Directory kończy się niepowodzeniem. Po wykonaniu tego polecenia cmdlet sprawdza, czy podana domena jest domeną główną, można uzyskać dostęp do serwera wykazu globalnego i że podane konto ma dostęp do odczytu.

    Parametr Opis
    SkipRootDomainValidation Określa, że domena podrzędna musi być używana zamiast zalecanej domeny głównej.
    ValidateParameters Pomija wszystkie kontrole poprawności.

Protokoły i porty programu Graph

Usługa programu Graph w usłudze Azure Stack Hub używa następujących protokołów i portów do komunikowania się z zapisywalnym serwerem wykazu globalnego (GC) i centrum dystrybucji kluczy (KDC), które mogą przetwarzać żądania logowania w docelowym lesie usługi Active Directory.

Usługa Graph w usłudze Azure Stack Hub używa następujących protokołów i portów do komunikowania się z docelową usługą Active Directory:

Typ Port Protokół
LDAP 389 TCP & UDP
LDAP SSL 636 TCP
LDAP GC 3268 TCP
LDAP GC SSL 3269 TCP

Konfigurowanie integracji usług AD FS przez pobranie metadanych federacji

Następujące informacje są wymagane jako dane wejściowe dla parametrów automatyzacji:

Parametr Parametr arkusza wdrażania Opis Przykład
CustomAdfsName Nazwa dostawcy usług AD FS Nazwa dostawcy oświadczeń.
Wygląda to w ten sposób na stronie docelowej usług AD FS.
Contoso
CustomAD
FSFederationMetadataEndpointUri
Identyfikator URI metadanych usług AD FS Link metadanych federacji. https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml
SigningCertificateRevocationCheck NA Opcjonalny parametr do pomijania sprawdzania listy CRL. Brak

Wyzwalanie automatyzacji w celu skonfigurowania zaufania dostawcy oświadczeń w usłudze Azure Stack Hub (przez pobranie metadanych federacji)

W tej procedurze należy użyć komputera, który może komunikować się z uprzywilejowanym punktem końcowym w usłudze Azure Stack Hub. Oczekuje się, że certyfikat używany przez konto STS AD FS jest zaufany przez usługę Azure Stack Hub.

  1. Otwórz sesję Windows PowerShell z podwyższonym poziomem uprawnień i połącz się z uprzywilejowanym punktem końcowym.

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Po nawiązaniu połączenia z uprzywilejowanym punktem końcowym uruchom następujące polecenie przy użyciu parametrów odpowiednich dla danego środowiska:

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataEndpointUri "https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml"
    
  3. Uruchom następujące polecenie, aby zaktualizować właściciela domyślnej subskrypcji dostawcy przy użyciu parametrów odpowiednich dla danego środowiska:

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "administrator@contoso.com"
    

Konfigurowanie integracji z usługami AD FS przez udostępnienie pliku metadanych federacji

Począwszy od wersji 1807, użyj tej metody, jeśli spełniony jest jeden z następujących warunków:

  • Łańcuch certyfikatów różni się w przypadku usług AD FS w porównaniu do wszystkich innych punktów końcowych w usłudze Azure Stack Hub.
  • Nie ma łączności sieciowej z istniejącym serwerem usług AD FS z wystąpienia usług AD FS usługi Azure Stack Hub.

Następujące informacje są wymagane jako dane wejściowe dla parametrów automatyzacji:

Parametr Opis Przykład
CustomAdfsName Nazwa dostawcy oświadczeń. Wygląda to w ten sposób na stronie docelowej usług AD FS. Contoso
CustomADFSFederationMetadataFileContent Zawartość metadanych. $using:federationMetadataFileContent

Tworzenie pliku metadanych federacji

W przypadku poniższej procedury należy użyć komputera, który ma łączność sieciową z istniejącym wdrożeniem usług AD FS, które staje się kontem STS. Należy również zainstalować niezbędne certyfikaty.

  1. Otwórz sesję Windows PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie przy użyciu parametrów odpowiednich dla danego środowiska:

     $url = "https://win-SQOOJN70SGL.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml"
     $webclient = New-Object System.Net.WebClient
     $webclient.Encoding = [System.Text.Encoding]::UTF8
     $metadataAsString = $webclient.DownloadString($url)
     Set-Content -Path c:\metadata.xml -Encoding UTF8 -Value $metadataAsString
    
  2. Skopiuj plik metadanych na komputer, który może komunikować się z uprzywilejowanym punktem końcowym.

Wyzwalanie automatyzacji w celu skonfigurowania zaufania dostawcy oświadczeń w usłudze Azure Stack Hub (przy użyciu pliku metadanych federacji)

W tej procedurze należy użyć komputera, który może komunikować się z uprzywilejowanym punktem końcowym w usłudze Azure Stack Hub i ma dostęp do pliku metadanych utworzonego w poprzednim kroku.

  1. Otwórz sesję Windows PowerShell z podwyższonym poziomem uprawnień i połącz się z uprzywilejowanym punktem końcowym.

    $federationMetadataFileContent = get-content c:\metadata.xml
    $creds=Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Po nawiązaniu połączenia z uprzywilejowanym punktem końcowym uruchom następujące polecenie przy użyciu parametrów odpowiednich dla danego środowiska:

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataFileContent $using:federationMetadataFileContent
    
  3. Uruchom następujące polecenie, aby zaktualizować właściciela domyślnej subskrypcji dostawcy. Użyj parametrów odpowiednich dla danego środowiska.

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "administrator@contoso.com"
    

    Uwaga

    Po obróceniu certyfikatu w istniejących usługach AD FS (konto STS) należy ponownie skonfigurować integrację usług AD FS. Należy skonfigurować integrację, nawet jeśli punkt końcowy metadanych jest osiągalny lub został skonfigurowany przez podanie pliku metadanych.

Konfigurowanie jednostki uzależnionej na istniejącym wdrożeniu usług AD FS (konto STS)

Firma Microsoft udostępnia skrypt, który konfiguruje zaufanie jednostki uzależnionej, w tym reguły przekształcania oświadczeń. Użycie skryptu jest opcjonalne, ponieważ można uruchamiać polecenia ręcznie.

Skrypt pomocnika można pobrać z narzędzi Azure Stack Hub Tools w witrynie GitHub.

Jeśli zdecydujesz się ręcznie uruchomić polecenia, wykonaj następujące kroki:

  1. Skopiuj następującą zawartość do pliku .txt (na przykład zapisanego jako c:\ClaimIssuanceRules.txt) w wystąpieniu lub elemencie farmy centrum danych:

    @RuleTemplate = "LdapClaims"
    @RuleName = "Name claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"), query = ";userPrincipalName;{0}", param = c.Value);
    
    @RuleTemplate = "LdapClaims"
    @RuleName = "UPN claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);
    
    @RuleTemplate = "LdapClaims"
    @RuleName = "ObjectID claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"]
    => issue(Type = "http://schemas.microsoft.com/identity/claims/objectidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);
    
    @RuleName = "Family Name and Given claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"), query = ";sn,givenName;{0}", param = c.Value);
    
    @RuleTemplate = "PassThroughClaims"
    @RuleName = "Pass through all Group SID claims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Issuer =~ "^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$"]
    => issue(claim = c);
    
    @RuleTemplate = "PassThroughClaims"
    @RuleName = "Pass through all windows account name claims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
    => issue(claim = c);
    
  2. Sprawdź, czy włączono uwierzytelnianie oparte na Windows Forms dla ekstranetu i intranetu. Możesz sprawdzić, czy jest ona już włączona, uruchamiając następujące polecenie cmdlet:

    Get-AdfsAuthenticationProvider | where-object { $_.name -eq "FormsAuthentication" } | select Name, AllowedForPrimaryExtranet, AllowedForPrimaryIntranet
    

    Uwaga

    Ciągi agenta użytkownika obsługiwane przez usługę Windows Integrated Authentication (WIA) mogą być nieaktualne dla wdrożenia usług AD FS i mogą wymagać aktualizacji w celu obsługi najnowszych klientów. Więcej informacji na temat aktualizowania ciągów agenta użytkownika obsługiwanych przez WIA można przeczytać w artykule Konfigurowanie uwierzytelniania opartego na formularzach intranetu dla urządzeń, które nie obsługują WIA.

    Aby uzyskać instrukcje włączania zasad uwierzytelniania opartych na formularzach, zobacz Konfigurowanie zasad uwierzytelniania.

  3. Aby dodać relację zaufania jednostki uzależnionej, uruchom następujące polecenie Windows PowerShell w wystąpieniu usług AD FS lub elemencie członkowskim farmy. Pamiętaj, aby zaktualizować punkt końcowy usług AD FS i wskazać plik utworzony w kroku 1.

    Ważne

    W przypadku klientów z usługą Azure Stack Hub w wersji 2002 lub nowszej protokół TLS 1.2 jest wymuszany w punkcie końcowym usługi ADFS usługi Azure Stack Hub. W związku z tym protokół TLS 1.2 musi być również włączony na serwerach usług ADFS klienta. W przeciwnym razie podczas uruchamiania Add-ADFSRelyingPartyTrust na hoście/farmie usług AD FS klienta wystąpi następujący błąd:

    Add-ADFSRelyingPartyTrust : The underlying connection was closed: An unexpected error occurred on a send.

    W przypadku usług AD FS 2016/2019

    Add-ADFSRelyingPartyTrust -Name AzureStack -MetadataUrl "https://YourAzureStackADFSEndpoint/FederationMetadata/2007-06/FederationMetadata.xml" -IssuanceTransformRulesFile "C:\ClaimIssuanceRules.txt" -AutoUpdateEnabled:$true -MonitoringEnabled:$true -enabled:$true -AccessControlPolicyName "Permit everyone" -TokenLifeTime 1440
    

    W przypadku usług AD FS 2012/2012 R2

    Add-ADFSRelyingPartyTrust -Name AzureStack -MetadataUrl "https://YourAzureStackADFSEndpoint/FederationMetadata/2007-06/FederationMetadata.xml" -IssuanceTransformRulesFile "C:\ClaimIssuanceRules.txt" -AutoUpdateEnabled:$true -MonitoringEnabled:$true -enabled:$true -TokenLifeTime 1440
    

    Ważne

    Należy użyć przystawki MMC usług AD FS, aby skonfigurować reguły autoryzacji wystawiania w przypadku używania Windows Server 2012 lub 2012 R2 USŁUG AD FS.

  4. W przypadku uzyskiwania dostępu do usługi Azure Stack Hub przy użyciu programu Internet Explorer lub przeglądarki Microsoft Edge należy zignorować powiązania tokenów. W przeciwnym razie próby logowania kończą się niepowodzeniem. Na wystąpieniu usług AD FS lub elemencie członkowskim farmy uruchom następujące polecenie:

    Uwaga

    Ten krok nie ma zastosowania w przypadku korzystania z usług AD FS Windows Server 2012 lub 2012 R2. W takim przypadku można pominąć to polecenie i kontynuować integrację.

    Set-AdfsProperties -IgnoreTokenBinding $true
    

Tworzenie nazwy SPN

Istnieje wiele scenariuszy, które wymagają użycia głównej nazwy usługi (SPN) do uwierzytelniania. Poniżej przedstawiono kilka przykładów:

  • Użycie interfejsu wiersza polecenia platformy Azure z wdrożeniem usług AD FS usługi Azure Stack Hub.
  • Pakiet administracyjny programu System Center dla usługi Azure Stack Hub podczas wdrażania z usługami AD FS.
  • Dostawcy zasobów w usłudze Azure Stack Hub podczas wdrażania z usługami AD FS.
  • Różne aplikacje.
  • Wymagane jest logowanie nieinterakcyjne.

Ważne

Usługi AD FS obsługują tylko sesje logowania interakcyjnego. Jeśli w scenariuszu zautomatyzowanym jest wymagane logowanie nieinterakcyjne, musisz użyć nazwy SPN.

Aby uzyskać więcej informacji na temat tworzenia nazwy SPN, zobacz Tworzenie jednostki usługi dla usług AD FS.

Rozwiązywanie problemów

Wycofywanie konfiguracji

Jeśli wystąpi błąd, który opuszcza środowisko w stanie, w którym nie można już się uwierzytelnić, dostępna jest opcja wycofywania.

  1. Otwórz sesję Windows PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenia:

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Następnie uruchom następujące polecenie cmdlet:

    Reset-DatacenterIntegrationConfiguration
    

    Po uruchomieniu akcji wycofywania wszystkie zmiany konfiguracji zostaną wycofane. Możliwe jest tylko uwierzytelnianie za pomocą wbudowanego użytkownika CloudAdmin .

    Ważne

    Musisz skonfigurować oryginalnego właściciela domyślnej subskrypcji dostawcy.

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "azurestackadmin@[Internal Domain]"
    

Zbieranie dodatkowych dzienników

Jeśli którekolwiek z poleceń cmdlet zakończy się niepowodzeniem, możesz zebrać dodatkowe dzienniki przy użyciu Get-Azurestacklogs polecenia cmdlet .

  1. Otwórz sesję Windows PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenia:

    $creds = Get-Credential
    Enter-pssession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Następnie uruchom następujące polecenie cmdlet:

    Get-AzureStackLog -OutputPath \\myworkstation\AzureStackLogs -FilterByRole ECE
    

Następne kroki

Integrowanie zewnętrznych rozwiązań do monitorowania