Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 6 meses atrás por armandoveloso.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #100537
    armandoveloso
    Participante

      Carissi@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.

      #100540
      felipeg
      Participante

        Opa,

        Segue uma possibilidade

        1)
        set long 9999
        set head off
        set serveroutput on size unlimited

        spool 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.

        #100543
        Ishii
        Participante

          Olá,

          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…

          #100547
          armandoveloso
          Participante

            Pensando 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.

            #100552
            Ishii
            Participante

              Olá,

              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

              #100562
              armandoveloso
              Participante

                Entendido, comandante!

                Obrigado!
                Abraço!

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.