Panduan ini menjelaskan cara men-deploy Microsoft Active Directory Federation Services (AD FS) untuk Windows Server 2019 di domain Layanan Terkelola untuk Microsoft Active Directory.
Diagram berikut menggambarkan deployment:
Pengguna berkomunikasi dengan load balancer HTTPS yang menggunakan sertifikat yang dikelola Google untuk menghentikan koneksi SSL. Load balancer meneruskan koneksi ke instance VM yang menjalankan Microsoft AD FS untuk Windows Server 2019 dan yang digabungkan ke domain Microsoft AD Terkelola. Komunikasi antara load balancer dan instance VM diamankan dengan menggunakan sertifikat SSL yang ditandatangani sendiri.
Deployment menggunakan satu instance AD FS dan Database Internal Windows, yang membuatnya cocok untuk lingkungan kecil. Untuk lingkungan dengan peningkatan keandalan atau tuntutan keamanan, pertimbangkan untuk men-deploy beberapa instance AD FS dalam konfigurasi farm dan men-deploy proxy federasi.
Sebelum memulai
- Buat domain Microsoft AD Terkelola.
- Ambil kredensial akun administrator yang didelegasikan
dari domain Microsoft AD Terkelola. Secara default, akun administrator yang didelegasikan
bernama
setupadmin
. - Buat zona DNS publik. Anda menggunakan zona ini untuk membuat nama DNS publik untuk AD FS.
- Pastikan Anda sudah memahami persyaratan untuk men-deploy AD FS.
Mempersiapkan project dan jaringan
Anda perlu menyiapkan project Google Cloud dan jaringan VPC untuk deployment AD FS.
Membuat instance VM
Buat akun layanan dan instance VM untuk menjalankan AD FS:
Di Konsol Google Cloud, buka Cloud Shell.
Tetapkan project ID default Anda:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.Tetapkan region dan zona default Anda:
gcloud config set compute/region REGION gcloud config set compute/zone ZONE
Ganti kode berikut:
REGION
: ID region tempat Anda ingin men-deploy.ZONE
: ID zona tempat Anda ingin men-deploy.
Buat akun layanan:
gcloud iam service-accounts create SA_NAME
Ganti
SA_NAME
dengan nama akun layanan.Buat instance VM yang menjalankan Windows Server 2019 dan menggunakan skrip khusus untuk menginstal peran server AD FS secara otomatis:
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"
Ganti kode berikut:
VM_NAME
: Nama instance VM.SUBNET_NAME
: Nama subnet tempat men-deploy AD FS.SA_NAME
: Nama akun layanan
Untuk mengonfigurasi dan bergabung dengan instance VM ke domain Active Directory, selesaikan langkah-langkah berikut:
Pantau proses inisialisasi VM dengan melihat output port serialnya:
gcloud compute instances tail-serial-port-output VM_NAME
Tunggu sekitar 3 menit hingga Anda melihat output
Instance setup finished
, lalu tekan Ctrl+C. Pada tahap ini, instance VM siap digunakan.Buat nama pengguna dan sandi untuk instance VM.
Hubungkan ke VM menggunakan Desktop Jarak Jauh dan login menggunakan nama pengguna dan sandi yang dibuat di langkah sebelumnya.
Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
Konfirmasi prompt elevasi dengan mengklik Yes.
Gabungkan komputer ke domain Active Directory Anda, lalu mulai ulang:
Add-Computer -Domain DOMAIN -Restart
Ganti
DOMAIN
dengan nama DNS domain Active Directory Anda.Tunggu sekitar 1 menit sampai proses mulai ulang selesai.
Membuat load balancer
Anda perlu membuat load balancer yang memungkinkan pengguna mengakses AD FS menggunakan satu alamat IP virtual.
Untuk mengaitkan instance VM yang menjalankan AD FS dengan load balancer, pertama-tama buat grup instance tidak terkelola, lalu tetapkan grup instance ini ke load balancer:
- Kembali ke sesi Cloud Shell yang ada.
Buat grup instance yang tidak terkelola:
gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME && gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME --named-ports=http:443
Ganti
INSTANCE_GROUP_NAME
dengan nama grup yang ingin Anda buat.Tambahkan instance VM yang ada ke grup instance:
gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME --instances VM_NAME
Buat health check yang memeriksa port HTTPS AD FS:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port 443
Ganti
HEALTH_CHECK_NAME
dengan nama untuk pemeriksaan kesehatan.Buat layanan backend load balancer yang menggunakan health check HTTPS dan grup instance yang Anda buat sebelumnya:
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)
Ganti
BACKEND_SERVICE_NAME
dengan nama untuk layanan backend.Cadangkan alamat IP eksternal statis untuk load balancer:
gcloud compute addresses create ADDRESS_NAME --global
Ganti
ADDRESS_NAME
dengan nama yang ingin Anda kaitkan dengan alamat ini.Buat sertifikat SSL terkelola untuk load balancer:
gcloud compute ssl-certificates create CERTIFICATE_NAME \ --domains PUBLIC_FQDN \ --global
Ganti kode berikut:
CERTIFICATE_NAME
: Nama untuk sertifikat SSL terkelola.PUBLIC_FQDN
: Nama domain publik yang sepenuhnya memenuhi syarat (FQDN) yang ingin Anda gunakan untuk AD FS. Contoh,login.example.com
.
Buat frontend load balancer yang menggunakan alamat IP eksternal dan meneruskan traffic ke layanan backend:
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
Ganti kode berikut:
URL_MAP_NAME
: Nama peta URL untuk load balancer.PROXY_NAME
: Nama proxy target untuk load balancer.FORWARDING_RULE_NAME
: Nama aturan penerusan untuk load balancer.
Buat aturan firewall untuk mengizinkan traffic dari load balancer ke instance VM yang menjalankan AD FS:
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
Ganti kode berikut:
FIREWALL_RULE_NAME
: Nama aturan firewall.VPC_NAME
: Nama jaringan VPC Anda.SA_NAME
: Nama akun layanan
Rentang sumber adalah rentang IP untuk load balancer internal. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi aturan firewall.
Cari alamat IP load balancer:
gcloud compute addresses describe ADDRESS_NAME \ --global \ --format=value\(address\)
Buat data DNS
A
di zona DNS publik Anda yang mengarah ke alamat IP load balancer. Nama data DNS yang sepenuhnya memenuhi syarat harus sesuai dengan nama yang Anda gunakan untuk sertifikat SSL.
Men-deploy AD FS
Anda perlu men-deploy peran server AD FS di instance VM. Karena
tidak memiliki hak Domain Admins
di domain Microsoft AD Terkelola, Anda
tidak dapat menggunakan Server Manager untuk melakukan penginstalan dan harus menggunakan
PowerShell.
Membuat pengguna layanan
Anda perlu membuat akun pengguna di Active Directory untuk layanan AD FS:
- Hubungkan ke instance VM menggunakan Desktop Jarak Jauh dan login menggunakan kredensial administrator yang didelegasikan.
- Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
Tetapkan sandi acak untuk akun layanan AD FS:
$AdfsCredential = Get-Credential -UserName USER -Message 'PASSWORD'
Ganti kode berikut:
USER
: Nama pengguna Active Directory.PASSWORD
: Sandi pengguna Active Directory.
Buat pengguna Active Directory:
$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
Tambahkan pengguna ke grup Administrator lokal:
Add-LocalGroupMember ` -Group "Administrators" ` -Member "$env:userdomain\USER"
Tetapkan nama akun utama layanan:
setspn -a http/PUBLIC_FQDN USER
Ganti
PUBLIC_FQDN
dengan nama domain publik yang sepenuhnya memenuhi syarat AD FS.Buat penampung kosong di Active Directory. Anda perlu menggunakan penampung ini nanti saat menginstal AD FS:
New-ADObject ` -Type Container ` -Name "ADFS Data" ` -Path $CloudOuPath
Berikan kontrol penuh kepada pengguna AD FS di penampung:
dsacls.exe "CN=ADFS Data,$CloudOuPath" /G $env:userdomain\USER:GA /I:T
Menginstal AD FS
Anda dapat menginstal AD FS di instance VM:
Mulai sesi PowerShell sebagai pengguna ADFS:
runas /u:$env:userdomain\USER powershell
Sesi PowerShell baru berjalan sebagai pengguna AD FS, tetapi tanpa hak istimewa yang ditingkatkan.
Di sesi PowerShell baru, mulai sesi PowerShell kedua yang ditingkatkan:
Start-Process PowerShell -Verb RunAs
Anda harus menjalankan semua langkah berikutnya di sesi PowerShell baru yang ditingkatkan.
Buat sertifikat SSL yang ditandatangani sendiri yang menggunakan kunci RSA 2048-bit dan simpan di penyimpanan sertifikat komputer:
$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
Ganti
PUBLIC_FQDN
dengan nama domain publik yang sepenuhnya memenuhi syarat AD FS.Buat sertifikat RSA 2048 bit lain yang digunakan AD FS sebagai sertifikat penandatanganan token:
$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'
Buat penampung Pengelola Kunci Terdistribusi (DKM):
$CloudOuPath = "OU=Cloud," + (Get-ADDomain).DistinguishedName $DkmContainer = New-ADObject ` -Name ((New-Guid).Guid) ` -Type Container ` -Path "CN=ADFS Data,$CloudOuPath" ` -PassThru
Masukkan kembali kredensial untuk pengguna AD FS yang Anda tetapkan sebelumnya:
$AdfsCredential = Get-Credential -UserName "$env:userdomain\USER" -Message 'PASSWORD'
Instal AD FS menggunakan sertifikat dan penampung DKM yang Anda buat sebelumnya:
Install-ADFSFarm ` -CertificateThumbprint $Certificate.Thumbprint ` -SigningCertificateThumbprint $SigningCertificate.Thumbprint ` -DecryptionCertificateThumbprint $SigningCertificate.Thumbprint ` -FederationServiceName $DnsName ` -ServiceAccountCredential $AdfsCredential ` -OverwriteConfiguration ` -AdminConfiguration @{"DKMContainerDn"=$DkmContainer.DistinguishedName}
Perintah ini mungkin menampilkan pesan peringatan berikut:
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.
Anda dapat mengabaikan peringatan ini karena telah menetapkan SPN dan tidak menggunakan autentikasi berbasis sertifikat.
Jika Anda berencana menggunakan Autentikasi Windows Terintegrasi (IWA) untuk melakukan autentikasi ke AD FS, jalankan perintah berikut untuk menonaktifkan binding token:
Set-ADFSProperties -ExtendedProtectionTokenCheck None Restart-Service -Name adfssrv
Menonaktifkan binding token diperlukan karena Anda men-deploy AD FS di belakang load balancer dan load balancer menghentikan koneksi TLS.
Jika Anda mengalami masalah terkait izin dengan langkah-langkah ini, hubungi Dukungan Google Cloud.
Mengonfigurasi TLS
Saat membuat koneksi ke backend, load balancer HTTPS tidak menggunakan ekstensi server name indication (SNI). Agar AD FS dapat menerima koneksi tanpa SNI, Anda harus mengonfigurasi penggantian sertifikat:
Di PowerShell, lihat binding sertifikat server SSL untuk AD FS:
netsh http show sslcert hostnameport=PUBLIC_FQDN:443
Ganti
PUBLIC_FQDN
dengan nama domain publik AD FS yang sepenuhnya memenuhi syarat.Konfigurasikan sertifikat penggantian untuk binding:
netsh http add sslcert ipport=0.0.0.0:443 certhash=CERTIFICATE_HASH "appid=APP_ID" "certstorename=MY"
Ganti kode berikut:
CERTIFICATE_HASH
: Hash sertifikat yang ditampilkan dalam perintah sebelumnya.APP_ID
: ID aplikasi yang ditampilkan dalam perintah sebelumnya, termasuk tanda kurung kurawal.
Mulai ulang komputer untuk menyelesaikan penginstalan:
Restart-Computer
Tunggu sekitar 1 menit sampai proses mulai ulang selesai.
Menguji AD FS
Layanan AD FS di-deploy, tetapi Anda masih harus memverifikasi bahwa layanan tersebut dapat diakses menggunakan load balancer HTTPS:
- Kembali ke sesi Cloud Shell.
Verifikasi bahwa sertifikat SSL berada dalam status
ACTIVE
:gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(managed.status)"
Jika sertifikat dalam status
PROVISIONING
, data DNS yang Anda buat untuk AD FS mungkin memerlukan waktu tambahan untuk di-propagate. Untuk mengetahui detail selengkapnya, lihat Memecahkan masalah sertifikat yang dikelola Google.Di komputer lokal, buka browser dan buka URL berikut:
https://PUBLIC_FQDN/adfs/ls?wa=wsignout1.0
Ganti
PUBLIC_FQDN
dengan nama domain publik AD FS yang sepenuhnya memenuhi syaratPastikan Anda melihat pesan
You have successfully signed out
, yang menunjukkan bahwa AD FS telah berhasil di-deploy.
Jika Anda berencana menggunakan Integrated Windows Authentication (IWA), pastikan Anda dapat memperoleh tiket Kerberos untuk AD FS:
- Hubungkan ke instance VM atau VM yang tergabung dalam domain lain menggunakan Desktop Jarak Jauh dan login menggunakan kredensial domain.
- Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell.
Gunakan perintah
klist
untuk meminta tiket layanan AD FS:klist get http/PUBLIC_FQDN
Pastikan output menyertakan tiket untuk AD FS:
#1> Client: USER @ DOMAIN Server: http/PUBLIC_FQDN @ DOMAIN KerbTicket Encryption Type: ...
AD FS siap digunakan. Untuk mengetahui detail tentang cara menggunakan dan mengonfigurasi layanan, lihat Operasi AD FS.