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;