Pour en savoir plus, consultez Présentation d'Active Directory.
Dans ce document, nous partons du principe que vous savez appliquer des fichiers manifestes Kubernetes et utiliser l'outil de ligne de commande kubectl. Pour en savoir plus, consultez Outil de ligne de commande (kubectl).
Avant de commencer
Pour activer l'intégration à Active Directory, vous devez disposer des éléments suivants :
- Un cluster AlloyDB Omni déployé dans un environnement Kubernetes
- Un keytab de serveur Active Directory
Migrer de l'opérateur Kubernetes AlloyDB Omni 1.4.0 vers la version 1.5.0
Si vous utilisez l'intégration Active Directory dans l'opérateur AlloyDB Omni version 1.4.0 ou antérieure, vous devez migrer vers l'opérateur AlloyDB Omni version 1.5.0.
Pour migrer vers la version 1.5.0 de l'opérateur AlloyDB Omni, procédez comme suit :
- Mettez à niveau l'opérateur AlloyDB Omni vers la version 1.5.0.
- Créez une ressource d'authentification définie par l'utilisateur.
- Créez un fichier manifeste de ressource UserDefinedAuthentication.
- Renseignez
spec.dbclusterRef
avec le nom du DBCluster cible. - Renseignez
spec.keytabSecretRef
avec le nom du secret keytab. - Copiez les règles
pg_hba.conf
existantes qui concernent l'authentification Active Directory et Kerberos dans le champspec.pgHbaEntries
. - Copiez le
pg_ident.conf rules
existant (le cas échéant) dans le champspec.pgIdentEntries
. - Appliquez ce nouveau fichier manifeste, par exemple
kubectl apply -f user-auth-crd.yaml
.
- Supprimez la configuration de l'aperçu et redéployez le cluster.
- Dans la définition de ressource DBCluster, supprimez toutes les annotations que vous avez utilisées précédemment pour configurer l'intégration Active Directory, par exemple les règles d'authentification basée sur l'hôte (HBA), les règles ident et l'annotation de fichier keytab.
- Supprimez les ConfigMaps
pg_hba
etpg_ident
que vous avez créés. - Appliquez à nouveau le fichier manifeste DBCluster mis à jour.
Configurer la compatibilité avec Active Directory
Créez et appliquez un secret avec le keytab :
apiVersion: v1 kind: Secret metadata: name: KEYTAB_SECRET_NAME namespace: DB_CLUSTER_NAMESPACE type: Opaque data: krb5.keytab: | KEYTAB_FILE_CONTENT
Voici un exemple de commande qui génère un fichier keytab sur le serveur Active Directory :
ktpass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
ALLOYDB_HOST
est l'hôte qui pointe vers le DBCluster ou l'adresse IP du DBCluster.Appliquez le fichier manifeste de ressource personnalisée d'authentification définie par l'utilisateur suivant :
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
Remplacez les éléments suivants :
USER_DEFINED_AUTHENTICATION_NAME
: nom de UserDefinedConfiguration, par exempleDB_CLUSTER_NAME-ad-auth
.DB_CLUSTER_NAMESPACE
: espace de noms Kubernetes pour ce plan de sauvegarde. L'espace de noms doit correspondre à celui du cluster de bases de données.DB_CLUSTER_NAME
: nom de votre cluster de bases de données, que vous avez attribué lors de sa création.KEYTAB_SECRET_NAME
: nom du keytab que vous avez créé.PG_HBA_ENTRIES
: entréespg_hba.conf
sous forme de liste de chaînes. Ces entrées écrasent les entrées par défaut danspg_hba.conf
. Si vous ajoutez une configuration non valide, les utilisateurs ne peuvent pas se connecter.Dans l'exemple précédent, vous avez ajouté des entrées pour l'authentification basée sur GSS, suivies de l'authentification basée sur un mot de passe. Cela signifie que l'utilisateur est connecté à l'aide de l'API GSS. Si cette approche de connexion échoue, l'authentification par mot de passe est utilisée comme solution de secours.
Pour en savoir plus, consultez le fichier pg_hba.conf.
PG_IDENT_ENTRIES
: entréespg_ident.conf
sous forme de liste de chaînes. Pour implémenter le mappage des noms d'utilisateur, spécifiezmap=
dans le champ des options du fichierpg_hba.conf
. Pour en savoir plus, consultez Ident Maps.Consultez l'exemple ci-dessous :
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
Créer des rôles de base de données en tant qu'utilisateur Active Directory
Créez un rôle dans votre base de données qui correspond à l'utilisateur Active Directory. Pour créer un rôle pour votre utilisateur Active Directory, connectez-vous au cluster et exécutez les commandes suivantes :
username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
Connectez-vous à la base de données à l'aide de l'utilisateur Active Directory. Vous devez avoir activé
kinit
dans le client auquel vous vous connectez. Dans cet exemple, le podpostgres-client
est configuré pour se connecter au cluster AlloyDB Omni à l'aide du client psql, et les outils kinit et psql y sont installés.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.
Exécutez des requêtes SQL.
username=# select * from TABLE_NAME;
Désactiver l'authentification Active Directory
Pour désactiver l'authentification Active Directory, exécutez la commande Helm suivante :
helm upgrade alloydbomni-operator PATH_TO_CHART -n alloydb-omni-system --set userDefinedAuthentication.enabled=false
La commande renvoie le résultat suivant :
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
Étapes suivantes
- Intégrez l'assistance utilisateur Active Directory à AlloyDB Omni.
- Intégrez la compatibilité avec les groupes Active Directory à AlloyDB Omni.
- Intégrez la compatibilité avec les groupes Active Directory sur Kubernetes.
- Résoudre les problèmes d'intégration d'Active Directory dans AlloyDB Omni