Mengintegrasikan dukungan pengguna Active Directory di Kubernetes

Pilih versi dokumentasi:

Dokumen ini menjelaskan cara mengaktifkan integrasi Active Directory di cluster database AlloyDB Omni berbasis Kubernetes sehingga Anda dapat mengizinkan pengguna berbasis Active Directory yang ada untuk mengakses database AlloyDB Omni Anda. Integrasi Active Directory menyediakan otorisasi menggunakan GSSAPI bagi pengguna yang diautentikasi menggunakan mekanisme Kerberos untuk mengakses AlloyDB Omni.

Untuk mengetahui informasi selengkapnya, lihat Ringkasan Active Directory.

Dokumen ini mengasumsikan bahwa Anda sudah memahami cara menerapkan file manifes Kubernetes dan menggunakan alat command line kubectl. Untuk mengetahui informasi selengkapnya, lihat Alat command line (kubectl).

Sebelum memulai

Untuk mengaktifkan integrasi Active Directory, Anda harus memiliki hal berikut:

  • Cluster AlloyDB Omni yang di-deploy di lingkungan Kubernetes
  • Keytab server Active Directory

Bermigrasi dari operator AlloyDB Omni Kubernetes 1.4.0 ke 1.5.0

Jika Anda menggunakan Integrasi Active Directory di operator AlloyDB Omni versi 1.4.0 atau yang lebih lama, Anda harus bermigrasi ke operator AlloyDB Omni versi 1.5.0.

Untuk bermigrasi ke operator AlloyDB Omni versi 1.5.0, ikuti langkah-langkah berikut:

  1. Upgrade operator AlloyDB Omni ke versi 1.5.0.
  2. Buat resource autentikasi yang ditentukan pengguna.
    1. Buat manifes resource UserDefinedAuthentication baru.
    2. Isi spec.dbclusterRef dengan nama DBCluster target.
    3. Isi spec.keytabSecretRef dengan nama secret keytab.
    4. Salin aturan pg_hba.conf yang ada dan relevan dengan autentikasi Kerberos dan Active Directory ke kolom spec.pgHbaEntries.
    5. Salin pg_ident.conf rules yang ada (jika ada) ke kolom spec.pgIdentEntries.
    6. Terapkan manifes baru ini, misalnya, kubectl apply -f user-auth-crd.yaml.
  3. Hapus Konfigurasi Pratinjau & Deploy Ulang Cluster.
    1. Dalam definisi resource DBCluster, hapus semua anotasi yang sebelumnya Anda gunakan untuk mengonfigurasi integrasi Active Directory, misalnya, aturan autentikasi berbasis host (HBA), aturan ident, dan anotasi file keytab.
    2. Hapus peta konfigurasi pg_hba dan pg_ident yang Anda buat.
    3. Terapkan kembali manifes DBCluster yang diupdate.

Mengonfigurasi dukungan Active Directory

  1. Buat dan terapkan secret dengan keytab:

    apiVersion: v1
    kind: Secret
    metadata:
      name: KEYTAB_SECRET_NAME
      namespace: DB_CLUSTER_NAMESPACE
    type: Opaque
    data:
      krb5.keytab: |
       KEYTAB_FILE_CONTENT
    

    Berikut adalah contoh perintah yang menghasilkan keytab di server Active Directory:

    ktpass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
    

    ALLOYDB_HOST adalah host yang mengarah ke DBCluster atau Alamat IP DBCluster.

  2. Terapkan manifes resource kustom autentikasi yang ditentukan pengguna berikut:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: UserDefinedAuthentication
    metadata:
      name: USER_DEFINED_AUTHENTICATION_NAME
      namespace: DB_CLUSTER_NAMESPACE
    spec:
      dbclusterRef:
        name: DB_CLUSTER_NAME
      keytabSecretRef:
        name: KEYTAB_SECRET_NAME
      pgHbaEntries:
        PG_HBA_ENTRIES
      pgIdentEntries:
        PG_IDENT_ENTRIES
    

    Ganti kode berikut:

    • USER_DEFINED_AUTHENTICATION_NAME: nama UserDefinedConfiguration, misalnya, DB_CLUSTER_NAME-ad-auth.
    • DB_CLUSTER_NAMESPACE: namespace Kubernetes untuk rencana cadangan ini. Namespace harus cocok dengan namespace cluster database.
    • DB_CLUSTER_NAME: nama cluster database Anda, yang Anda tetapkan saat Anda membuatnya.
    • KEYTAB_SECRET_NAME: nama keytab yang Anda buat.
    • PG_HBA_ENTRIES: Entri pg_hba.conf sebagai daftar string. Entri ini menggantikan entri default di pg_hba.conf. Jika Anda menambahkan konfigurasi yang tidak valid, pengguna tidak dapat login.

      Pada contoh sebelumnya, Anda menambahkan entri untuk autentikasi berbasis GSS diikuti dengan autentikasi berbasis sandi. Artinya, pengguna login menggunakan GSS API. Jika pendekatan login ini gagal, maka autentikasi berbasis sandi akan digunakan sebagai penggantian.

      Untuk mengetahui informasi selengkapnya, lihat File pg_hba.conf.

    • PG_IDENT_ENTRIES: Entri pg_ident.conf sebagai daftar string. Untuk menerapkan pemetaan nama pengguna, tentukan map= di kolom opsi dalam file pg_hba.conf. Untuk mengetahui informasi selengkapnya, lihat Peta Identitas.

      Lihat contoh berikut:

       apiVersion: v1
       kind: Secret
       metadata:
         name: db-keytab-dbcluster-sample
       type: Opaque
       data:
         krb5.keytab: |
           DUMMY_KEYTAB
       ---
       apiVersion: alloydbomni.dbadmin.goog/v1
       kind: UserDefinedAuthentication
       metadata:
         name: dbcluster-sample-ad-auth
       spec:
         dbclusterRef:
           name: dbcluster-sample
         keytabSecretRef:
           name: db-keytab-dbcluster-sample
         pgHbaEntries:
           - hostgssenc all           all      0.0.0.0/0     gss
           - hostgssenc all           all      ::1/128       gss
           - hostssl all all 0.0.0.0/0 scram-sha-256
           - hostssl all all ::/0 scram-sha-256
         pgIdentEntries:
           - usermap  active_directory_user postgres_user
      

Membuat peran database sebagai pengguna Active Directory

  1. Buat peran di database Anda yang cocok dengan pengguna Active Directory. Untuk membuat peran bagi pengguna Active Directory Anda, hubungkan ke cluster dan jalankan perintah berikut:

    username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
    
  2. Login ke database menggunakan pengguna Active Directory. Anda harus mengaktifkan kinit di klien tempat Anda terhubung. Dalam contoh ini, pod postgres-client telah menginstal kinit dan psql serta dikonfigurasi untuk terhubung ke cluster AlloyDB Omni menggunakan klien psql.

    kubectl exec -it postgres-client -n DB_CLUSTER_NAMESPACE -- bash
    root:/# kinit USERNAME
    Password for USERNAME@REALM:
    
    root:/# psql -h HOSTNAME -d DB_NAME -U USERNAME@REALM
    psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3)
    GSSAPI-encrypted connection
    Type "help" for help.
    
  3. Menjalankan kueri SQL.

    username=# select * from TABLE_NAME;
    

Menonaktifkan autentikasi Active Directory

Untuk menonaktifkan autentikasi Active Directory, jalankan perintah Helm berikut:

helm upgrade alloydbomni-operator PATH_TO_CHART -n alloydb-omni-system --set userDefinedAuthentication.enabled=false

Perintah ini menampilkan output berikut:

Release "alloydbomni-operator" has been upgraded. Happy Helming!
NAME: alloydbomni-operator
LAST DEPLOYED: CURRENT_TIMESTAMP
NAMESPACE: alloydb-omni-system
STATUS: deployed
REVISION: 2
TEST SUITE: None

Langkah berikutnya