PL-SQL: Concessão de privilégios no Oracle 11g
Gabarito: letra C. A alternativa C está correta porque, segundo a documentação do Oracle e a sintaxe SQL, quando um privilégio é concedido com a cláusula WITH GRANT OPTION, o usuário que o recebe pode, por sua vez, conceder o mesmo privilégio a outros usuários, inclusive incluindo novamente a cláusula WITH GRANT OPTION. Essa é a funcionalidade que permite a propagação de privilégios. As demais alternativas contêm erros conceituais ou de sintaxe.
A questão aborda o comando GRANT da DCL (Data Control Language) utilizado para conceder privilégios de acesso a objetos do banco de dados. O Oracle 11g segue o padrão SQL nesse aspecto.
Alternativa A — ❌ Incorreta
A afirmação confunde CREATE ROLE com a concessão direta de privilégios. Para repassar privilégios a outros usuários, utiliza-se a cláusula WITH GRANT OPTION no GRANT, e não a criação de funções (CREATE ROLE). CREATE ROLE serve para criar papéis (roles), mas não é o mecanismo para repassar privilégios de objeto individualmente.
Alternativa B — ❌ Incorreta
O proprietário de um objeto (quem o criou) pode, sim, conceder privilégios sobre ele para outros usuários usando o comando GRANT. A afirmação nega essa possibilidade, o que é falso.
Alternativa C — ✅ Correta ⟵ GABARITO
Essa é a descrição correta da cláusula WITH GRANT OPTION. Conforme a sintaxe do comando GRANT:
SQL – DCL: GRANT <lista de privilégios> ON <objeto> TO <usuário> [WITH GRANT OPTION];
Quando a opção WITH GRANT OPTION é usada, o beneficiário pode conceder o privilégio a outros usuários, e também pode incluir a própria opção WITH GRANT OPTION em suas concessões. Dessa forma, a capacidade de repassar o privilégio se propaga.
Alternativa D — ❌ Incorreta
Se a conta de um usuário for eliminada (comando DROP USER), todos os privilégios que ele concedeu a outros usuários são automaticamente revogados (cascade). Portanto, os privilégios são afetados sim (são removidos). A afirmativa tentou sugerir que não seriam afetados, o que é incorreto.
Alternativa E — ❌ Incorreta
Quando um administrador revoga os privilégios de um usuário (com REVOKE), os privilégios que esse usuário havia concedido a terceiros também são revogados (a menos que se use a opção RESTRICT, que é incomum). Logo, é necessário conceder novamente os privilégios a esses terceiros se desejar mantê-los. A afirmação diz o contrário.
Gabarito: letra C.