Mengintegrasikan dukungan pengguna Active Directory dengan AlloyDB Omni

Pilih versi dokumentasi:

Halaman ini menjelaskan cara mengintegrasikan AlloyDB Omni dengan implementasi Active Directory yang ada sehingga Anda dapat menggunakan nama pengguna dan sandi yang ada untuk mengakses database AlloyDB Omni. Integrasi Active Directory menyediakan Kerberos sebagai mekanisme autentikasi default untuk berkomunikasi dengan AlloyDB Omni. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Active Directory.

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:

  1. Login sebagai administrator ke terminal PowerShell server Active Directory.
  2. Buat pengguna bernama postgres dengan menjalankan perintah berikut, atau menggunakan antarmuka pengguna Active Directory.
  3.   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
      
  4. Buat keytab utama layanan yang dipetakan ke server Active Directory ini.
  5.   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.

  6. Salin file keytab ke komputer Linux 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.

  1. Tambahkan entri berikut ke file /var/lib/postgresql/data/pg_hba.conf, sebelum entri
    host all all all scram-sha-256.

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

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

  3. Tambahkan entri untuk file keytab ke file /var/lib/postgresql/data/DATA_DIR/postgresql.conf.

    1. 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
      
    2. Jalankan perintah Docker berikut untuk memverifikasi file postgresql.conf di dalam container:

      docker exec CONTAINER_NAME tail  /var/lib/postgresql/data/postgresql.conf
      
    3. Pastikan entri berikut ada dalam file:

      krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
      

      Untuk mengetahui informasi selengkapnya, lihat krb_server_keyfile.

  4. 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 file pg_hba.conf.

    Untuk mengetahui informasi selengkapnya tentang autentikasi berbasis identitas, lihat Peta Identitas.

  5. 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:

  1. Login ke Active Directory menggunakan kinit.
  2. Jalankan perintah psql berikut dari mesin tempat Anda biasanya menjalankan kinit:

    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:

  1. Hapus entri dalam file pg_hba.conf yang mengarah ke metode autentikasi gss:

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