Questão de Banco de Dados — Segurança em Banco de Dados — CESPE / CEBRASPE 2024
- Código
- ce403624
- Banca
- CESPE / CEBRASPE
- Órgão
- MPO
- Ano
- 2024
- Cargo
- APO ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. A cláusula correta para permitir que um usuário repasse privilégios recebidos a outros usuários é WITH GRANT OPTION, e não WITH EXTENDED PERMISSION. O comando GRANT concede privilégios, e a opção WITH GRANT OPTION autoriza o beneficiário a conceder esses mesmos privilégios a terceiros. A expressão "with extended permission" não existe na sintaxe SQL padrão.
A linguagem SQL é dividida em sublinguagens, cada uma com funções específicas. A DCL (Data Control Language) é a sublinguagem responsável pelo controle de acesso e permissões no banco de dados. Seus comandos principais são GRANT e REVOKE. O GRANT concede privilégios a usuários ou papéis (roles), enquanto o REVOKE retira esses privilégios. A sintaxe básica do GRANT é:
GRANT <privilégios> ON <objeto> TO <usuário> [WITH GRANT OPTION];A cláusula WITH GRANT OPTION é o mecanismo que permite ao usuário que recebeu o privilégio repassá-lo a outros usuários. Sem essa opção, o usuário pode usar o privilégio, mas não pode concedê-lo a ninguém. Essa é uma característica fundamental do controle de acesso discricionário (DAC – Discretionary Access Control), onde o proprietário do objeto ou quem tem o privilégio com a opção de concessão pode delegar autorizações.
A questão afirma que basta anexar a cláusula "with extended permission" ao comando GRANT para que o usuário possa repassar a autorização. Isso está incorreto por dois motivos: primeiro, a cláusula correta é WITH GRANT OPTION; segundo, "with extended permission" não é uma cláusula válida na sintaxe SQL padrão. Portanto, a afirmação é falsa.
É importante distinguir o GRANT de outros comandos SQL. O GRANT é um comando DCL, enquanto CREATE, ALTER, DROP são DDL (Data Definition Language), e INSERT, UPDATE, DELETE, SELECT são DML (Data Manipulation Language) ou DQL (Data Query Language). O REVOKE é o comando que remove privilégios concedidos anteriormente.
A pegadinha da banca está em trocar o nome da cláusula correta por um termo inventado. O candidato que conhece a sintaxe do GRANT percebe imediatamente que "with extended permission" não existe, mas quem não domina o assunto pode ser induzido a aceitar a afirmação como verdadeira.
A afirmação está incorreta porque a cláusula correta para permitir a delegação de privilégios é WITH GRANT OPTION, e não "with extended permission". A sintaxe do comando GRANT com essa opção é:
GRANT SELECT ON tabela TO usuario WITH GRANT OPTION;Isso permite que o usuário usuario conceda o privilégio SELECT sobre a tabela tabela a outros usuários. Sem essa opção, o usuário não pode repassar o privilégio. A expressão "with extended permission" não é reconhecida pelo padrão SQL e não tem efeito algum.
A banca troca o nome da cláusula correta (WITH GRANT OPTION) por um termo fictício (WITH EXTENDED PERMISSION). O candidato que sabe a sintaxe do GRANT percebe a pegadinha na hora; quem não sabe pode marcar como certo. Lembre-se: a delegação de privilégios no SQL é feita exclusivamente com WITH GRANT OPTION.
Gabarito: Errado.
Link permanente: /questoes/ce403624