Comment gérer les utilisateurs et bases de données
Ce guide explique comment créer des bases de données, activer des extensions, créer des utilisateurs, gérer leurs droits et renouveler leurs mots de passe sur un cluster PostgreSQL, depuis la console Hikube.
Prérequis
- Un cluster PostgreSQL au statut Prêt dans votre projet (voir le démarrage rapide)
- Le client
psqlpour tester les connexions - Pour l'onglet API : une clé d'API
admindu projet et les variablesHIKUBE_API,HIKUBE_API_KEYetPROJECT_ID(voir Préparer l'environnement) ; les exemples utilisentcurletjq
Toutes les opérations se font depuis la page du cluster : DB & Messaging → PostgreSQL → nom du cluster. La page comporte deux onglets, Bases de données et Utilisateurs.
Étapes
1. Créer une base de données
- Console
- API
- Dans l'onglet Bases de données, cliquez sur Créer.
- Saisissez le Nom de la base de données, par exemple
analytics: 1 à 54 caractères, minuscules, chiffres, tirets bas et tirets, en commençant par une lettre ou un tiret bas, mais pas parpg_. Les noms des bases systèmepostgres,template0ettemplate1sont refusés. - Dans Extensions PostgreSQL, cochez les extensions à activer à la création.
- Cliquez sur Créer.
La base apparaît dans la liste, avec ses extensions. Elle figure aussi dans la carte Connexion et Bases de données, sous Bases de données initiales.
curl -sS -X POST "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/databases" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"databaseName": "analytics",
"extensions": ["pg_stat_statements", "pgcrypto"]
}'
Le nom de base suit les mêmes règles que dans la console. GET /postgres/v1alpha1/extensions renvoie les extensions disponibles, et GET $HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/databases liste les bases du cluster avec leurs extensions et leurs rôles.
Vous pouvez aussi déclarer des bases dès la création du cluster, à l'étape Bases de l'assistant. La base système postgres est toujours créée automatiquement ; elle est réservée à la plateforme et ne peut recevoir aucun droit.
2. Gérer les extensions d'une base
- Console
- API
- Dans l'onglet Bases de données, ouvrez le menu Actions de la base.
- Choisissez Gérer les extensions.
- Cochez ou décochez les extensions, puis cliquez sur Enregistrer.
Sur une base système, Gérer les extensions et Supprimer la base de données sont désactivés : « Base système : elle ne peut être ni modifiée ni supprimée. »
La liste proposée correspond aux extensions disponibles sur la plateforme, notamment pg_stat_statements, pgcrypto, uuid-ossp, pg_trgm, hstore, citext, postgres_fdw, pgaudit et vector (pgvector).
curl -sS -X PATCH "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/databases/analytics" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"extensions": ["pg_stat_statements", "pgcrypto", "vector"]}'
La liste extensions, si elle est envoyée, remplace la liste actuelle : indiquez toutes les extensions à conserver ; [] les retire toutes. Les droits des utilisateurs sur la base ne changent pas.
3. Créer un utilisateur
- Console
- API
- Dans l'onglet Utilisateurs, cliquez sur Créer un utilisateur.
- Saisissez le Nom d'utilisateur : 3 à 16 caractères, minuscules, chiffres et tirets bas, commençant par une lettre ou un tiret bas (par exemple
report_reader). - Dans Bases de données, cliquez sur Ajouter un accès pour chaque base à laquelle l'utilisateur doit accéder :
- Nom de la base : sélectionnez la base (les bases système ne sont pas proposées) ;
- Droits : Administrateur (Admin) (lecture et écriture) ou Lecture seule (Read-only).
- Cliquez sur Créer l'utilisateur.
L'écran « Utilisateur créé avec succès ! » affiche le mot de passe généré.
Copiez ce mot de passe immédiatement et conservez-le en lieu sûr : il ne sera plus affiché après avoir quitté cet écran.
curl -sS -X POST "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/users" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "report_reader",
"config": {
"databases": {
"analytics": {"role": "readonly"}
}
}
}' | jq '{username, password}'
username: 1 à 63 caractères, minuscules, chiffres et tirets bas, commençant par une lettre ou un tiret bas ;postgresest réservé ;config.databases: un objet dont chaque clé est un nom de base et chaque valeur{"role": "admin"}ou{"role": "readonly"}. Une base qui n'existe pas encore est créée ;config.privileges.replication(facultatif) :trueaccorde le droit de réplication.
Le champ password de la réponse n'est renvoyé qu'une seule fois. Enregistrez-le directement dans votre gestionnaire de secrets.
Cliquez ensuite sur Terminer et retourner au cluster.
4. Modifier les droits d'un utilisateur
- Console
- API
- Dans l'onglet Utilisateurs, ouvrez le menu Actions de l'utilisateur.
- Choisissez Gérer les accès.
- Ajoutez des accès avec Ajouter, modifiez les Droits ou retirez une ligne.
- Cliquez sur Enregistrer.
Un droit sur une base système (postgres, template0 ou template1), attribué avant que ces bases soient refusées, s'affiche verrouillé, avec un avertissement : vous pouvez retirer la ligne, mais pas modifier ses Droits.
curl -sS -X PATCH "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/users/report_reader" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"config": {
"databases": {
"analytics": {"role": "readonly"},
"myapp": {"role": "admin"}
}
}
}'
L'objet config.databases, s'il est envoyé, remplace l'ensemble des droits de l'utilisateur : une base absente de la requête lui est retirée, et {} les retire tous. config.privileges.replication n'est modifié que s'il est envoyé ; voir Mises à jour partielles. Consultez les droits actuels avec GET $HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/users/report_reader.
Le nom d'utilisateur ne peut pas être modifié.
5. Renouveler le mot de passe d'un utilisateur
- Console
- API
- Ouvrez le menu Actions de l'utilisateur et choisissez Changer le mot de passe.
- Dans la fenêtre Rotation du mot de passe, cliquez sur Effectuer la rotation.
- Copiez le nouveau mot de passe affiché, puis cliquez sur Terminer.
curl -sS -X POST "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/users/report_reader/rotate-password" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq -r '.password'
La requête n'a pas de corps. Le nouveau mot de passe n'est renvoyé que dans cette réponse.
La rotation révoque immédiatement l'ancien mot de passe. Mettez à jour vos applications sans attendre pour éviter une coupure.
6. Supprimer une base ou un utilisateur
- Console
- API
- Base : menu Actions → Supprimer la base de données.
- Utilisateur : menu Actions → Supprimer l'utilisateur.
Confirmez en saisissant le nom exact de l'élément, puis cliquez sur Supprimer définitivement. La suppression d'une base efface ses données.
# Supprimer une base (ses données sont effacées)
curl -sS -X DELETE "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/databases/analytics" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY"
# Supprimer un utilisateur (ses droits sur toutes les bases sont retirés)
curl -sS -X DELETE "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/users/report_reader" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY"
7. Tester la connexion
# Utilisateur en lecture seule
psql "host=<hôte> port=5432 dbname=analytics user=report_reader sslmode=require"
-- Doit réussir
SELECT current_user, current_database();
-- Doit échouer pour un utilisateur en lecture seule
CREATE TABLE test (id int);
Vérification
- Console
- API
- L'onglet Bases de données liste vos bases et leurs extensions.
- L'onglet Utilisateurs liste vos utilisateurs avec, pour chacun, les bases accessibles et le droit associé (par exemple
analytics (Lecture seule)ouanalytics (Admin)).
# Bases, extensions et utilisateurs par rôle
curl -sS "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/databases" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '.databases[] | {databaseName, extensions, roles}'
# Utilisateurs et droits par base
curl -sS "$HIKUBE_API/postgres/v1alpha1/projects/$PROJECT_ID/clusters/demopg/users" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '.users[] | {username, databases: .config.databases}'
Ces lectures suffisent avec une clé read.
Pour aller plus loin
- Concepts PostgreSQL : droits, règles de nommage
- Modifier les ressources : preset, disque, accès externe