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;