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 usługi Microsoft Entra ID 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 scenariuszu połączonym możesz wybrać pozycję Microsoft Entra ID lub AD FS. W przypadku scenariusza rozłączonego obsługiwane są tylko usługi AD FS. W tym artykule przedstawiono sposób integracji usług AD FS usługi Azure Stack Hub z centrum danych usług AD FS.
Ważne
Nie można przełączyć dostawcy tożsamości bez ponownego wdrażania całego rozwiązania usługi Azure Stack Hub.
Active Directory Federation Services i Graph
Wdrażanie za pomocą usług AD FS umożliwia tożsamościom w istniejącym lesie usługi Active Directory uwierzytelnianie za pomocą 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.
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ć relację zaufania jednostki uzależnionej. Ten krok nie jest wykonywany przez automatyzację i musi zostać 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 dla automatyzacji w celu włączenia scenariuszy kontroli dostępu opartej na rolach.
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 |
---|---|
Wykres | Microsoft Active Directory 2012/2012 R2/2016 2019 |
AD FS | Windows Server 2012/2012 R2/2016 2019 |
Konfigurowanie integracji z programem Graph
Program Graph obsługuje tylko integrację z jednym 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 mających wiele lokacji należy skonfigurować najbliższą lokację usługi Active Directory do wdrożenia usługi Azure Stack Hub. Konfiguracja nie pozwala na rozwiązywanie zapytań za pomocą serwera wykazu globalnego z lokacji zdalnej za pomocą usługi Azure Stack Hub Graph.
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 lokacje: Seattle i Redmond. Jeśli usługa Azure Stack Hub zostanie 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ć.
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 należy użyć komputera w sieci centrum danych, który może komunikować się z uprzywilejowanym punktem końcowym w usłudze Azure Stack Hub.
Otwórz sesję programu Windows PowerShell z podwyższonym poziomem uprawnień (uruchom jako administrator) i połącz się z adresem IP uprzywilejowanego punktu końcowego. Użyj poświadczeń dla narzędzia 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)
Teraz, gdy masz sesję z uprzywilejowanym punktem końcowym, uruchom następujące polecenie:
Uruchom poniższy skrypt dla kompilacji 2008 i nowszej usługi Azure Stack Hub
$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.
Polecenie cmdlet Register-DirectoryService ma opcjonalne parametry, których można użyć w niektórych scenariuszach, w których sprawdzanie poprawności istniejącej 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 czy 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 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 i 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 na to, że 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 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 USŁUGI AD FS usługi STS jest zaufany przez usługę Azure Stack Hub.
Otwórz sesję programu 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
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"
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 usług 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 ze wszystkimi innymi punktami końcowymi 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 na to, że w ten sposób na stronie docelowej usług AD FS. | Contoso |
CustomADFSFederationMetadataFileContent | Zawartość metadanych. | $using:federationMetadataFileContent |
Tworzenie pliku metadanych federacji
W poniższej procedurze należy użyć komputera, który ma łączność sieciową z istniejącym wdrożeniem usług AD FS, który staje się kontem STS. Należy również zainstalować niezbędne certyfikaty.
Otwórz sesję programu 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
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.
Otwórz sesję programu 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
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
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 rotacji 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 uruchomić 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:
Skopiuj następującą zawartość do pliku .txt (na przykład zapisanego jako c:\ClaimIssuanceRules.txt) w wystąpieniu usług AD FS centrum danych lub elemencie członkowskim farmy:
@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);
Sprawdź, czy włączono uwierzytelnianie oparte na formularzach systemu Windows dla ekstranetu i intranetu. Możesz sprawdzić, czy jest 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 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 do obsługi najnowszych klientów. Więcej informacji na temat aktualizowania ciągów agenta użytkownika obsługiwanych przez usługę WIA można przeczytać w artykule Konfigurowanie uwierzytelniania opartego na formularzach intranetowych dla urządzeń, które nie obsługują WIA.
Aby uzyskać instrukcje dotyczące włączania zasad uwierzytelniania opartych na formularzach, zobacz Konfigurowanie zasad uwierzytelniania.Aby dodać zaufanie jednostki uzależnionej, uruchom następujące polecenie programu 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 korzystania z systemu Windows Server 2012 lub 2012 R2 USŁUG AD FS.
W przypadku korzystania z programu Internet Explorer lub przeglądarki Microsoft Edge w celu uzyskania dostępu do usługi Azure Stack Hub należy zignorować powiązania tokenów. W przeciwnym razie próby logowania kończą się niepowodzeniem. W 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 systemu 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 przy użyciu usług AD FS wdrożenia 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 za pomocą usług 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.
Otwórz sesję programu 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
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 .
Otwórz sesję programu 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
Następnie uruchom następujące polecenie cmdlet:
Get-AzureStackLog -OutputPath \\myworkstation\AzureStackLogs -FilterByRole ECE