Introdução
Em 1976, dois pesquisadores da IBM, Patricia Griffiths e Bradford Wade, publicaram "An Authorization Mechanism for a Relational Database System" — o paper que descreveu o modelo de autorização construído para o System R, o protótipo que deu origem ao SQL. O problema que eles resolviam era muito concreto: pela primeira vez, múltiplos departamentos e usuários compartilhavam o mesmo banco de dados físico, em vez de cada aplicação ter seus próprios arquivos isolados. Alguém no financeiro não deveria conseguir apagar tabelas de RH só porque tinha acesso ao mesmo servidor. Esse paper é literalmente a origem do GRANT/REVOKE que você usa hoje.
GRANT, concedendo privilégios
GRANT SELECT, INSERT ON pedidos TO usuario_vendas;
GRANT ALL PRIVILEGES ON clientes TO admin_sistema;
GRANT EXECUTE ON PROCEDURE transferir_saldo TO app_usuario;
Você concede ações específicas (SELECT, INSERT, UPDATE, DELETE, EXECUTE...) sobre objetos específicos (tabelas, views, procedures) para usuários ou roles específicos.
REVOKE, retirando privilégios
REVOKE INSERT ON pedidos FROM usuario_vendas;
REVOKE ALL PRIVILEGES ON clientes FROM ex_funcionario;
O oposto simétrico do GRANT — remove exatamente o que foi concedido, sem afetar outros privilégios que a pessoa já tinha.
WITH GRANT OPTION, repassando permissões
Isso permite que gerente_vendas também conceda esse mesmo privilégio para outras pessoas — útil para delegar administração de acesso sem te tornar um gargalo, mas usado com cautela (cada nível de repasse é um lugar a mais onde o controle pode escapar).
Top comments (0)