Konfigurasi Active Directory di AlloyDB Omni bersifat opsional dan dinonaktifkan secara default. Hanya lingkungan yang menggunakan Server Active Directory untuk autentikasi yang dapat menggunakan mekanisme konfigurasi ini.
Sebelum memulai
Sebelum mengintegrasikan Active Directory, pastikan Anda memenuhi persyaratan berikut:
- Pastikan Active Directory telah disiapkan.
- Dapatkan
REALM
server Active Directory. - Dapatkan nama host Key Distribution Center (KDC) server Active Directory. Nama host disimpan di image Docker.
- Dapatkan nama host server admin dari server Active Directory. Nama host ini disimpan dalam image Docker.
- Pastikan Anda memiliki akses ke server Active Directory sehingga Anda dapat membuat file
.keytab
. - Pilih pengguna Active Directory yang akan digunakan untuk pengujian dan login.
- Dapatkan file
.keytab
dari server Active Directory yang ada.
Dapatkan file .keytab dari server Active Directory yang ada
Untuk mendapatkan keytab dari Server Active Directory, ikuti langkah-langkah berikut:
- Login sebagai administrator ke terminal PowerShell server Active Directory.
- Buat pengguna bernama
postgres
dengan menjalankan perintah berikut, atau menggunakan antarmuka pengguna Active Directory. - Buat keytab utama layanan yang dipetakan ke server Active Directory ini.
- Salin file keytab ke komputer Linux Anda.
New-ADUser -Name "postgres" ` -SamAccountName "postgres" ` -UserPrincipalName "postgres@REALM" ` -Description "Service Account for AlloyDB Omni PostgreSQL Kerberos Authentication" ` -AccountPassword (Read-Host -AsSecureString "Set a strong password for the postgres service account") ` -Enabled $true ` -PasswordNeverExpires $true
ktpass /princ postgres/ALLOYDB_HOST_NAME@REALM /Pass ChangeMe123 /mapuser postgres /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapOp set /out C:\Users\Public\postgres.keytab
Dengan <HOST>
adalah nama domain yang sepenuhnya memenuhi syarat dari
server tempat Anda berencana men-deploy AlloyDB Omni—misalnya,
alloydb-server.ad.example.com
. Anda harus mengonfigurasi host yang sama di
file krb5.conf
dalam pemetaan realm domain Anda.
Mengaktifkan autentikasi Active Directory
Untuk mengaktifkan autentikasi Active Directory di AlloyDB Omni, ikuti langkah-langkah berikut, yang mencakup konfigurasi Generic Security Service Application Program Interface (GSSAPI), yang merupakan antarmuka pemrograman aplikasi yang memungkinkan program mengakses layanan keamanan.
Tambahkan entri berikut ke file
/var/lib/postgresql/data/pg_hba.conf
, sebelum entri
host all all all scram-sha-256
.Jalankan perintah Docker berikut untuk menambahkan
gss
di dalam container:docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
Jalankan perintah Docker berikut untuk memverifikasi bahwa file
pg_hba.conf
ada di dalam container:docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Verifikasi bahwa entri berikut ada dalam file:
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Untuk mengetahui informasi selengkapnya, lihat File pg_hba.conf.
Salin file tab kunci ke direktori data di dalam image AlloyDB Omni.
docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
File keytab dibuat oleh Kerberos untuk server PostgreSQL. Untuk mempelajari autentikasi lebih lanjut, lihat Autentikasi GSSAPI.
Tambahkan entri untuk file keytab ke file
/var/lib/postgresql/data/DATA_DIR/postgresql.conf
.Jalankan perintah Docker berikut untuk menambahkan entri di dalam container:
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
Jalankan perintah Docker berikut untuk memverifikasi file
postgresql.conf
di dalam container:docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Pastikan entri berikut ada dalam file:
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
Untuk mengetahui informasi selengkapnya, lihat krb_server_keyfile.
Opsional: Tambahkan entri ke file
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
.Saat Anda menggunakan sistem autentikasi eksternal seperti GSSAPI, nama pengguna sistem operasi yang memulai koneksi mungkin tidak sama dengan pengguna (peran) database yang ingin Anda gunakan.
Dalam hal ini, tentukan pemetaan pengguna sistem ke pengguna PostgreSQL dalam file
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
:docker exec -it CONTAINER_NAME bash $ echo -e " gssmap /^(.*)@EXAMPLE\.COM$ \1 gssmap /^(.*)@example\.com$ \1 " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
Untuk menerapkan pemetaan nama pengguna, tentukan
map=gssmap
di kolom opsi dalam filepg_hba.conf
.Untuk mengetahui informasi selengkapnya tentang autentikasi berbasis identitas, lihat Peta Identitas.
Muat ulang konfigurasi PostgreSQL menggunakan perintah berikut:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Menguji autentikasi Active Directory
Untuk memverifikasi bahwa autentikasi Active Directory berfungsi, ikuti langkah-langkah berikut:
- Login ke Active Directory menggunakan
kinit
. Jalankan perintah
psql
berikut dari mesin tempat Anda biasanya menjalankankinit
:root@4f6414ad02ef:/# kinit AD_USER_NAME Password for user1@YOUR.REALM: root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. user1=#
Menonaktifkan autentikasi Active Directory
Untuk menonaktifkan autentikasi Active Directory di AlloyDB Omni, ikuti langkah-langkah berikut, yang akan menonaktifkan GSSAPI:
Hapus entri dalam file
pg_hba.conf
yang mengarah ke metode autentikasigss
:docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
Muat ulang konfigurasi PostgreSQL menggunakan perintah berikut:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Langkah berikutnya
- Mengintegrasikan dukungan pengguna Active Directory di Kubernetes.
- Memecahkan masalah Active Directory di AlloyDB Omni.
- Mengintegrasikan dukungan grup Active Directory dengan AlloyDB Omni.
- Mengintegrasikan dukungan grup Active Directory di Kubernetes.
- Memecahkan masalah integrasi Active Directory di AlloyDB Omni.