Integracja tożsamości AD FS z centrum danych 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 zintegrowanym możesz wybrać Microsoft Entra ID lub AD FS. W przypadku scenariusza rozłączenia obsługiwane są wyłącznie usługi AD FS. W tym artykule przedstawiono sposób integracji AD FS Azure Stack Hub z AD FS twojego centrum danych.
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ń, korzystając z punktu końcowego metadanych dla istniejącej usługi AD FS.
W istniejących usługach AD FS należy skonfigurować relację zaufania z jednostką uzależnioną. Ten krok nie jest wykonywany przez automatyzację i musi zostać skonfigurowany przez operatora . Punkt końcowy VIP dla usługi AD FS w Azure Stack Hub można utworzyć, używając 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 do włączenia scenariuszy RBAC.
W ostatnim kroku konfiguruje się nowego właściciela dla subskrypcji domyślnego 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 |
FQDN lasu 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 unika rozwiązywania zapytań przez usługę Azure Stack Hub Graph z użyciem serwera wykazu globalnego z lokacji zdalnej.
Dodaj podsieć sieci Public VIP Azure Stack Hub do lokacji Active Directory znajdującej się najbliżej 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 Active Directory, zobacz Projektowanie topologii lokacji.
Uwaga
Jeśli usługa Active Directory składa się z jednej witryny, możesz pominąć ten krok. Jeśli skonfigurowałeś podsieć typu catch-all, upewnij się, że podsieć 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ń CloudAdmin do uwierzytelniania.
$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ą, czy można połączyć się z serwerem wykazu globalnego oraz czy podane konto ma przyznany 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ń. Tak to wygląda na stronie startowej 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 |
SprawdzenieUnieważnieniaCertyfikatuPodpisu | NA | Opcjonalny parametr, aby pominąć sprawdzanie listy unieważnień certyfikatów (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 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 AD FS z instancji AD FS w 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 na stronie głównej 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.
Uruchom automatyzację, aby skonfigurować zaufanie do 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 strony ufającej, w tym reguły transformacji 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 AD FS w centrum danych bądź członku 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 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, aby obsługiwać 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 zewnętrznej instancji, uruchom następujące polecenie programu Windows PowerShell w wystąpieniu usług AD FS lub członku farmy. Pamiętaj, aby zaktualizować punkt końcowy 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 systemu AD FS, aby skonfigurować reguły autoryzacji wystawiania podczas korzystania z Windows Server 2012 lub 2012 R2 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 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 AD FS w usłudze 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 zautomatyzowanym scenariuszu wymagane jest logowanie nieinterakcyjne, musisz użyć SPN.
Aby uzyskać więcej informacji na temat tworzenia SPN, zobacz Tworzenie głównego użytkownika usługi dla usług AD FS.
Rozwiązywanie problemów
Przywracanie konfiguracji
Jeśli wystąpi błąd, który powoduje, że środowisko znajduje się w stanie, w którym nie można już się uwierzytelnić, dostępna jest opcja przywracania.
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ów zakończy się niepowodzeniem, możesz zebrać dodatkowe dzienniki przy użyciu polecenia cmdlet Get-Azurestacklogs
.
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