Dokumen ini menunjukkan cara mengonfigurasi Active Directory dan Compute Engine sehingga instance virtual machine (VM) Windows dapat otomatis bergabung dengan domain Active Directory.
Mengotomatiskan proses penggabungan VM Windows ke Active Directory akan membantu Anda menyederhanakan proses penyediaan server Windows. Pendekatan ini juga memungkinkan Anda memanfaatkan penskalaan otomatis tanpa mengorbankan manfaat penggunaan Active Directory untuk mengelola akses dan konfigurasi.
Dokumen ini ditujukan untuk administrator sistem dan mengasumsikan bahwa Anda sudah memahami jaringan Active Directory dan Google Cloud.
Konfigurasi yang Anda buat dengan mengikuti prosedur dalam dokumen ini dapat menjadi dasar pekerjaan tambahan yang Anda lakukan dengan Windows Server di Google Cloud. Misalnya, setelah menyelesaikan prosedur ini, Anda dapat men-deploy aplikasi ASP.NET dengan Autentikasi Windows di container Windows.
Jika Anda menggunakan Microsoft AD Terkelola dan tidak memerlukan pembersihan otomatis dari akun komputer yang tidak berlaku, pertimbangkan untuk bergabung dengan VM Windows menggunakan fitur gabungan domain otomatis. Untuk mengetahui informasi selengkapnya, lihat Menggabungkan VM Windows secara otomatis ke domain.
Tujuan
- Deploy aplikasi Cloud Run yang memungkinkan instance VM dari project yang dipilih bergabung secara otomatis ke domain Active Directory Anda.
- Buat tugas Cloud Scheduler yang secara berkala memindai domain Active Directory Anda untuk menemukan akun komputer yang tidak berlaku dan menghapusnya.
- Uji penyiapan dengan membuat grup instance terkelola (MIG) yang diskalakan otomatis dari instance VM yang bergabung dengan domain.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Petunjuk dalam dokumen ini dirancang untuk menjaga penggunaan resource Anda tetap sesuai
batas-batas tingkat Selalu Gratis Google Cloud.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah Anda menyelesaikan dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Dokumen ini mengasumsikan bahwa Anda telah men-deploy Active Directory di Google Cloud dengan menggunakan Layanan Terkelola untuk Microsoft Active Directory (Microsoft AD Terkelola) atau dengan men-deploy pengontrol domain yang dikelola sendiri di Google Cloud.
Untuk menyelesaikan prosedur ini, pastikan Anda memiliki hal berikut:
- Akses administratif ke domain Active Directory Anda, termasuk kemampuan untuk membuat pengguna, grup, dan unit organisasi (OU).
- Rentang IP CIDR /28 yang tidak digunakan di VPC tempat pengontrol domain Active Directory Anda di-deploy. Anda dapat menggunakan rentang IP ini untuk mengonfigurasi Akses VPC Serverless.
- Subnet tempat Anda men-deploy instance Windows. Subnet harus dikonfigurasi untuk menggunakan Akses Google Pribadi.
Jika menggunakan pengontrol domain yang dikelola sendiri, Anda juga memerlukan hal berikut:
- Zona penerusan DNS pribadi yang meneruskan kueri DNS ke pengontrol domain Active Directory Anda.
Menerapkan pendekatan ini
Di lingkungan lokal, Anda mungkin mengandalkan
file jawaban
(unattend.xml
) dan
penyesuaian JoinDomain
untuk secara otomatis menggabungkan komputer baru ke domain. Meskipun Anda dapat menggunakan proses yang sama di Google Cloud, pendekatan ini memiliki beberapa batasan:
- Untuk menggunakan file
unattend.xml
yang disesuaikan, Anda harus mengelola image Compute Engine kustom. Menjaga agar image kustom selalu aktual menggunakan Windows Update memerlukan pemeliharaan berkelanjutan atau pekerjaan awal untuk menyiapkan otomatisasi. Kecuali Anda perlu mempertahankan image kustom karena alasan lain, upaya tambahan ini mungkin tidak dibenarkan. - Penggunaan penyesuaian
JoinDomain
akan mengikat image ke satu domain Active Directory karena nama domain harus ditentukan diunattend.xml
. Jika Anda mengelola beberapa domain atau Forest Active Directory (misalnya, untuk lingkungan produksi dan pengujian terpisah), Anda mungkin perlu mempertahankan beberapa image kustom untuk setiap domain. - Menggabungkan komputer Windows ke domain memerlukan kredensial pengguna yang memiliki
izin untuk membuat objek komputer di direktori. Jika menggunakan penyesuaian
JoinDomain
diunattend.xml
, Anda harus menyematkan kredensial ini sebagai teks biasa diunattend.xml
. Kredensial yang tertanam ini dapat mengubah image menjadi target potensial bagi penyerang. Meskipun Anda dapat mengontrol akses ke image dengan menetapkan izin Identity and Access Management (IAM) yang sesuai, pengelolaan akses ke image kustom akan menambah kompleksitas yang tidak perlu.
Pendekatan dalam dokumen ini tidak menggunakan file jawaban sehingga tidak memerlukan image yang disiapkan secara khusus. Sebagai gantinya, gunakan sysprep spesialisasi scriptlet berikut saat Anda membuat instance VM:
iex((New-Object System.Net.WebClient).DownloadString('https://DOMAIN'))
Scriptlet khusus sistem ini memulai proses yang diilustrasikan oleh diagram berikut.
Prosesnya berjalan sebagai berikut:
- Setelah instance VM dibuat, Windows akan melakukan booting untuk pertama kalinya. Sebagai bagian dari
kartu konfigurasi spesialisasi,
Windows akan menjalankan scriptlet spesialisasi sysprep. Scriptlet spesialisasi memanggil aplikasi Cloud Run
register-computer
dan mendownload skrip PowerShell yang mengontrol proses bergabung ke domain. - Windows akan memanggil skrip PowerShell yang telah didownload.
- Skrip PowerShell memanggil server metadata untuk mendapatkan token ID yang mengidentifikasi instance VM dengan aman.
- Skrip ini memanggil aplikasi
register-computer
lagi, dengan meneruskan token ID untuk mengautentikasi dirinya sendiri. - Aplikasi ini memvalidasi token ID dan mengekstrak nama, zona, serta project ID Google Cloud dari instance VM.
- Aplikasi akan memverifikasi bahwa domain Active Directory dikonfigurasi untuk mengizinkan instance VM dari project tertentu bergabung dengan domain tersebut. Untuk menyelesaikan verifikasi ini, aplikasi akan mencari dan terhubung ke pengontrol domain Active Directory untuk memeriksa unit organisasi (OU) yang namanya cocok dengan project ID Google Cloud dari token ID. Jika ditemukan OU yang cocok, instance VM dari project akan diberi otorisasi untuk bergabung dengan domain Active Directory di OU yang ditentukan.
- Aplikasi ini memverifikasi bahwa project Google Cloud dikonfigurasi untuk mengizinkan instance VM bergabung dengan Active Directory. Untuk menyelesaikan verifikasi ini, aplikasi akan memeriksa apakah aplikasi dapat mengakses instance VM dengan menggunakan Compute Engine API.
- Jika semua pemeriksaan berhasil, aplikasi akan melakukan pratahap akun komputer di Active Directory. Aplikasi menyimpan nama, zona, dan ID instance VM sebagai atribut dalam objek akun komputer sehingga dapat dikaitkan dengan instance VM.
- Dengan menggunakan Kerberos set password protocol, aplikasi kemudian menetapkan sandi acak ke akun komputer tersebut.
- Nama dan sandi komputer ditampilkan ke instance Windows melalui saluran yang diamankan TLS.
- Dengan menggunakan akun komputer yang dipra-tahapkan, skrip PowerShell menggabungkan komputer ke domain.
- Setelah penerusan konfigurasi spesialisasi selesai, mesin akan memulai ulang sendiri.
Bagian selanjutnya dari prosedur ini akan memandu Anda melakukan langkah-langkah yang diperlukan untuk menyiapkan penggabungan domain otomatis.
Mempersiapkan domain Active Directory
Pertama, Anda perlu menyiapkan domain Active Directory. Untuk menyelesaikan langkah ini, Anda memerlukan komputer yang memiliki akses administratif ke domain Active Directory.
Opsional: Membatasi siapa yang dapat bergabung ke komputer ke domain
Anda mungkin ingin membatasi siapa yang dapat bergabung dengan komputer ke domain. Secara default, konfigurasi Group Policy Object (GPO) untuk Kebijakan Pengontrol Domain Default memberikan hak pengguna Add workstations to domain
kepada semua pengguna terautentikasi.
Siapa pun dengan hak pengguna tersebut dapat menggabungkan komputer ke domain. Karena Anda mengotomatiskan proses penggabungan komputer ke domain Active Directory, memberikan tingkat akses ini secara universal merupakan risiko keamanan yang tidak perlu.
Untuk membatasi siapa yang dapat menggabungkan komputer ke domain Active Directory Anda, ubah konfigurasi default GPO Kebijakan Pengontrol Domain Default:
- Menggunakan klien RDP, login ke komputer yang memiliki akses administratif ke domain Active Directory Anda.
- Buka Group Policy Management console.
- Buka Forest > Domains > domain-name > Group Policy Objects, dengan domain-name adalah nama domain Active Directory Anda.
- Klik kanan Default Domain Controller Policy, lalu klik Edit.
- Pada konsol Group Policy Management Editor, buka Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > User Rights Assignment.
- Klik dua kali Add workstation to domain.
- Di Properties, hapus Authenticated Users dari daftar.
- Untuk mengizinkan administrator bergabung dengan domain secara manual (opsional), klik Add user or group, lalu tambahkan grup administratif ke dalam daftar.
- Klik Oke.
Sekarang Anda dapat menutup konsol Group Policy Management Editor dan GPMC.
Menginisialisasi struktur direktori
Sekarang Anda membuat OU yang berfungsi sebagai container untuk semua OU khusus project:
- Menggunakan klien RDP, login ke komputer yang memiliki akses administratif ke domain Active Directory Anda.
- Buka sesi PowerShell yang ditingkatkan.
Buat unit organisasi baru:
$ParentOrgUnitPath = (Get-ADDomain).ComputersContainer $ProjectsOrgUnitPath = New-ADOrganizationalUnit ` -Name 'Projects' ` -Path $ParentOrgUnitPath ` -PassThru
Membuat akun pengguna Active Directory
Untuk mengakses akun Active Directory dan komputer pra-tahap, aplikasi register-computer
memerlukan akun pengguna Active Directory:
Buat akun pengguna Active Directory bernama
register-computer
, tetapkan sandi acak, lalu tempatkan diProjects
OU:# Generate a random password $Password = [Guid]::NewGuid().ToString()+"-"+[Guid]::NewGuid().ToString() # Create user $UpnSuffix = (Get-ADDomain).DNSRoot $RegisterComputerUser = New-ADUser ` -Name "register-computer Cloud Run app" ` -GivenName "Register" ` -Surname "Computer" ` -Path $ProjectsOrgUnitPath ` -SamAccountName "register-computer" ` -UserPrincipalName "register-computer@$UpnSuffix" ` -AccountPassword (ConvertTo-SecureString "$Password" -AsPlainText -Force) ` -PasswordNeverExpires $True ` -Enabled $True ` -PassThru
Beri akun
register-computer
set izin minimum yang diperlukan untuk mengelola akun dan grup komputer di OU dan sub-OUProjects
:$AcesForContainerAndDescendents = @( "CCDC;Computer", # Create/delete computers "CCDC;Group" # Create/delete users ) $AcesForDescendents = @( "LC;;Computer" , # List child objects "RC;;Computer" , # Read security information "WD;;Computer" , # Change security information "WP;;Computer" , # Write properties "RP;;Computer" , # Read properties "CA;Reset Password;Computer", # ... "CA;Change Password;Computer", # ... "WS;Validated write to service principal name;Computer", "WS;Validated write to DNS host name;Computer", "LC;;Group", # List child objects "RC;;Group", # Read security information "WD;;Group", # Change security information "WP;;Group", # Write properties "RP;;Group" # Read properties ) $AcesForContainerAndDescendents | % { dsacls.exe $ProjectsOrgUnitPath /G "${RegisterComputerUser}:${_}" /I:T | Out-Null } $AcesForDescendents | % { dsacls.exe $ProjectsOrgUnitPath /G "${RegisterComputerUser}:${_}" /I:S | Out-Null }
Pemrosesan perintah ini dapat memerlukan waktu beberapa menit.
Berikan izin akun
register-computer
untuk menghapus data DNS:Microsoft AD Terkelola
Add-ADGroupMember -Identity "Cloud Service DNS Administrators" -Members ${RegisterComputerUser}
Domain yang dikelola sendiri
$DnsPartition=(Get-ADDomain).SubordinateReferences | Where-Object {$_.StartsWith('DC=DomainDnsZones')} $DnsContainer="DC=$((Get-ADDomain).DNSRoot),CN=MicrosoftDNS,$DnsPartition" dsacls $DnsContainer /G "${RegisterComputerUser}:SD" /I:S
Tampilkan jalur OU
Projects
dan sandi yang dibuat dari akun pengguna Active Directoryregister-computer
. Perhatikan nilai-nilainya karena Anda akan membutuhkannya nanti.Write-Host "Password: $Password" Write-Host "Projects OU: $ProjectsOrgUnitPath"
Menyiapkan project Google Cloud
Sekarang Anda mengonfigurasi project domain Anda:
- Jika Anda menggunakan Microsoft AD Terkelola, project domain Anda adalah project tempat Anda men-deploy Microsoft AD Terkelola.
- Jika Anda menggunakan Active Directory yang dikelola sendiri, project domain Anda adalah project yang menjalankan pengontrol domain Active Directory. Dalam kasus VPC Bersama, project ini harus sama dengan project host VPC.
Anda dapat menggunakan project domain ini untuk melakukan hal berikut:
- Buat rahasia Secret Manager yang berisi sandi akun pengguna Active Directory
register-computer
. - Terapkan aplikasi
register-computer
. - Konfigurasikan Cloud Scheduler agar memicu pembersihan akun komputer yang tidak digunakan.
Sebaiknya Anda memberikan akses ke project domain dengan hak istimewa paling rendah.
Membuat rahasia Secret Manager
Di konsol Google Cloud, buka Cloud Shell.
Luncurkan PowerShell:
pwsh
Lakukan inisialisasi variabel berikut, dengan mengganti
domain-project-id
dengan ID project domain Anda:$DomainProjectId = "
domain-project-id
"Setel project domain sebagai project default:
& gcloud config set project $DomainProjectId
Aktifkan Secret Manager API:
& gcloud services enable secretmanager.googleapis.com
Masukkan sandi akun pengguna Active Directory
register-computer
dan simpan di rahasia Secret Manager:$RegisterComputerCredential = (Get-Credential -Credential 'register-computer') $TempFile = New-TemporaryFile Set-Content $TempFile $($RegisterComputerCredential.GetNetworkCredential().Password) -NoNewLine & gcloud secrets create ad-password --data-file $TempFile Remove-Item $TempFile
Memberikan akses ke Kerberos dan LDAP
Untuk mengelola penggabungan domain, aplikasi register-computer
mengakses pengontrol domain
Anda menggunakan protokol berikut:
- LDAP (TCP/389) atau LDAPS (TCP/636)
- Kerberos (UDP/88, TCP/88)
Perubahan sandi Kerberos (UDP/464, TCP/464)
Microsoft AD Terkelola
Anda tidak perlu mengonfigurasi aturan firewall apa pun.
Domain yang dikelola sendiri
Buat aturan firewall yang mengizinkan akses ke pengontrol domain Anda.
Anda dapat menerapkan aturan berdasarkan tag jaringan yang telah ditetapkan ke pengontrol domain, atau Anda dapat menerapkannya dengan menggunakan akun layanan.
Berdasarkan tag jaringan
& gcloud compute firewall-rules create allow-adkrb-from-serverless-to-dc ` --direction INGRESS ` --action allow ` --rules udp:88,tcp:88,tcp:389,tcp:636,udp:464,tcp:464 ` --source-ranges $ServerlessIpRange ` --target-tags dc-tag ` --network $VpcName ` --project vpc-project-id ` --priority 10000
Ganti kode berikut:
dc-tag
: Tag jaringan yang ditetapkan ke VM pengontrol domain Anda.vpc-project-id
: ID project tempat VPC ditetapkan. Jika Anda menggunakan VPC Bersama, gunakan project host VPC; jika tidak, gunakan ID project domain.
Berdasarkan akun layanan
& gcloud compute firewall-rules create allow-adkrb-from-serverless-to-dc ` --direction INGRESS ` --action allow ` --rules udp:88,tcp:88,tcp:389,tcp:636,udp:464,tcp:464 ` --source-ranges $ServerlessIpRange ` --target-service-accounts dc-sa ` --network $VpcName ` --project vpc-project-id ` --priority 10000
Ganti kode berikut:
dc-sa
: Alamat email akun layanan yang digunakan VM pengontrol domain Anda.vpc-project-id
: ID project tempat VPC ditentukan. Jika Anda menggunakan VPC Bersama, gunakan project host VPC; jika tidak, gunakan ID proyek domain.
Men-deploy aplikasi Cloud Run
Sekarang Anda sudah menyiapkan Cloud Build untuk men-deploy aplikasi register-computer
ke Cloud Run:
Di Cloud Shell, buat clone repositori GitHub:
& git clone https://github.com/GoogleCloudPlatform/gce-automated-ad-join.git cd gce-automated-ad-join/ad-joining
Lakukan inisialisasi variabel berikut:
$ServerlessRegion = "
serverless-region
" $VpcName = "vpc-name
" $VpcSubnet = "subnet-name
" $AdDomain = "dns-domain-name
" $AdNetbiosDomain = "netbios-domain-name
" $ProjectsOrgUnitPath = "projects-ou-distinguished-name
"Ganti kode berikut:
serverless-region
: Region tempat men-deploy aplikasiregister-computer
. Region tidak harus sama dengan region tempat Anda berencana untuk men-deploy instance VM.vpc-name
: Nama jaringan VPC yang berisi pengontrol domain Active Directory Anda.subnet-name
: Subnetvpc-name
yang akan digunakan untuk akses VPC langsung. Subnet harus berada di region yang sama denganserverless-region
.dns-domain-name
: Nama domain DNS domain Active Directory Anda.netbios-domain-name
: Nama NetBIOS domain Active Directory Anda.projects-ou-distinguished-name
: Nama yang dibedakan dariProjects
OU Anda.
Mengaktifkan Cloud Run dan Cloud Build API:
& gcloud services enable run.googleapis.com cloudbuild.googleapis.com
Buat akun layanan
register-computer-app
untuk aplikasi Cloud Run:& gcloud iam service-accounts create register-computer-app ` --display-name="register computer Cloud Run app"
Buat akun layanan
build-service
untuk menjalankan pemicu Cloud Build:& gcloud iam service-accounts create build-service ` --display-name="Cloud Build build agent"
Izinkan akun layanan Cloud Run membaca secret yang berisi sandi Active Directory:
& gcloud secrets add-iam-policy-binding ad-password ` --member "serviceAccount:register-computer-app@$DomainProjectId." ` --role "roles/secretmanager.secretAccessor"
Beri Cloud Build izin yang diperlukan untuk men-deploy ke Cloud Run:
$DomainProjectNumber = (gcloud projects describe $DomainProjectId --format='value(projectNumber)') & gcloud iam service-accounts add-iam-policy-binding register-computer-app@$DomainProjectId. ` --member "serviceAccount:build-service@$DomainProjectId." ` --role "roles/iam.serviceAccountUser" & gcloud projects add-iam-policy-binding $DomainProjectId ` --member "serviceAccount:build-service@$DomainProjectId." ` --role roles/cloudbuild.builds.builder & gcloud projects add-iam-policy-binding $DomainProjectId ` --member "serviceAccount:build-service@$DomainProjectId." ` --role roles/run.admin
Gunakan file
cloudbuild.yaml
sebagai template untuk membuat konfigurasi build Cloud Run kustom yang cocok dengan lingkungan Anda:$Build = (Get-Content cloudbuild.yaml) $Build = $Build.Replace('__SERVERLESS_REGION__', "$ServerlessRegion") $Build = $Build.Replace('__PROJECTS_DN__', "$ProjectsOrgUnitPath") $Build = $Build.Replace('__AD_DOMAIN__', "$AdDomain") $Build = $Build.Replace('__AD_NETBIOS_DOMAIN__', "$AdNetbiosDomain") $Build = $Build.Replace('__SERVICE_ACCOUNT_EMAIL__', "register-computer-app@$DomainProjectId.") $Build = $Build.Replace('__SERVERLESS_NETWORK__', "$VpcName") $Build = $Build.Replace('__SERVERLESS_SUBNET__', "$VpcSubnet") $Build | Set-Content .\cloudbuild.hydrated.yaml
Build aplikasi dan deploy ke Cloud Run:
& gcloud builds submit . ` --config cloudbuild.hydrated.yaml ` --substitutions _IMAGE_TAG=$(git rev-parse --short HEAD) ` --service-account "projects/$DomainProjectId/serviceAccounts/build-service@$DomainProjectId." ` --default-buckets-behavior regional-user-owned-bucket
Proses deployment dapat memerlukan waktu beberapa menit.
Menentukan URL aplikasi Cloud Run:
$RegisterUrl = (gcloud run services describe register-computer ` --platform managed ` --region $ServerlessRegion ` --format=value`(status.url`)) Write-Host $RegisterUrl
Catat URL-nya. Anda akan membutuhkannya setiap kali membuat instance VM yang harus digabungkan ke Active Directory.
Panggil aplikasi Cloud Run untuk memverifikasi bahwa deployment berfungsi:
Invoke-RestMethod $RegisterUrl
Skrip PowerShell akan ditampilkan. VM menjalankan skrip ini selama fase khusus yang menggabungkannya ke domain.
Mengaktifkan project untuk penggabungan domain otomatis
Aplikasi register-computer
tidak mengizinkan instance VM untuk bergabung dengan domain Active Directory, kecuali jika project VM diaktifkan untuk bergabung dengan domain secara otomatis. Tindakan keamanan ini membantu mencegah VM yang terhubung ke project yang tidak sah agar tidak mengakses domain Anda.
Guna mengaktifkan project untuk bergabung dengan domain otomatis, Anda harus melakukan hal berikut:
- Buat OU di Active Directory yang namanya cocok dengan ID project Google Cloud Anda.
- Beri aplikasi
register-computer
akses ke project Google Cloud.
Pertama, buat OU:
- Dengan klien RDP, login ke komputer yang memiliki akses administratif ke domain Active Directory Anda.
- Di snap-in MMC Pengguna dan Komputer Active Directory, buka
OU
Projects
. - Klik kanan OU, lalu pilih New > Organizational Unit.
- Pada dialog New Object, masukkan ID untuk project Google Cloud tempat Anda men-deploy VM.
- Klik Oke.
Selanjutnya, beri aplikasi register-computer
akses ke
project Google Cloud:
Di Cloud Shell, luncurkan PowerShell:
pwsh
Lakukan inisialisasi variabel berikut:
$ProjectId = "
project-id
" $DomainProjectId = "domain-project-id
"Ganti
project-id
dengan ID project Google Cloud untuk men-deploy VM Anda didomain-project-id
dengan ID project domain Anda
Beri akun layanan
register-computer-app
peranCompute Viewer
pada project:& gcloud projects add-iam-policy-binding $ProjectId ` --member "serviceAccount:register-computer-app@$DomainProjectId." ` --role "roles/compute.viewer"
Project Anda sekarang siap mendukung penggabungan domain otomatis.
Menguji penggabungan domain
Sekarang Anda dapat memastikan bahwa penyiapannya berfungsi dengan benar dengan:
- Membuat satu instance VM yang otomatis bergabung dengan domain Active Directory
- Membuat grup instance terkelola dari instance VM yang otomatis bergabung dengan domain Active Directory
Membuat dan bergabung dengan satu instance VM
Buat instance VM yang otomatis bergabung dengan domain Active Directory:
Kembali ke sesi PowerShell di Cloud Shell dan lakukan inisialisasi variabel berikut:
$Region = "vpc-region-to-deploy-vm" $Zone = "zone-to-deploy-vm" $Subnet = "vpc-subnet-to-deploy-vm" $ServerlessRegion = "
serverless-region
"Ganti kode berikut:
vpc-region-to-deploy-vm
: Region untuk men-deploy instance VM.vpc-subnet-to-deploy-vm
: Subnet untuk men-deploy instance VM.zone-to-deploy-vm
: Zona untuk men-deploy instance VM.serverless-region
: Region tempat Anda men-deploy aplikasi Cloud Run.
Tetapkan project dan zona default:
& gcloud config set project $ProjectId & gcloud config set compute/zone $Zone
Cari URL aplikasi Cloud Run lagi:
$RegisterUrl = (gcloud run services describe register-computer ` --platform managed ` --region $ServerlessRegion ` --format value`(status.url`) ` --project $DomainProjectId)
Buat instance dengan meneruskan scriptlet khusus yang menyebabkan VM bergabung ke domain:
VPC Bersama
$VpchostProjectId = (gcloud compute shared-vpc get-host-project $ProjectId --format=value`(name`)) & gcloud compute instances create join-01 ` --image-family windows-2019-core ` --image-project windows-cloud ` --machine-type n1-standard-2 ` --no-address ` --subnet projects/$VpchostProjectId/regions/$Region/subnetworks/$Subnet ` --metadata "sysprep-specialize-script-ps1=iex((New-Object System.Net.WebClient).DownloadString('$RegisterUrl'))"
VPC Mandiri
& gcloud compute instances create join-01 ` --image-family=windows-2019-core ` --image-project=windows-cloud ` --machine-type=n1-standard-2 ` --no-address ` --subnet $Subnet ` --metadata "sysprep-specialize-script-ps1=iex((New-Object System.Net.WebClient).DownloadString('$RegisterUrl'))"
Jika Anda ingin menggunakan nama host kustom, tambahkan parameter
--hostname
ke perintah tersebut.Jika Anda menggunakan versi Windows Server sebelum Windows Server 2019, TLS 1.2 mungkin dinonaktifkan secara default, yang dapat menyebabkan scriptlet khusus gagal. Untuk mengaktifkan TLS 1.2, gunakan scriptlet berikut:
[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12;iex((New-Object System.Net.WebClient).DownloadString('$RegisterUrl'))
Pantau proses booting:
& gcloud compute instances tail-serial-port-output join-01
Setelah sekitar satu menit, mesin tersebut akan bergabung ke domain Active Directory Anda. Outputnya mirip dengan yang berikut ini:
Domain : corp.example.com DomainController : dc-01.corp.example.com. OrgUnitPath : OU=test-project-123,OU=Projects,DC=corp,DC=example,DC=com WARNING: The changes will take effect after you restart the computer Computer successfully joined to domain
Untuk berhenti mengamati proses booting, tekan
CTRL+C
.
Memverifikasi bahwa VM telah bergabung ke Active Directory
- Dengan klien RDP, login ke komputer yang memiliki akses administratif ke domain Active Directory Anda.
- Buka snap-in MMC Active Directory Users and Computers.
- Di menu, pastikan View > Advanced Features diaktifkan.
- Buka OU yang dinamai sesuai dengan project ID Google Cloud tempat Anda membuat instance VM.
- Klik dua kali akun
join-01
. Di dialog Properties, klik tab Attribute Editor.
Akun komputer dianotasi dengan atribut LDAP tambahan. Dengan atribut ini, Anda dapat melacak pengaitan antara objek komputer dan instance Compute Engine.
Pastikan daftar berisi atribut dan nilai LDAP berikut.
Atribut LDAP Nilai msDS-cloudExtensionAttribute1
ID project Google Cloud msDS-cloudExtensionAttribute2
Zona Compute Engine msDS-cloudExtensionAttribute3
Nama instance Compute Engine Atribut
msDS-cloudExtensionAttribute
adalah atribut tujuan umum dan tidak digunakan oleh Active Directory itu sendiri.
Mendiagnosis kesalahan
Jika instance VM Anda gagal bergabung dengan domain, periksa log aplikasi register-computer
:
Di konsol Google Cloud, buka Cloud Run.
Klik aplikasi
register-computer
.Di menu, klik Logs.
Menghapus instance
Setelah Anda memverifikasi bahwa instance VM bergabung dengan domain Active Directory, Anda dapat menghapus instance tersebut.
Hapus instance:
& gcloud compute instances delete join-01 --quiet
Membuat dan bergabung ke grup instance terkelola
Anda juga dapat memverifikasi bahwa instance dari MIG dapat otomatis bergabung dengan domain Anda.
Buat template instance dengan meneruskan skrip khusus yang menyebabkan VM bergabung ke domain:
VPC Bersama
$VpchostProjectId = (gcloud compute shared-vpc get-host-project $ProjectId --format=value`(name`)) & gcloud compute instance-templates create ad-2019core-n1-std-2 ` --image-family windows-2019-core ` --image-project windows-cloud ` --no-address ` --machine-type n1-standard-2 ` --subnet projects/$VpchostProjectId/regions/$Region/subnetworks/$Subnet ` --metadata "sysprep-specialize-script-ps1=iex((New-Object System.Net.WebClient).DownloadString('$RegisterUrl'))"
VPC Mandiri
& gcloud compute instance-templates create ad-2019core-n1-std-2 ` --image-family windows-2019-core ` --image-project windows-cloud ` --no-address ` --machine-type n1-standard-2 ` --subnet projects/$ProjectId/regions/$Region/subnetworks/$Subnet ` --metadata "sysprep-specialize-script-ps1=iex((New-Object System.Net.WebClient).DownloadString('$RegisterUrl'))"
Buat grup instance terkelola yang menggunakan template instance:
& gcloud compute instance-groups managed create group-01 ` --template ad-2019core-n1-std-2 ` --size=3
Tunggu beberapa menit, lalu gunakan snap-in MMC Pengguna dan Komputer Active Directory untuk memverifikasi bahwa empat objek baru telah dibuat di Active Directory:
- 3 akun komputer yang sesuai dengan 3 instance VM dari grup instance terkelola.
- 1 grup bernama
group-01
yang berisi 3 akun komputer. Jika berencana menggunakan akun layanan terkelola grup (gMSA), Anda dapat menggunakan grup ini untuk memberikan akses ke gMSA.
Setelah memverifikasi bahwa instance VM dari MIG Anda dapat bergabung dengan domain Active Directory, Anda dapat menghapus grup terkelola dan template instance dengan mengikuti langkah-langkah berikut:
Hapus grup instance di Cloud Shell:
& gcloud compute instance-groups managed delete group-01 --quiet
Hapus template instance:
& gcloud compute instance-templates delete ad-2019core-n1-std-2 --quiet
Menjadwalkan pembersihan akun komputer usang
Mengotomatiskan proses penggabungan komputer ke domain akan mengurangi upaya penyiapan server baru dan memungkinkan Anda menggunakan server yang bergabung dengan domain dalam grup instance terkelola. Namun, seiring waktu, akun komputer yang sudah usang dapat terakumulasi di domain.
Untuk mencegah akumulasi ini, sebaiknya siapkan
aplikasi register-computer
untuk memindai domain
Active Directory Anda secara berkala guna menemukan dan secara otomatis menghapus akun yang sudah tidak berlaku
dan data DNS terkait.
Aplikasi register-computer
dapat menggunakan
atribut msDS-cloudExtensionAttribute
akun komputer untuk mengidentifikasi
akun komputer mana yang tidak berlaku lagi. Atribut ini berisi project, zona, dan nama instance dari instance VM yang terkait di Compute Engine. Untuk setiap akun komputer, aplikasi dapat memeriksa apakah instance VM yang sesuai masih tersedia. Jika tidak, akun komputer dianggap usang
dan dihapus.
Untuk memicu pembersihan akun komputer, panggil endpoint /cleanup
aplikasi Cloud Run. Agar pengguna yang tidak sah tidak memicu pembersihan, permintaan ini harus diautentikasi menggunakan akun layanan register-computer-app
.
Mengonfigurasi Cloud Scheduler
Langkah-langkah berikut menunjukkan cara menyiapkan Cloud Scheduler bersama Pub/Sub untuk memicu pembersihan secara otomatis satu kali setiap 24 jam:
Di Cloud Shell, aktifkan Cloud Scheduler API di project domain Anda:
& gcloud services enable cloudscheduler.googleapis.com
Tetapkan
AppEngineLocation
ke lokasi App Engine yang valid untuk men-deploy Cloud Scheduler:$AppEngineLocation = "
location
"Ganti
location
dengan region App Engine yang telah Anda pilih untuk resource VPC, misalnya,us-central
. Jika wilayah tersebut tidak tersedia sebagai lokasi App Engine, pilih lokasi yang secara geografis dekat dengan Anda. Untuk informasi selengkapnya, lihat Region dan zona.Inisialisasi App Engine:
& gcloud app create --region $AppEngineLocation --project $DomainProjectId
Membuat tugas Cloud Scheduler:
& gcloud scheduler jobs create http cleanup-computer-accounts ` --schedule "every 24 hours" ` --uri "$RegisterUrl/cleanup" ` --oidc-service-account-email register-computer-app@$DomainProjectId. ` --oidc-token-audience "$RegisterUrl/" ` --project $DomainProjectId
Tugas ini memanggil aplikasi
register-computer
sekali setiap 24 jam dan menggunakan akun layananregister-computer-app
untuk autentikasi.
Memicu pembersihan
Untuk memverifikasi konfigurasi guna membersihkan akun komputer yang sudah tidak berlaku, Anda dapat memicu tugas Cloud Scheduler secara manual.
Di konsol Google Cloud, buka Cloud Scheduler.
Untuk tugas
cleanup-computer-accounts
yang Anda buat, klik Jalankan Sekarang.Setelah beberapa detik, kolom Result akan menampilkan Success, yang menunjukkan bahwa pembersihan berhasil diselesaikan. Jika kolom hasil tidak diupdate secara otomatis dalam beberapa detik, klik tombol Refresh.
Untuk detail selengkapnya tentang akun mana yang dihapus, periksa log aplikasi
register-computer
.
Di konsol Google Cloud, buka Cloud Run.
Klik aplikasi
register-computer
.Di menu, klik Logs.
Entri log menunjukkan bahwa akun komputer dari instance VM yang Anda gunakan untuk menguji penggabungan domain diidentifikasi sebagai usang dan sudah dihapus.
Pembersihan
Jika Anda menggunakan dokumen ini sebagai dasar untuk deployment dan arsitektur referensi lainnya, baca dokumen lain tentang kapan harus menjalankan langkah-langkah pembersihan.
Jika tidak ingin menyimpan penyiapan Google Cloud yang digunakan dalam dokumen ini, Anda dapat mengembalikan penyiapan ini dengan melakukan langkah berikut:
Di Cloud Shell, hapus tugas Cloud Scheduler:
& gcloud scheduler jobs delete cleanup-computer-accounts ` --project $DomainProjectId
Menghapus aplikasi Cloud Run:
& gcloud run services delete register-computer ` --platform managed ` --project $DomainProjectId ` --region $ServerlessRegion
Hapus rahasia Secret Manager:
gcloud secrets delete ad-password --project $DomainProjectId
Hapus aturan firewall untuk akses LDAP dan Kerberos:
gcloud compute firewall-rules delete allow-adkrb-from-serverless-to-dc --project=
vpc-project-id
Ganti
vpc-project-id
dengan ID project tempat VPC ditetapkan. Jika Anda menggunakan VPC Bersama, gunakan project host VPC; jika tidak, gunakan ID proyek domain.
Mengembalikan perubahan Active Directory
- Dengan menggunakan klien RDP, login ke komputer yang memiliki akses administratif ke domain Active Directory Anda.
- Di snap-in MMC Pengguna dan Komputer Active Directory, buka
OU
Projects
. - Hapus akun pengguna Active Directory
register-computer
. - Hapus OU yang Anda buat untuk menguji proses bergabung ke domain otomatis.
Langkah berikutnya
- Untuk menggabungkan VM Windows ke domain Microsoft AD Terkelola menggunakan penggabungan domain otomatis, lihat Bergabung ke VM Windows secara otomatis ke domain.
- Tinjau praktik terbaik kami untuk men-deploy hutan resource Active Directory di Google Cloud.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.