La configuration d'Active Directory dans AlloyDB Omni est facultative et désactivée par défaut. Seuls les environnements utilisant Active Directory Server pour l'authentification peuvent utiliser ce mécanisme de configuration.
Avant de commencer
Avant d'intégrer Active Directory, assurez-vous de remplir les conditions suivantes :
- Assurez-vous qu'Active Directory est configuré.
- Obtenez le
REALM
du serveur Active Directory. - Obtenez le nom d'hôte du centre de distribution de clés (KDC) du serveur Active Directory. Le nom d'hôte est stocké dans les images Docker.
- Obtenez le nom d'hôte du serveur d'administration du serveur Active Directory. Ce nom d'hôte est stocké dans les images Docker.
- Assurez-vous d'avoir accès au serveur Active Directory pour pouvoir générer un fichier
.keytab
. - Choisissez un utilisateur Active Directory à utiliser pour les tests et la connexion.
- Obtenez un fichier
.keytab
à partir du serveur Active Directory existant.
Obtenir un fichier .keytab à partir du serveur Active Directory existant
Pour obtenir un fichier keytab à partir du serveur Active Directory, procédez comme suit :
- Connectez-vous en tant qu'administrateur au terminal PowerShell du serveur Active Directory.
- Créez un utilisateur nommé
postgres
en exécutant la commande suivante ou en utilisant l'interface utilisateur Active Directory. - Générez un fichier keytab de principal de service qui correspond à ce serveur Active Directory.
- Copiez le fichier keytab sur votre machine Linux.
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
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
Où <HOST>
est le nom de domaine complet du serveur sur lequel vous prévoyez de déployer AlloyDB Omni (par exemple, alloydb-server.ad.example.com
). Vous devez configurer le même hôte dans le fichier krb5.conf
de votre mappage de domaine.
Activer l'authentification Active Directory
Pour activer l'authentification Active Directory dans AlloyDB Omni, suivez ces étapes, qui incluent la configuration de l'interface de programmation d'application Generic Security Service (GSSAPI), qui est une interface de programmation d'application permettant aux programmes d'accéder aux services de sécurité.
Ajoutez les entrées suivantes au fichier
/var/lib/postgresql/data/pg_hba.conf
, avant l'entrée
host all all all scram-sha-256
.Exécutez la commande Docker suivante pour ajouter
gss
dans le conteneur :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
Exécutez la commande Docker suivante pour vérifier que le fichier
pg_hba.conf
se trouve dans le conteneur :docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Vérifiez que l'entrée suivante figure dans le fichier :
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Pour en savoir plus, consultez le fichier pg_hba.conf.
Copiez le fichier keytab dans le répertoire de données de l'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
Le fichier keytab est généré par Kerberos pour le serveur PostgreSQL. Pour en savoir plus sur l'authentification, consultez Authentification GSSAPI.
Ajoutez une entrée pour le fichier keytab au fichier
/var/lib/postgresql/data/DATA_DIR/postgresql.conf
.Exécutez la commande Docker suivante pour ajouter l'entrée dans le conteneur :
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
Exécutez la commande Docker suivante pour vérifier le fichier
postgresql.conf
à l'intérieur du conteneur :docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Assurez-vous que l'entrée suivante figure dans le fichier :
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
Pour en savoir plus, consultez krb_server_keyfile.
Facultatif : Ajoutez des entrées au fichier
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
.Lorsque vous utilisez un système d'authentification externe tel que GSSAPI, le nom de l'utilisateur du système d'exploitation qui a initié la connexion peut ne pas être le même que celui de l'utilisateur (rôle) de la base de données que vous souhaitez utiliser.
Dans ce cas, spécifiez le mappage entre l'utilisateur système et l'utilisateur PostgreSQL dans le fichier
/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
Pour implémenter le mappage des noms d'utilisateur, spécifiez
map=gssmap
dans le champ des options du fichierpg_hba.conf
.Pour en savoir plus sur l'authentification basée sur l'identité, consultez Cartes d'identité.
Rechargez les configurations PostgreSQL à l'aide de la commande suivante :
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Tester l'authentification Active Directory
Pour vérifier que l'authentification Active Directory fonctionne, procédez comme suit :
- Connectez-vous à Active Directory à l'aide de
kinit
. Exécutez la commande
psql
suivante à partir de la machine sur laquelle vous exécutez habituellementkinit
: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=#
Désactiver l'authentification Active Directory
Pour désactiver l'authentification Active Directory dans AlloyDB Omni, procédez comme suit pour désactiver GSSAPI :
Supprimez les entrées du fichier
pg_hba.conf
qui pointent vers la méthode d'authentificationgss
: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
Rechargez les configurations PostgreSQL à l'aide de la commande suivante :
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Étapes suivantes
- Intégrer la compatibilité avec les utilisateurs Active Directory sur Kubernetes
- Résoudre les problèmes liés à Active Directory dans 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