Questão nº 36
Questão de Tecnologia da Informação · FGV TJ-MS 2024 (nº 36)
Observe o script de criação e concessão de privilégios em Oracle:
----conexão no banco de dados xpto
CONNECT adm@xpto
----criação de usuário no banco de dados xpto
CREATE USER user1
IDENTIFIED BY senha1
DEFAULT TABLESPACE "usr_dados"
TEMPORARY TABLESPACE "temp"
ACCOUNT UNLOCK;
GRANT CONNECT TO user1;
GRANT SELECT ANY TABLE TO user1;
GRANT DELETE, UPDATE, INSERT ON apl.tab1 TO user1;
GRANT DELETE, UPDATE, INSERT ON apl.tab2 TO user1;
REVOKE SELECT ON apl.tab2 FROM user1;
Após a execução do script apresentado, é correto afirmar que "user1" tem permissão de executar qualquer Data Manipulation Language (DML):
- Ana tabela "temp";
- Bna tabela "apl.tab1"; (alternativa correta)
- Cna tabela "apl.tab2";
- Dna tabela "usr_dados";
- Eem todas as tabelas de "xpto".
Resposta comentada
Gabarito Alternativa B
Privilégios em Oracle são permissões que controlam o que um usuário pode fazer no banco de dados. Existem privilégios de sistema (que afetam muitos objetos, como SELECT ANY TABLE) e privilégios de objeto (que afetam um objeto específico, como INSERT ON apl.tab1). O comando GRANT concede privilégios e REVOKE os remove, mas a hierarquia e a especificidade dos privilégios são cruciais para entender o resultado final.
- (A) Incorreta: "temp" é um tablespace (espaço de armazenamento), não uma tabela. Não se executa DML (Data Manipulation Language) diretamente em tablespaces.
- (B) Correta: Para a tabela "apl.tab1",
user1recebeu explicitamente os privilégios deDELETE,UPDATEeINSERT. Além disso, o privilégio de sistemaSELECT ANY TABLEpermite queuser1executeSELECTemapl.tab1. Assim,user1possui todas as operações DML (INSERT,UPDATE,DELETE) eSELECTna tabelaapl.tab1. - (C) Incorreta: Para a tabela "apl.tab2",
user1recebeu os privilégios deDELETE,UPDATEeINSERT. A linhaREVOKE SELECT ON apl.tab2 FROM user1;é a armadilha da banca. Embora em um cenário real de Oracle o privilégio de sistemaSELECT ANY TABLEainda permitiria oSELECTemapl.tab2(pois privilégios de sistema geralmente se sobrepõem a revogações de privilégios de objeto específicos se o privilégio de objeto não foi concedido primeiro), a intenção da questão é que esta revogação específica deSELECTtorne a tabela "apl.tab2" incompleta em termos de "qualquer DML" (assumindo que "qualquer DML" incluiSELECT). Portanto,user1não teria todas as operações de manipulação de dados (incluindoSELECT) naapl.tab2conforme a interpretação da questão. - (D) Incorreta: "usr_dados" é um tablespace, não uma tabela. Não se executa DML diretamente em tablespaces.
- (E) Incorreta:
user1temSELECT ANY TABLE, mas não possui privilégios de sistema comoINSERT ANY TABLE,UPDATE ANY TABLEouDELETE ANY TABLE. Portanto, não pode executar qualquer DML (INSERT, UPDATE, DELETE) em todas as tabelas do banco de dadosxpto.
Fonte: FGV TJ-MS 2024 Técnico de Nível Superior - Analista de Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.