Active Directory Federation Services in einer verwalteten Microsoft AD-Domain bereitstellen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In diesem Leitfaden wird beschrieben, wie Sie Microsoft Active Directory Federation Services (AD FS) für Windows Server 2019 in einer Managed Microsoft AD-Domain bereitstellen.

Das folgende Diagramm veranschaulicht die Bereitstellung:

Architektur

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.

Hinweis

Zum Durcharbeiten dieser Anleitung benötigen Sie Folgendes:

Machen Sie sich mit den Anforderungen für die Bereitstellung von AD FS vertraut.

Projekt und Netzwerk vorbereiten

Sie bereiten jetzt Ihr Google Cloud-Projekt und Ihre VPC für die Bereitstellung von AD FS vor.

VM-Instanz erstellen

Erstellen Sie ein Dienstkonto und eine VM-Instanz zum Ausführen von AD FS:

  1. Öffnen Sie in der Google Cloud Console Cloud Shell.

    Cloud Shell aktivieren

  2. Initialisieren Sie die folgenden Variablen:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Dabei gilt:

    • VPC_NAME ist der Name Ihrer VPC.
    • SUBNET_NAME ist der Name des Subnetzes, in dem AD FS bereitgestellt werden soll.
  3. 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.

  4. Legen Sie Ihre Standardregion und -zone fest.

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE
    

    Wobei:

    • REGION ist die ID der Region, in der Sie die Bereitstellung vornehmen möchten.
    • ZONE ist die ID der Zone, in der Sie die Bereitstellung vornehmen möchten.
  5. Erstellen Sie ein Dienstkonto:

    gcloud iam service-accounts create ad-federation-services
    
  6. 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 adfs-1 \
      --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 ad-federation-services@$(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"
    
    1. Überwachen Sie den Initialisierungsprozess der VM. Rufen Sie dazu die Ausgabe des seriellen Ports auf:

      gcloud compute instances tail-serial-port-output adfs-1
      

      Warten Sie etwa drei Minuten, bis die Ausgabe Instance setup finished angezeigt wird, und drücken Sie dann Ctrl+C. Jetzt kann die VM-Instanz verwendet werden.

    2. Erstellen Sie einen Nutzernamen und ein Passwort für die VM-Instanz.

    3. 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.

    4. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win+X) und klicken Sie anschließend auf Windows PowerShell (Administrator).

    5. Bestätigen Sie die Eingabeaufforderung für erhöhte Rechte durch Klicken auf Ja.

    6. 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 erstellen jetzt einen Load-Balancer, 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:

  1. Kehren Sie zu Ihrer bestehenden Cloud Shell-Sitzung zurück.
  2. Erstellen Sie die nicht verwaltete Instanzgruppe:

    gcloud compute instance-groups unmanaged create adfs &&
    gcloud compute instance-groups set-named-ports adfs --named-ports=http:443
    
  3. Fügen Sie der Instanzgruppe die vorhandene VM-Instanz hinzu:

    gcloud compute instance-groups unmanaged add-instances adfs --instances adfs-1
    
  4. Erstellen Sie eine Systemdiagnose, die den HTTPS-Port von AD FS prüft:

    gcloud compute health-checks create tcp adfs-health-check --port 443
    
  5. Erstellen Sie einen Back-End-Dienst für den Load-Balancer, der die HTTPS-Systemdiagnose und die Instanzgruppe verwendet, die zuvor erstellt wurde:

    gcloud compute backend-services create adfs-backend \
      --health-checks adfs-health-check \
      --port-name http \
      --protocol HTTPS \
      --global && \
    gcloud compute backend-services add-backend adfs-backend \
      --instance-group adfs \
      --global \
      --instance-group-zone $(gcloud config get-value compute/zone)
    
  6. Reservieren Sie eine statische externe IP-Adresse für den Load-Balancer:

    gcloud compute addresses create adfs-external --global
    
  7. Erstellen Sie ein verwaltetes SSL-Zertifikat für den Load-Balancer:

    gcloud compute ssl-certificates create adfs-external \
      --domains PUBLIC_FQDN \
      --global
    

    Dabei ist PUBLIC_FQDN der öffentliche, voll qualifizierte Domainname (FQDN), den Sie für AD FS verwenden möchten, z. B. login.example.com.

  8. Erstellen Sie ein Front-End des Load-Balancers, das die externe IP-Adresse verwendet und den Traffic an den Back-End-Dienst weiterleitet:

    gcloud compute url-maps create adfs \
      --default-service adfs-backend && \
    gcloud compute target-https-proxies create adfs-proxy \
      --ssl-certificates adfs-external \
      --url-map adfs && \
    gcloud compute forwarding-rules create adfs \
      --global \
      --address adfs-external \
      --target-https-proxy adfs-proxy \
      --ports 443
    
  9. 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 allow-https-to-adfs \
      --allow tcp:443 \
      --network $VPC_NAME \
      --source-ranges 130.211.0.0/22,35.191.0.0/16 \
      --target-service-accounts ad-federation-services@$(gcloud config get-value core/project).iam.gserviceaccount.com
    

    Die Quellbereiche sind die IP-Bereiche für den internen Load-Balancer. Weitere Informationen finden Sie unter Firewallregel konfigurieren.

  10. Suchen Sie die IP-Adresse des Load-Balancers:

    gcloud compute addresses describe adfs-external \
       --global \
       --format=value\(address\)
    
  11. Erstellen Sie einen DNS-A-Eintrag in Ihrer öffentlichen DNS-Zone, der auf die IP-Adresse des Load-Balancers verweist. Der voll qualifizierte Name des DNS-Eintrags muss mit dem Namen übereinstimmen, den Sie für das SSL-Zertifikat verwendet haben.

AD FS bereitstellen

Sie stellen jetzt die AD FS-Serverrolle auf der VM-Instanz adfs-1 bereit. Da Sie keine Domainadministratorrechte 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 erstellen jetzt in Active Directory ein Nutzerkonto für den AD FS-Dienst:

  1. Stellen Sie mithilfe von Remote Desktop eine Verbindung zur VM-Instanz adfs-1 her und melden Sie sich mit Ihren delegierten Administratoranmeldedaten an.
  2. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell (Administrator).
  3. Legen Sie ein zufälliges Passwort für das AD FS-Dienstkonto fest:

    $AdfsCredential = Get-Credential -UserName adfssvc -Message 'Enter password'
    
  4. Erstellen Sie einen Active Directory-Nutzer adfssvc:

    $CloudOuPath = "OU=Cloud," + (Get-ADDomain).DistinguishedName
    $AdfsUser = New-ADuser `
      -Name adfssvc `
      -DisplayName 'AD FS service account' `
      -AccountPassword $AdfsCredential.Password `
      -Path "$CloudOuPath" `
      -PasswordNeverExpires $True `
      -PassThru | Enable-ADAccount -PassThru
    
  5. Fügen Sie den Nutzer der lokalen Administratorgruppe hinzu:

    Add-LocalGroupMember `
     -Group "Administrators" `
     -Member "$env:userdomain\adfssvc"
    
  6. Weisen Sie einen Dienstprinzipalnamen zu:

    setspn -a http/PUBLIC_FQDN adfssvc
    

    Dabei ist PUBLIC_FQDN der öffentliche, voll qualifizierte Domainname von AD FS.

  7. 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
    
  8. Gewähren Sie dem AD FS-Nutzer die vollständige Kontrolle über den Container:

    dsacls.exe "CN=ADFS Data,$CloudOuPath" /G $env:userdomain\adfssvc:GA /I:T
    

AD FS installieren

Sie installieren jetzt AD FS auf adfs-1:

  1. Starten Sie eine PowerShell-Sitzung als AD FS-Nutzer:

    runas /u:$env:userdomain\adfssvc powershell
    

    Die neue PowerShell-Sitzung wird jetzt als AD FS-Nutzer ausgeführt, jedoch ohne erhöhte Berechtigungen.

  2. 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.

  3. 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
    

    Dabei ist PUBLIC_FQDN der öffentliche, voll qualifizierte Domainname von AD FS.

  4. 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'
    
  5. 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
    
  6. Geben Sie die Anmeldedaten für den AD FS-Nutzer noch einmal ein, die Sie zuvor festgelegt haben:

    $AdfsCredential = Get-Credential -UserName "$env:userdomain\adfssvc" -Message 'Enter password'
    
  7. 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}
    

    Mit dem Befehl können folgende Warnmeldungen angezeigt werden:

    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 und keine zertifikatbasierte Authentifizierung verwendet haben.

  8. Wenn Sie die integrierte Windows-Authentifizierung (IWA) zur 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
    

    Das Deaktivieren der Tokenbindung ist erforderlich, da Sie AD FS hinter einem Load-Balancer bereitstellen und der Load-Balancer TLS-Verbindungen beendet.

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:

  1. Rufen Sie in PowerShell die SSL-Serverzertifikatbindungen für AD FS auf:

    netsh http show sslcert hostnameport=PUBLIC_FQDN:443
    

    Dabei ist PUBLIC_FQDN der öffentliche, voll qualifizierte Domainname von AD FS

  2. 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"
    

    Wobei:

    • CERTIFICATE_HASH ist der Zertifikat-Hash, der im vorherigen Befehl angezeigt wurde.
    • APP_ID ist die Anwendungs-ID, die im vorherigen Befehl angezeigt wurde, einschließlich geschweifte Klammern.
  3. 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 jetzt bereitgestellt. Sie müssen jedoch noch prüfen, ob auf den Dienst über den HTTPS-Load-Balancer zugegriffen werden kann:

  1. Kehren Sie zur Cloud Shell-Sitzung zurück.
  2. Prüfen Sie, ob das SSL-Zertifikat den Status ACTIVE hat:

    gcloud compute ssl-certificates describe adfs-external \
        --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.

  3. Öffnen Sie auf Ihrem lokalen Computer einen Browser und rufen Sie die folgende URL auf:

    https://PUBLIC_FQDN/adfs/ls?wa=wsignout1.0
    

    Ersetzen Sie PUBLIC_FQDN durch den öffentlichen, voll qualifizierten Domainnamen von AD FS

    Prüfen Sie, ob die Meldung Sie haben sich erfolgreich abgemeldet 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 erhalten können:

  1. Stellen Sie über Remote Desktop eine Verbindung zur VM-Instanz adfs-1 oder zu einer anderen VM her, die Teil der Domain ist, und melden Sie sich mit Anmeldedaten für die Domain an.
  2. Klicken Sie mit der rechten Maustaste auf Start (oder drücken Sie Win + X) und klicken Sie anschließend auf Windows PowerShell.
  3. 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.