Database Management Systems: A Complete Guide Help

GRANT: Concedendo Privilégios

╔══════════════════════════════════════════════════════════════╗ ║ PERMISSION_MASTER >> Gerenciamento de Privilégios ║ ║ INSTRUTOR: GRANT_SPECIALIST ║ ╚══════════════════════════════════════════════════════════════╝

Sintaxe Básica

GRANT_SPECIALIST explica: "O comando GRANT é fundamental para controle de acesso!"

-- Sintaxe básica GRANT privilégio ON objeto TO destinatário; -- Múltiplos privilégios GRANT SELECT, INSERT, UPDATE ON tabela TO usuario; -- Todos os privilégios GRANT ALL PRIVILEGES ON tabela TO admin;

Tipos de Privilégios

PRIVILEGE_MASTER apresenta os principais privilégios:

1. Privilégios de Tabela

-- Privilégios básicos GRANT SELECT ON clientes TO analista; GRANT INSERT, UPDATE ON produtos TO vendedor; GRANT DELETE ON temp_dados TO admin; -- Privilégios em colunas específicas GRANT SELECT (nome, email) ON usuarios TO suporte; GRANT UPDATE (preco, estoque) ON produtos TO gerente;

2. Privilégios de Schema

-- Acesso ao schema GRANT USAGE ON SCHEMA public TO usuario; GRANT CREATE ON SCHEMA analytics TO dev_team; -- Todos os objetos do schema GRANT SELECT ON ALL TABLES IN SCHEMA public TO leitor;

3. Privilégios de Database

-- Privilégios de banco GRANT CONNECT ON DATABASE app_db TO app_user; GRANT TEMPORARY ON DATABASE temp_db TO etl_user; GRANT ALL PRIVILEGES ON DATABASE prod_db TO admin;

Cenários Comuns

IMPLEMENTATION_EXPERT demonstra casos práticos:

1. Setup de Aplicação

-- Usuário de aplicação GRANT CONNECT ON DATABASE app_db TO app_user; GRANT USAGE ON SCHEMA public TO app_user; GRANT SELECT, INSERT, UPDATE ON tabela_clientes TO app_user; GRANT EXECUTE ON FUNCTION proc_negocio TO app_user;

2. Setup de Analista

-- Analista de dados GRANT CONNECT ON DATABASE analytics_db TO analista; GRANT USAGE ON SCHEMA relatorios TO analista; GRANT SELECT ON ALL TABLES IN SCHEMA relatorios TO analista; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA relatorios TO analista;

Boas Práticas

SECURITY_GUARDIAN compartilha diretrizes:

1. Princípio do Menor Privilégio

-- Privilégios específicos GRANT SELECT ON vw_relatorio TO analista; GRANT INSERT ON log_acesso TO app_user; -- Evitar privilégios excessivos REVOKE ALL ON ALL TABLES IN SCHEMA public FROM PUBLIC;

2. Gerenciamento via Roles

-- Criar e configurar role CREATE ROLE vendedores; GRANT SELECT, INSERT ON pedidos TO vendedores; GRANT UPDATE (status) ON pedidos TO vendedores; -- Atribuir role a usuários GRANT vendedores TO usuario1, usuario2;

3. Auditoria

-- Visualizar privilégios SELECT grantee, privilege_type, table_name FROM information_schema.role_table_grants WHERE table_schema = 'public'; -- Logging de alterações CREATE TRIGGER audit_grants AFTER GRANT ON *.* FOR EACH STATEMENT EXECUTE FUNCTION log_grant_changes();
╔════════════════════════════════════════════╗ ║ CHECKLIST DE CONCESSÃO: ║ ║ □ Privilégios mínimos necessários? ║ ║ □ Role apropriada existe? ║ ║ □ Escopo bem definido? ║ ║ □ Auditoria configurada? ║ ║ □ Documentação atualizada? ║ ╚════════════════════════════════════════════╝

Troubleshooting

PROBLEM_SOLVER apresenta soluções:

1. Verificação de Privilégios

-- Verificar privilégios concedidos SELECT * FROM information_schema.table_privileges WHERE grantee = 'usuario'; -- Verificar roles do usuário SELECT r.rolname FROM pg_roles r JOIN pg_auth_members m ON m.roleid = r.oid WHERE m.member = 'usuario'::regrole;

2. Resolução de Problemas

-- Revogar e reconceder privilégios REVOKE ALL PRIVILEGES ON tabela FROM usuario; GRANT SELECT, INSERT ON tabela TO usuario; -- Verificar conflitos SELECT * FROM information_schema.role_table_grants WHERE table_name = 'tabela_problema';

Conclusão

GRANT_SPECIALIST conclui: "GRANT é uma ferramenta poderosa para segurança. Use-a com sabedoria e mantenha documentação clara dos privilégios concedidos."

26 abril 2025