Halaman ini menjelaskan cara menyiapkan dan mengelola autentikasi dan otorisasi berbasis grup Active Directory di AlloyDB Omni. Dukungan berbasis grup Active Directory mengotomatiskan pengelolaan keanggotaan peran PostgreSQL berdasarkan keanggotaan grup pengguna di Active Directory Anda, yang menyederhanakan pengelolaan pengguna dan memastikan izin disinkronkan.
Untuk mengetahui informasi selengkapnya, lihat Ringkasan Active Directory.
Alur kerja integrasi Active Directory
Integrasi Active Directory diimplementasikan menggunakan ekstensi PostgreSQL (google_pg_auth
) seperti yang ditunjukkan dalam alur kerja berikut:
- Login pengguna: pengguna melakukan autentikasi ke AlloyDB Omni menggunakan kredensial Active Directory standar mereka menggunakan GSSAPI.
- Pembuatan peran otomatis: jika peran PostgreSQL yang sesuai untuk pengguna tidak ada, sistem akan membuatnya secara otomatis—misalnya,
CREATE ROLE "user@REALM" WITH LOGIN;
. - Pemeriksaan grup LDAP: sistem terhubung dengan aman ke Active Directory Anda menggunakan LDAP untuk mengambil keanggotaan grup pengguna saat ini.
- Sinkronisasi keanggotaan: sistem membandingkan grup Active Directory pengguna dengan pemetaan yang Anda konfigurasi.
- Jika pengguna berada dalam grup Active Directory yang dipetakan, tetapi tidak berada dalam grup PostgreSQL yang sesuai, pengguna akan diberi keanggotaan.
- Jika pengguna tidak berada dalam grup Active Directory yang dipetakan, tetapi berada dalam grup PostgreSQL yang sesuai, keanggotaan pengguna akan dicabut.
- Login selesai: koneksi pengguna telah diselesaikan, dan pengguna telah login ke database. Izin pengguna ditentukan oleh peran PostgreSQL tempat pengguna menjadi anggotanya, yang disinkronkan dengan status grup Active Directory-nya.
Sinkronisasi ini terjadi secara otomatis pada setiap login pengguna, yang memastikan hak akses PostgreSQL mencerminkan status Active Directory Anda saat ini.
Sebelum memulai
Sebelum mengintegrasikan dukungan grup Active Directory dengan AlloyDB Omni, pastikan Anda memenuhi persyaratan berikut.
- Autentikasi GSSAPI: Autentikasi berbasis GSSAPI harus dikonfigurasi dan beroperasi untuk instance AlloyDB Omni Anda. Untuk mengetahui informasi selengkapnya, lihat Mengintegrasikan Active Directory dengan AlloyDB Omni.
Peran grup PostgreSQL: Anda harus membuat peran grup PostgreSQL secara manual yang ingin dipetakan ke grup Active Directory, seperti yang ditunjukkan dalam contoh berikut:
CREATE ROLE 'postgres_developers'; CREATE ROLE 'postgres_read_only';
Izin: Anda harus menetapkan izin database secara manual—misalnya,
SELECT
danINSERT
—ke peran grup PostgreSQL ini. Integrasi hanya mengelola keanggotaan, tetapi tidak mengelola hak istimewa grup itu sendiri, seperti yang ditunjukkan dalam contoh berikut:GRANT SELECT ON ALL TABLES IN SCHEMA sales TO postgres_read_only; GRANT USAGE ON SCHEMA finance TO postgres_developers; GRANT USAGE ON SCHEMA sales TO postgres_read_only; GRANT SELECT, INSERT ON finance.transactions TO postgres_developers;
Mengonfigurasi dukungan grup Active Directory
Untuk mengonfigurasi dukungan grup Active Directory di AlloyDB Omni, Anda harus mengaktifkan ekstensi google_pg_auth
, memberikan detail Active Directory Anda dalam file postgresql.conf
, dan menangani kredensial dengan aman.
Berikan sandi LDAP.
Anda harus memberikan sandi untuk akun layanan
ldap_bind_dn
ke penampung AlloyDB Omni menggunakan variabel lingkunganAD_LDAP_PASSWORD
, seperti yang ditunjukkan dalam contoh berikut:docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -e AD_LDAP_PASSWORD=AD_LDAP_PASSWORD \ -vDATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:IMAGE_TAG
Aktifkan ekstensi
google_pg_auth
.Di file
postgresql.conf
, tambahkan atau ubah parameter berikut untuk mengaktifkan ekstensi dan mengonfigurasi koneksi LDAP. Filepostgresql.conf
berada di direktori data yang Anda pasang saat memulai image AlloyDB Omni.# --------------------------------------------------------------------------- # ALLOYDB ACTIVE DIRECTORY INTEGRATION SETTINGS # --------------------------------------------------------------------------- google_pg_auth.enable_auth = on google_pg_auth.ldap_uri = "AD_LDAP_SERVER_HOST" google_pg_auth.ldap_base_dn = AD_LDAP_BASE_DN google_pg_auth.ldap_bind_dn = AD_LDAP_BIND_DN google_pg_auth.auth_cache_ttl_sec = 3600
Lakukan penggantian berikut:
AD_LDAP_SERVER_HOST
: URI untuk server LDAP Active Directory Anda—misalnya,ldap://ad-controller.example.com
.AD_LDAP_BASE_DN
: Base Distinguished Name (DN) untuk melakukan penelusuran LDAP—misalnya,DC=example,DC=com
.AD_LDAP_BIND_DN
: Distinguished Name (DN) akun pengguna Active Directory yang digunakan AlloyDB Omni untuk terhubung dan melakukan penelusuran LDAP—misalnya,setupadmin@ad-example.com
.auth_cache_ttl_sec
adalah waktu yang berlalu hingga data di-cache oleh AlloyDB Omni per pengguna sebelum AlloyDB Omni mencoba menghubungi server LDAP lagi. Nilaiauth_cache_ttl_sec
dapat berkisar dari minimum 60 detik hingga maksimum 86.400 detik (24 jam).
Tambahkan
google_pg_auth
ke parametershared_preload_libraries
dipostgresql.conf
.Tambahkan baris berikut ke file
postgresql.conf
Anda:shared_preload_libraries='google_pg_auth,google_columnar_engine,google_job_scheduler,google_storage'
Mulai ulang database.
docker restart CONTAINER_NAME
Konfigurasi sertifikat LDAPS.
Untuk memastikan koneksi yang aman ke server Active Directory Anda melalui LDAPS, Anda memerlukan sertifikat CA.
Tempatkan file sertifikat LDAPS Anda di lokasi yang telah ditentukan sebelumnya berikut dalam image AlloyDB Omni:
/etc/ldap/ldap.crt
.
Mengelola pemetaan grup
Anda dapat membuat dan mengelola pemetaan antara grup Active Directory dan peran PostgreSQL menggunakan fungsi SQL.
Login ke cluster dan muat ekstensi
docker exec -it CONTAINER_NAME psql -h localhost -U postgres postgres=# CREATE EXTENSION google_pg_auth; CREATE EXTENSION
Membuat pemetaan grup
Untuk memetakan grup Active Directory ke peran grup PostgreSQL yang sudah Anda buat, gunakan fungsi map_ad_group()
:
SELECT google_pg_auth.map_ad_group(ad_group_name TEXT, ad_group_sid TEXT, pg_role_name TEXT);
Misalnya, untuk memetakan grup Active Directory ad-developers
ke peran PostgreSQL pg-developers
, gunakan perintah berikut:
SELECT google_pg_auth.map_ad_group('ad-developers', 'S-1-5-21-.....', 'postgres_read_only');
Untuk mengambil SID grup tertentu di Active Directory, gunakan perintah berikut di server Active Directory Anda:
C:\Users\Admin> Get-ADGroup -Identity ad-developers | select SID SID ----------------------------------------------- S-1-5-21-3168537779-1985441202-1799118680-1612
Menghapus pemetaan grup
Untuk menghapus pemetaan yang ada, gunakan fungsi unmap_ad_group()
. Fungsi ini
menghentikan sinkronisasi untuk grup tersebut, tetapi tidak menghapus pengguna dari
grup PostgreSQL jika mereka sudah menjadi anggota.
SELECT google_pg_auth.unmap_ad_group(ad_group_sid TEXT, pg_role_name TEXT);
Lihat contoh berikut:
SELECT google_pg_auth.unmap_ad_group('quinn@google.com', 'postgres_read_only');
Terhubung ke database AlloyDB Omni
Login ke database AlloyDB Omni menggunakan pengguna Active Directory. Anda harus mengaktifkan kinit
di klien tempat Anda terhubung.
Dalam
contoh berikut, pod postgres-client
telah menginstal kinit
dan psql
serta dikonfigurasi untuk terhubung ke cluster AlloyDB Omni menggunakan
klien psql
.
root@postgres-client:/# kinit AD_USER_NAME Password for user1REALM: root@postgres-client:/# psql -h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME@REALM -d postgres psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. user1=#
Akses Anda di database AlloyDB Omni ditentukan secara otomatis berdasarkan hal berikut:
- Keanggotaan Anda saat ini di grup Active Directory.
- Pemetaan yang ditentukan oleh administrator antara grup Active Directory tersebut dan peran PostgreSQL.
- Izin yang diberikan oleh administrator ke peran PostgreSQL tersebut.
Jika ini adalah pertama kalinya Anda terhubung, peran pengguna PostgreSQL Anda (your_ad_user@YOURDOMAIN.COM
) akan dibuat secara otomatis.
Setiap kali Anda login, sistem akan memeriksa keanggotaan grup Active Directory Anda saat ini dan memperbarui keanggotaan peran PostgreSQL yang sesuai agar cocok. Anda tidak perlu melakukan tindakan tertentu agar sinkronisasi ini terjadi.
Contoh koneksi database
Misalnya, asumsikan bahwa pengguna Quinn adalah bagian dari grup Active Directory
bernama ad_developers
. Administrator memetakan ad_developers
ke peran postgres bernama
pg_read_only
. Peran ini memiliki akses baca ke tabel bernama sales
. Saat pengguna login, mereka dapat mengakses tabel.
root@postgres-client:/# kinit quinn@REALM Password for quinn@YOUR.REALM: root@postgres-client:/# psql -h ALLOYDB_SERVER_HOST_NAME -U quinn@REALM -d postgres psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. postgres=# select * from sales; // Query will be run successfully
Dalam contoh berikut, Quinn dihapus dari grup ad_developers
di Active Directory:
root@postgres-client:/# kinit quinn@REALM Password for quinn@YOUR.REALM: root@postgres-client:/# psql -h ALLOYDB_SERVER_HOST_NAME -U quinn@REALM -d postgres psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. postgres=# select * from sales; // Query will fail
Batasan
- Pengelolaan grup dan izin secara manual: fitur ini hanya mengotomatiskan keanggotaan pengguna dalam grup PostgreSQL yang ada. Pembuatan grup tersebut dan pemberian izinnya tetap menjadi tugas administratif manual.
- Latensi sinkronisasi: keanggotaan hanya disinkronkan saat pengguna login. Perubahan apa pun yang dilakukan pada keanggotaan grup pengguna di Active Directory hanya tercermin di AlloyDB Omni pada sesi login pengguna berikutnya.
- Performa: pencarian LDAP menambahkan sedikit latensi ke proses login pengguna awal. Penyimpanan ke dalam cache membantu mengurangi latensi ini untuk proses login berikutnya dalam durasi waktu aktif yang dikonfigurasi (
auth_cache_ttl_sec
). - Penanganan error: jika server LDAP tidak dapat dijangkau, atau jika terjadi error lain selama proses sinkronisasi, AlloyDB Omni akan mencatat error tersebut. Namun, login pengguna akan tetap berhasil karena autentikasi GSSAPI berhasil. Hanya sinkronisasi keanggotaan grup untuk sesi tersebut yang akan gagal.
Langkah berikutnya
- Mengintegrasikan dukungan pengguna Active Directory dengan AlloyDB Omni.
- Memecahkan masalah integrasi Active Directory di AlloyDB Omni.