Sécurité & Authentification
PgArachne s’appuie entièrement sur le système de permission de PostgreSQL. Il ne réinvente pas les listes
de contrôle d’accès (ACL). Toutes les requêtes sont exécutées sous le rôle de base de données spécifique
de l’utilisateur authentifié en utilisant SET LOCAL ROLE.
1. Connexion interactive (JWT)
Les utilisateurs s’authentifient en utilisant leur vrai nom d’utilisateur et mot de passe PostgreSQL via la fonction de connexion. En cas de succès, ils reçoivent un JWT générique. Lorsque ce jeton est utilisé, PgArachne bascule le rôle actif vers cet utilisateur pour la durée de la requête.
2. Comptes de service (Tokens API)
Pour les systèmes automatisés ou les scripts, vous pouvez utiliser des clés API longue durée.
- Les jetons sont stockés dans la table
pgarachne.api_tokens. - Chaque jeton est mappé à un utilisateur/rôle de base de données spécifique.
- Envoyez le jeton via l’en-tête
Authorization: Bearer <token>.
La création de tokens API nécessite pgarachne_admin. Utilisez pgarachne.add_api_token(...) avec un rôle membre de pgarachne_admin.
Configuration critique : Privilèges Proxy
Puisque PgArachne se connecte en tant qu’utilisateur défini dans DB_USER (ex :
pgarachne) et bascule l’identité vers d’autres utilisateurs, l’utilisateur proxy
doit être membre de ces rôles cibles.
Exécutez ce SQL pour chaque utilisateur/rôle qui doit se connecter :
-- Autoriser 'pgarachne' à basculer vers 'demo_user'
GRANT demo_user TO pgarachne;