Segurança e Autenticação
O PgArachne depende inteiramente do sistema de permissões do PostgreSQL. Ele não reinventa Listas
de Controle de Acesso (ACLs). Todas as consultas são executadas sob o papel de banco de dados específico
do usuário autenticado usando SET LOCAL ROLE.
1. Login Interativo (JWT)
Os usuários se autenticam usando seu nome de usuário e senha reais do PostgreSQL via a função de login. Se bem-sucedido, eles recebem um JWT genérico. Quando este token é usado, o PgArachne muda o papel ativo para esse usuário pela duração da requisição.
2. Contas de Serviço (Tokens de API)
Para sistemas automatizados ou scripts, você pode usar chaves de API de longa duração.
- Os tokens são armazenados na tabela
pgarachne.api_tokens. - Cada token é mapeado para um usuário/papel de banco de dados específico.
- Envie o token através do cabeçalho
Authorization: Bearer <token>.
A criação de tokens de API requer pgarachne_admin. Use pgarachne.add_api_token(...) com um papel membro de pgarachne_admin.
Configuração Crítica: Privilégios do Proxy
Como o PgArachne se conecta como o usuário definido em DB_USER (ex:
pgarachne) e muda a identidade para outros usuários, o usuário proxy deve ser
membro desses papéis alvo.
Execute este SQL para cada usuário/papel que precisa fazer login:
-- Permitir que 'pgarachne' mude para 'demo_user'
GRANT demo_user TO pgarachne;