Active Directory in AlloyDB Omni auf Kubernetes einbinden

Wählen Sie eine Dokumentationsversion aus:

In diesem Dokument wird beschrieben, wie Sie die Active Directory Integration in Ihrem Kubernetes-basierten AlloyDB Omni-Datenbankcluster aktivieren, damit Ihre vorhandenen Active Directory-basierten Nutzer auf Ihre AlloyDB Omni-Datenbank zugreifen können. Die Active Directory-Integration bietet die Autorisierung mit GSSAPI für Nutzer, die mit dem Kerberos-Mechanismus authentifiziert wurden, um auf AlloyDB Omni zuzugreifen.

Die Active Directory-Konfiguration in AlloyDB Omni ist optional und standardmäßig deaktiviert. Nur Umgebungen, die Active Directory Server zur Authentifizierung verwenden, können diesen Konfigurationsmechanismus nutzen.

In diesem Dokument wird davon ausgegangen, dass Sie mit dem Anwenden von Kubernetes-Manifestdateien und der Verwendung des Befehlszeilentools kubectl vertraut sind. Weitere Informationen finden Sie unter Befehlszeilentool (kubectl).

Hinweis

Für die Aktivierung der Active Directory-Integration benötigen Sie Folgendes:

  • Einen AlloyDB Omni-Cluster, der in einer Kubernetes-Umgebung bereitgestellt wurde
  • Eine Keytab für den Active Directory-Server

Active Directory-Authentifizierung aktivieren

Führen Sie den folgenden Helm Befehl aus, um die Active Directory-Authentifizierung zu aktivieren:

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

Der Befehl gibt die folgende Ausgabe zurück:

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

Status der Active Directory-Authentifizierung prüfen

So prüfen Sie den Status der Active Directory-Authentifizierung:

  1. Rufen Sie die aktuellen args für die Bereitstellung für den Flottencontroller ab und prüfen Sie, ob enable-user-defined-authentication auf true gesetzt ist. Führen Sie dazu die folgenden Befehle aus:

    kubectl get deployment -n alloydb-omni-system fleet-controller-manager -o json | jq '.spec.template.spec.containers[0].args'
    
    [
      "--health-probe-bind-address=:8081",
      "--metrics-bind-address=127.0.0.1:8080",
      "--leader-elect",
      "--image-registry=gcr.io",
      ...
      "--enable-user-defined-authentication=true"
    ]
    
  2. Rufen Sie die aktuellen Bereitstellungsargumente für den lokalen Controller ab und prüfen Sie, ob enable-user-defined-authentication auf true gesetzt ist. Führen Sie dazu die folgenden Befehle aus:

    kubectl get deployment -n alloydb-omni-system local-controller-manager -o json | jq '.spec.template.spec.containers[0].args'
    
    [
      "--health-probe-bind-address=:8081",
      "--metrics-bind-address=127.0.0.1:8080",
      "--leader-elect",
      "--deployment-platform=generic-k8s",
      "--enable-backup-from-standby=true",
      "--enable-user-defined-authentication=true"
    ]
    

Active Directory-Unterstützung konfigurieren

  1. Erstellen und wenden Sie eine ConfigMap mit Einträgen aus der Datei pg_hba.conf an:

    kubectl apply -f - 
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: pg-hba-config
    data:
      pg_hba_entries: |
        # Active Directory-based users
        hostgssenc all all 0.0.0.0/0    gss
        hostgssenc all all ::1/128      gss
        # Database-based users
        hostssl    all all 0.0.0.0/0  scram-sha-256
        hostssl    all all ::/0       scram-sha-256
    EOF
    

    Ändern Sie diese Einträge nach Bedarf. Diese Einträge überschreiben die Standardeinträge in pg_hba.conf. Wenn Sie eine ungültige Konfiguration hinzufügen, können sich Nutzer nicht anmelden.

    Im vorherigen Beispiel haben Sie Einträge für die GSS-basierte Authentifizierung und dann für die passwortbasierte Authentifizierung hinzugefügt. Das bedeutet, dass der Nutzer mit der GSS-API angemeldet wird. Wenn dieser Anmeldeansatz fehlschlägt, wird die passwortbasierte Authentifizierung als Fallback verwendet.

    Weitere Informationen finden Sie in der Datei pg_hba.conf.

  2. Erstellen und wenden Sie ein Secret mit der Keytab an:

     kubectl apply -f - 
     apiVersion: v1
     kind: Secret
     metadata:
       name: db-keytab-dbcluster-sample
     type: Opaque
     data:
       krb5.keytab: |
        BASE64_ENCODED_KEYTAB
     EOF
     

  3. Optional: Erstellen und wenden Sie eine ConfigMap mit Einträgen aus pg_ident.conf an.

      kubectl apply -f - EOF
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: pg-ident-config
      data:
        pg_ident_entries: |
    MAP_NAME /^(.)@YOUR.REALM$/ \1 MAP_NAME /^(.)@your.realm$/ \1 EOF

    Wenn Sie die Zuordnung von Nutzernamen implementieren möchten, geben Sie map=MAP_NAME im Feld „Optionen“ in der Datei pg_hba.conf an.

    Weitere Informationen finden Sie unter Identitätszuordnungen.

  4. Fügen Sie der DBCluster-Spezifikation Anmerkungen hinzu, um die Active Directory-Integration zu aktivieren.

    kubectl apply -f - DB_CLUSTER_NAME
    type: Opaque
    data:
      DB_CLUSTER_NAME: "ENCODED_PASSWORD"
    ---
    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
      annotations:
        dbs.dbadmin.goog.com/pg-hba-config-map: pg-hba-config
        dbs.dbadmin.goog.com/pg-ident-config-map: pg-ident-config
        dbs.dbadmin.goog.com/keytab-ref: db-keytab-dbcluster-sample
    spec:
      databaseVersion: "DB_VERSION"
      primarySpec:
        adminUser:
          passwordRef:
            name: db-pw-DB_CLUSTER_NAME
        resources:
          memory: MEMORY_SIZE
          cpu: CPU_COUNT
          disks:
          - name: DataDisk
            size: DISK_SIZE
    EOF
    

Datenbankrollen als Active Directory-Nutzer erstellen

  1. Erstellen Sie in Ihrer Datenbank eine Rolle, die dem Active Directory-Nutzer entspricht. Wenn Sie eine Rolle für Ihren Active Directory-Nutzer erstellen möchten, stellen Sie eine Verbindung zum Cluster her und führen Sie die folgenden Befehle aus:

    username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
    
  2. Melden Sie sich mit dem Active Directory-Nutzer in der Datenbank an. kinit muss auf dem Client aktiviert sein, von dem aus Sie die Verbindung herstellen.

    kubectl exec -it postgres -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. Führen Sie SQL-Abfragen aus.

    username=# select * from ;
    

Active Directory-Authentifizierung deaktivieren

Führen Sie den folgenden Helm-Befehl aus, um die Active Directory-Authentifizierung zu deaktivieren:

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

Sie können den Status der Active Directory-Authentifizierung prüfen.

Der Befehl gibt die folgende Ausgabe zurück:

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