- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 6 meses atrás por
armandoveloso.
-
AutorPosts
-
26 de agosto de 2011 às 7:20 pm #100537
armandoveloso
ParticipanteCarissi@s,
preciso conceder as seguintes permissoes para um usuario “A” sobre objetos do schema “B”, sao elas:
1) Usuario A precisa Visualizar e Executar todos as procedures, packages e functions do usuario B.
“Grant EXECUTE ANY TYPE to A” eu conseguiria isso?
Vejo que assim eu estou dando permissão a mais do que eu preciso, podendo o usuario A executar tudo de todos os usuarios do BD…2) O Usuario A precisa criar tabelas no Schema B, e nessas tabelas poder inserir, alterar e deletar.
O banco é o 10G.
Obrigado!
Armando.26 de agosto de 2011 às 8:15 pm #100540felipeg
ParticipanteOpa,
Segue uma possibilidade
1)
set long 9999
set head off
set serveroutput on size unlimitedspool c:grants.lst
select
'grant execute on b.' || object_name || ' TO A;'
from
user_objects u
where
object_type IN ('PROCEDURE','PACKAGE','FUNCTION');spool off
Depois de terminado é só rodar o output dos grants.
2)
grant create any table to A;
Não lembro de nenhuma outra opção…
Atenciosamente,
Felipe.26 de agosto de 2011 às 8:25 pm #100543Ishii
ParticipanteOlá,
A única restrição com o grant de CREATE ANY TABLE é que ele pode criar tabelas em QUALQUER OWNER mesmo… e ás vezes, isso é um perigo!!!
[]s Ishii
ps: Eu prefiro o uso de roles para os grants de usuário para usuário, pois no caso de novo usuário, apenas o grant da ROLE resolveria, além disso, na criação de novo objeto, somente o grant do objeto na ROLE repassa para todos…26 de agosto de 2011 às 8:46 pm #100547armandoveloso
ParticipantePensando bem não seria em “qualquer owner” não…
Se eu conectar no banco com o usuario B e der essas permissoes “ANY” para o usuario A,
entao,
o usuario A tera permissoes apenas sobre os schema B.conn B@BD1
1)
Grant CREATE ANY PROCEDURE, ALTER ANY PROCEDURE,
DROP ANY PROCEDURE, EXECUTE ANY PROCEDURE
To A;2)
Grant SELECT ANY TABLE, INSERT ANY TABLE,
UPDATE ANY TABLE, DELETE ANY TABLE,
CREATE ANY TABLE
To A;Entao, logado como B e dando grant “any” para A, seriam apenas sobre os objetos de B. Correto?
Outra pergunta,
“ANY TYPE” engloba o “ANY PROCEDURE”?[]’s
Armando.26 de agosto de 2011 às 8:58 pm #100552Ishii
ParticipanteOlá,
First thing first…
1) Você concedeu permissão para criar,dropar,executar e alterar QUALQUER PROCEDURE de qualquer outro usuário e isso o usuário A agora pode fazer. Isso não se restringe ao usuário/owner B ou ao usuário/owner C, e sim todos os usuários/owner do Oracle, desde que o usuário/owner A saiba o nome do objeto e o owner…. (risco grande!! por isso a sugestão da ROLE)
2)A mesma lógica acima, só que para tabelas, ao conceder isso ao usuário A, até as tabelas sys.obj$ ele poderia fazer select, update etc.
3) ANY TYPE: Type são os objetos relacionais do Oracle que podem ser criados, tipo “create type as object etc…”
Melhor solução para isso:
1) Criar uma role ROLE_USERB (ou outro nome que relacione ao usuário B visualmente)
2) Grant dos objetos do usuário/owner B para essa role;
3) Grant da role ROLE_USERB para o usuário/owner A.Nesse caso, sim, o usuário/owner A somente poderia ver os objetos do usuário/owner B por causa dessa role… Um novo usuário/owner C que não tem essa role, não conseguiria mais…
Se quiser incrementar ainda mais a segurança, coloque uma senha na role ROLE_USERB, quando o usuário/owner A quiser alterar algum objeto do usuário/owner B terá que setar a role primeiro informando a senha…
[]s Ishii
26 de agosto de 2011 às 10:27 pm #100562armandoveloso
ParticipanteEntendido, comandante!
Obrigado!
Abraço! -
AutorPosts
- Você deve fazer login para responder a este tópico.