In diesem Leitfaden wird beschrieben, wie Sie Microsoft Active Directory Federation Services (AD FS) für Windows Server 2019 in einer Managed Service for Microsoft Active Directory-Domain bereitstellen.
Das folgende Diagramm veranschaulicht die Bereitstellung:
Nutzer kommunizieren mit einem HTTPS-Load-Balancer, der ein von Google verwaltetes Zertifikat verwendet, um SSL-Verbindungen zu beenden. Der Load-Balancer leitet Verbindungen an eine VM-Instanz weiter, auf der Microsoft AD FS für Windows Server 2019 ausgeführt wird und die mit der Managed Microsoft AD-Domain verknüpft ist. Die Kommunikation zwischen dem Load-Balancer und der VM-Instanz wird mithilfe eines selbst signierten SSL-Zertifikats gesichert.
Die Bereitstellung verwendet eine einzelne AD FS-Instanz und die interne Windows-Datenbank, was sie für kleine Umgebungen geeignet macht. Bei Umgebungen mit erhöhter Zuverlässigkeits- oder Sicherheitsanforderungen sollten Sie mehrere AD FS-Instanzen in einer Farmkonfiguration und Föderations-Proxys bereitstellen.
Hinweise
- Managed Microsoft AD-Domain erstellen
- Rufen Sie die Anmeldedaten des delegierten Administratorkontos der Managed Microsoft AD-Domain ab. Standardmäßig heißt das delegierte Administratorkonto
setupadmin
. - Erstellen Sie eine öffentliche DNS-Zone. In dieser Zone erstellen Sie einen öffentlichen DNS-Namen für AD FS.
- Machen Sie sich mit den Anforderungen für die Bereitstellung von AD FS vertraut.
Projekt und Netzwerk vorbereiten
Sie müssen Ihr Google Cloud-Projekt und Ihr VPC-Netzwerk für die Bereitstellung von AD FS vorbereiten.
VM-Instanz erstellen
Erstellen Sie ein Dienstkonto und eine VM-Instanz zum Ausführen von AD FS:
Öffnen Sie Cloud Shell in der Google Cloud Console.
Legen Sie Ihre standardmäßige Projekt-ID fest:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.Legen Sie Ihre Standardregion und -zone fest.
gcloud config set compute/region REGION gcloud config set compute/zone ZONE
Ersetzen Sie Folgendes:
REGION
: Die ID der Region, in der Sie die Bereitstellung vornehmen möchten.ZONE
: Die ID der Zone, in der Sie die Bereitstellung vornehmen möchten.
Erstellen Sie ein Dienstkonto:
gcloud iam service-accounts create SA_NAME
SA_NAME
durch den Namen des Dienstkontos ersetzen.Erstellen Sie eine VM-Instanz, die Windows Server 2019 ausführt, und die verwendet ein Spezialisierungsskript, um die AD FS-Serverrolle automatisch zu installieren:
gcloud compute instances create VM_NAME \ --machine-type n2-standard-8 \ --image-family windows-2019 \ --image-project windows-cloud \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --subnet SUBNET_NAME \ --service-account SA_NAME@$(gcloud config get-value core/project).iam.gserviceaccount.com \ --metadata sysprep-specialize-script-ps1="Add-WindowsFeature ADFS-Federation -IncludeManagementTools;Add-WindowsFeature RSAT-AD-PowerShell;Add-WindowsFeature RSAT-ADDS-Tools"
Ersetzen Sie Folgendes:
VM_NAME
: Der Name der VM-Instanz.SUBNET_NAME
: Der Name des Subnetzes, in dem AD FS bereitgestellt werden soll.SA_NAME
: der Name des Dienstkontos
Führen Sie die folgenden Schritte aus, um die VM-Instanz zu konfigurieren und mit Ihrer Active Directory-Domain zu verbinden:
Überwachen Sie den Initialisierungsprozess der VM. Rufen Sie dazu die Ausgabe des seriellen Ports auf:
gcloud compute instances tail-serial-port-output VM_NAME
Warten Sie etwa drei Minuten, bis die Ausgabe
Instance setup finished
angezeigt wird, und drücken Sie dann STRG + C. Jetzt kann die VM-Instanz verwendet werden.Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.
Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM her und melden Sie sich mit dem Nutzernamen und dem Passwort an, den bzw. das Sie im vorherigen Schritt erstellt haben.
Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.
Verbinden Sie den Computer mit Ihrer Active Directory-Domain und starten Sie ihn neu:
Add-Computer -Domain DOMAIN -Restart
Ersetzen Sie
DOMAIN
durch den DNS-Namen Ihrer Active Directory-Domain.Warten Sie etwa eine Minute, bis der Neustart abgeschlossen ist.
Load-Balancer erstellen
Sie müssen einen Load Balancer erstellen, mit dem Nutzer über eine einzelne virtuelle IP-Adresse auf AD FS zugreifen können.
Erstellen Sie zuerst eine nicht verwaltete Instanzgruppe und weisen Sie diese dann dem Load-Balancer zu, um die VM-Instanz, die AD FS ausführt, zu verknüpfen mit dem Load-Balancer:
- Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
Erstellen Sie die nicht verwaltete Instanzgruppe:
gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME && gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME --named-ports=http:443
Ersetzen Sie
INSTANCE_GROUP_NAME
durch den Namen der Gruppe, die Sie erstellen möchten.Fügen Sie der Instanzgruppe die vorhandene VM-Instanz hinzu:
gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME --instances VM_NAME
Erstellen Sie eine Systemdiagnose, die den HTTPS-Port von AD FS prüft:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port 443
Ersetzen Sie
HEALTH_CHECK_NAME
durch einen Namen für die Systemdiagnose.Erstellen Sie einen Backend-Dienst für den Load-Balancer, der die HTTPS-Systemdiagnose und die Instanzgruppe verwendet, die zuvor erstellt wurde:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --health-checks HEALTH_CHECK_NAME \ --port-name http \ --protocol HTTPS \ --global && \ gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --global \ --instance-group-zone $(gcloud config get-value compute/zone)
Ersetzen Sie
BACKEND_SERVICE_NAME
durch einen Namen für den Backend-Dienst.Reservieren Sie eine statische externe IP-Adresse für den Load-Balancer:
gcloud compute addresses create ADDRESS_NAME --global
Ersetzen Sie
ADDRESS_NAME
durch den Namen, den Sie mit dieser Adresse verknüpfen möchten.Erstellen Sie ein verwaltetes SSL-Zertifikat für den Load-Balancer:
gcloud compute ssl-certificates create CERTIFICATE_NAME \ --domains PUBLIC_FQDN \ --global
Ersetzen Sie Folgendes:
CERTIFICATE_NAME
: Der Name des verwalteten SSL-Zertifikats.PUBLIC_FQDN
: Der öffentliche, vollständig qualifizierte Domainname (FQDN), den Sie für AD FS verwenden möchten. Beispiel:login.example.com
.
Erstellen Sie ein Frontend des Load-Balancers, das die externe IP-Adresse verwendet und den Traffic an den Backend-Dienst weiterleitet:
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAME && \ gcloud compute target-https-proxies create PROXY_NAME \ --ssl-certificates CERTIFICATE_NAME \ --url-map URL_MAP_NAME && \ gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --global \ --address ADDRESS_NAME \ --target-https-proxy PROXY_NAME \ --ports 443
Ersetzen Sie Folgendes:
URL_MAP_NAME
: Der Name der URL-Zuordnung für den Load Balancer.PROXY_NAME
: Der Name des Zielproxys für den Load Balancer.FORWARDING_RULE_NAME
: Der Name der Weiterleitungsregel für den Load Balancer.
Erstellen Sie eine Firewallregel, um Traffic vom Load-Balancer zur VM-Instanz zuzulassen, auf der AD FS ausgeführt wird:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --allow tcp:443 \ --network VPC_NAME \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-service-accounts SA_NAME@$(gcloud config get-value core/project).iam.gserviceaccount.com
Ersetzen Sie Folgendes:
FIREWALL_RULE_NAME
: Der Name der Firewallregel.VPC_NAME
: Der Name Ihres VPC-Netzwerk.SA_NAME
: der Name des Dienstkontos
Die Quellbereiche sind die IP-Bereiche für den internen Load-Balancer. Weitere Informationen finden Sie unter Firewallregel konfigurieren.
Suchen Sie die IP-Adresse des Load-Balancers:
gcloud compute addresses describe ADDRESS_NAME \ --global \ --format=value\(address\)
Erstellen Sie einen DNS-
A
-Eintrag in Ihrer öffentlichen DNS-Zone, der auf die IP-Adresse des Load-Balancers verweist. Der vollständig qualifizierte Name des DNS-Eintrags muss mit dem Namen übereinstimmen, den Sie für das SSL-Zertifikat verwendet haben.
AD FS bereitstellen
Sie müssen die AD FS-Serverrolle auf der VM-Instanz bereitstellen. Da Sie keine Domain Admins
-Berechtigungen in einer verwalteten Microsoft AD-Domain haben, können Sie den Server-Manager nicht für die Installation verwenden. Sie müssen stattdessen PowerShell verwenden.
Dienstnutzer erstellen
Sie müssen in Active Directory ein Nutzerkonto für den AD FS-Dienst erstellen:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM-Instanz her und melden Sie sich mit Ihren delegierten Administratoranmeldedaten an.
- Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
Legen Sie ein zufälliges Passwort für das AD FS-Dienstkonto fest:
$AdfsCredential = Get-Credential -UserName USER -Message 'PASSWORD'
Ersetzen Sie Folgendes:
USER
: Der Name eines Active Directory-Nutzers.PASSWORD
: Das Passwort des Active Directory-Nutzers.
So erstellen Sie einen Active Directory-Nutzer:
$CloudOuPath = "OU=Cloud," + (Get-ADDomain).DistinguishedName $AdfsUser = New-ADuser ` -Name USER ` -DisplayName 'AD FS service account' ` -AccountPassword $AdfsCredential.Password ` -Path "$CloudOuPath" ` -PasswordNeverExpires $True ` -PassThru | Enable-ADAccount -PassThru
Fügen Sie den Nutzer der lokalen Administratorgruppe hinzu:
Add-LocalGroupMember ` -Group "Administrators" ` -Member "$env:userdomain\USER"
Weisen Sie einen Dienstprinzipalnamen zu:
setspn -a http/PUBLIC_FQDN USER
Ersetzen Sie
PUBLIC_FQDN
durch den öffentlichen, vollständig qualifizierten Domainnamen von AD FS.Erstellen Sie einen leeren Container in Active Directory. Sie verwenden diesen Container später, wenn Sie AD FS installieren:
New-ADObject ` -Type Container ` -Name "ADFS Data" ` -Path $CloudOuPath
Gewähren Sie dem AD FS-Nutzer die vollständige Kontrolle über den Container:
dsacls.exe "CN=ADFS Data,$CloudOuPath" /G $env:userdomain\USER:GA /I:T
AD FS installieren
So installieren Sie AD FS auf der VM-Instanz:
Starten Sie eine PowerShell-Sitzung als AD FS-Nutzer:
runas /u:$env:userdomain\USER powershell
Die neue PowerShell-Sitzung wird als AD FS-Nutzer ausgeführt, jedoch ohne erhöhte Berechtigungen.
Starten Sie in der neuen PowerShell-Sitzung eine zweite, erhöhte PowerShell-Sitzung:
Start-Process PowerShell -Verb RunAs
Sie müssen alle nachfolgenden Schritte in dieser neuen, erhöhten PowerShell-Sitzung ausführen.
Erstellen Sie ein selbst signiertes SSL-Zertifikat, das einen RSA-2048-Bit-Schlüssel verwendet und speichern Sie ihn im Computerzertifikatspeicher:
$DnsName="PUBLIC_FQDN" $Certificate = New-SelfSignedCertificate ` -Subject $DnsName ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyExportPolicy NonExportable ` -KeyUsage DigitalSignature, KeyEncipherment ` -Provider 'Microsoft Platform Crypto Provider' ` -NotAfter (Get-Date).AddDays(365) ` -Type SSLServerAuthentication ` -CertStoreLocation 'Cert:\LocalMachine\My' ` -DnsName $DnsName
Ersetzen Sie
PUBLIC_FQDN
durch den öffentlichen, vollständig qualifizierten Domainnamen von AD FS.Erstellen Sie ein weiteres RSA 2048-Bit-Zertifikat, das AD FS als Tokensignaturzertifikat verwendet:
$SigningCertificate = New-SelfSignedCertificate ` -Subject "ADFS Signing" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyExportPolicy NonExportable ` -KeyUsage DigitalSignature, KeyEncipherment ` -Provider 'Microsoft RSA SChannel Cryptographic Provider' ` -NotAfter (Get-Date).AddDays(365) ` -DnsName $DnsName ` -CertStoreLocation 'Cert:\LocalMachine\My'
Erstellen Sie einen DKM-Container (Distributed Key Manager):
$CloudOuPath = "OU=Cloud," + (Get-ADDomain).DistinguishedName $DkmContainer = New-ADObject ` -Name ((New-Guid).Guid) ` -Type Container ` -Path "CN=ADFS Data,$CloudOuPath" ` -PassThru
Geben Sie die Anmeldedaten für den AD FS-Nutzer noch einmal ein, die Sie zuvor festgelegt haben:
$AdfsCredential = Get-Credential -UserName "$env:userdomain\USER" -Message 'PASSWORD'
Installieren Sie AD FS mithilfe der zuvor erstellten Zertifikate und des DKM-Containers:
Install-ADFSFarm ` -CertificateThumbprint $Certificate.Thumbprint ` -SigningCertificateThumbprint $SigningCertificate.Thumbprint ` -DecryptionCertificateThumbprint $SigningCertificate.Thumbprint ` -FederationServiceName $DnsName ` -ServiceAccountCredential $AdfsCredential ` -OverwriteConfiguration ` -AdminConfiguration @{"DKMContainerDn"=$DkmContainer.DistinguishedName}
Möglicherweise werden die folgenden Warnmeldungen angezeigt:
WARNING: A machine restart is required to complete ADFS service configuration. For more information, see: https://go.microsoft.com/fwlink/?LinkId=798725 WARNING: The SSL certificate subject alternative names do not support host name 'PUBLIC_FQDN'. Configuring certificate authentication binding on port '49443' and hostname 'PUBLIC_FQDN'. WARNING: An error occurred during an attempt to set the SPN for the specified service account. Set the SPN for the service account manually. For more information about setting the SPN of the service account manually, see the AD FS Deployment Guide. Error message: An error occurred during an attempt to set the SPN for the specified service account. You do not have sufficient privileges in the domain to set the SPN. WARNING: The SSL certificate does not contain all UPN suffix values that exist in the enterprise. Users with UPN suffix values not represented in the certificate will not be able to Workplace-Join their devices. For more information, see http://go.microsoft.com/fwlink/?LinkId=311954.
Sie können diese Warnungen ignorieren, da Sie den SPN bereits festgelegt haben und keine zertifikatbasierte Authentifizierung verwenden.
Wenn Sie die integrierte Windows-Authentifizierung (IWA) für die Authentifizierung bei AD FS verwenden möchten, führen Sie den folgenden Befehl aus, um die Tokenbindung zu deaktivieren:
Set-ADFSProperties -ExtendedProtectionTokenCheck None Restart-Service -Name adfssrv
Die Tokenbindung muss deaktiviert werden, da Sie AD FS hinter einem Load Balancer bereitstellen und der Load Balancer TLS-Verbindungen beendet.
Wenn Sie bei diesen Schritten berechtigungsbezogene Probleme feststellen, wenden Sie sich an den Google Cloud-Support.
TLS konfigurieren
Beim Herstellen von Verbindungen zu Back-Ends verwendet der HTTPS-Load-Balancer nicht die Erweiterung "Server Name Indication" (SNI). Damit AD FS die Verbindung ohne SNI akzeptieren kann, müssen Sie ein Zertifikat-Fallback konfigurieren:
Rufen Sie in PowerShell die SSL-Serverzertifikatbindungen für AD FS auf:
netsh http show sslcert hostnameport=PUBLIC_FQDN:443
Ersetzen Sie
PUBLIC_FQDN
durch den öffentlichen, vollständig qualifizierten Domainnamen von AD FS.Konfigurieren Sie ein Fallback-Zertifikat für die Bindung:
netsh http add sslcert ipport=0.0.0.0:443 certhash=CERTIFICATE_HASH "appid=APP_ID" "certstorename=MY"
Ersetzen Sie Folgendes:
CERTIFICATE_HASH
: Der Zertifikat-Hash, der im vorherigen Befehl angezeigt wurde.APP_ID
: Die Anwendungs-ID, die im vorherigen Befehl angezeigt wurde, einschließlich geschweifter Klammern.
Starten Sie den Computer neu, um die Installation abzuschließen:
Restart-Computer
Warten Sie etwa eine Minute, bis der Neustart abgeschlossen ist.
AD FS testen
Der AD FS-Dienst ist bereitgestellt. Sie müssen jedoch noch prüfen, ob auf den Dienst über den HTTPS-Load-Balancer zugegriffen werden kann:
- Kehren Sie zur Cloud Shell-Sitzung zurück.
Prüfen Sie, ob das SSL-Zertifikat den Status
ACTIVE
hat:gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(managed.status)"
Wenn sich das Zertifikat im Status
PROVISIONING
befindet, benötigt der DNS-Eintrag, den Sie für AD FS erstellt haben, möglicherweise zusätzliche Zeit, bis die Weitergabe wirksam wird. Weitere Informationen finden Sie unter Fehlerbehebung bei von Google verwalteten Zertifikaten.Öffnen Sie auf Ihrem lokalen Computer einen Browser und rufen Sie folgende URL auf:
https://PUBLIC_FQDN/adfs/ls?wa=wsignout1.0
Ersetzen Sie
PUBLIC_FQDN
durch den öffentlichen, vollständig qualifizierten Domainnamen von AD FS.Prüfen Sie, ob die Meldung
You have successfully signed out
angezeigt wird, was bedeutet, dass AD FS erfolgreich bereitgestellt wurde.
Wenn Sie die integrierte Windows-Authentifizierung (IWA) verwenden möchten, prüfen Sie, ob Sie ein Kerberos-Ticket für AD FS abrufen können:
- Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM-Instanz oder einer anderen VM her, die mit der Domain verbunden ist, und melden Sie sich mit Domainanmeldedaten an.
- Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell.
Verwenden Sie den Befehl
klist
, um ein Dienstticket für AD FS anzufordern:klist get http/PUBLIC_FQDN
Prüfen Sie, ob die Ausgabe ein Ticket für AD FS enthält:
#1> Client: USER @ DOMAIN Server: http/PUBLIC_FQDN @ DOMAIN KerbTicket Encryption Type: ...
AD FS kann jetzt verwendet werden. Weitere Informationen zur Verwendung und Konfiguration des Dienstes finden Sie unter AD FS-Vorgänge.