Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #90433
    Alfeu
    Participante

      Olá pessoal…
      Notei um problema e gostaria de comentar com vcs.
      Se houver algum engano que vou escrever, por favor me digam.
      Porém, algo estranho acontece… Seria bug?

      Versão: Oracle DATABASE 10G ENTERPRISE Edition RELEASE 10.2.0.4.0 – 64bi
      S.O.: HP-UX fenix02 B.11.31 U ia64 0482952154 unlimited-user license

      Tenho um schema que é o mantenedor dos objetos principais: SCHEMA_A
      E tenho também um schema que será o responsável pelos dados do sistema: SCHEMA_B

      As tabelas do sistemas foram criadas no SCHEMA_A.
      Criei sinônimos da seguinte forma:
      CREATE SYNONYM schema_b.tabela1 FOR schema_a.tabela1

      O schema_b somente tem privilégios para alterar dados, isto é, select, update, insert, delete, dados diretamente para a tabela em questão.
      Único privilégio que esse schema tem é CONNECT.
      Jámais foi dado privilégio para a criação de sinônimos!!!

      Alguém poderia me explicar por que esse schema consegue “DROPAR” esse sinônimo criado?

      Já recriei esse schema várias vezes.
      Os únicos privilégios que ele tem são os descritos acima.
      Se alguém souber por que….

      Agradeço antecipadamente.
      Valeu
      [/b]

      #90435
      Marcio68Almeida
      Participante

        Uma vez que o objeto pertença a ele, ele tem a possibilidade de remove-lo…
        Não tenho certeza se é necessário o RESOURCE, mas creio que não…

        #90445
        Alfeu
        Participante

          Puxa…
          Mas como fica a segurança se for assim?
          Não gostaria de criar esses sinônimos como públicos.
          Os objetos ficam melhor organizados se criados no schema específico para eles.
          Se, sem as permissões explícitas, o schema consegue excluí-los (dropar), como fica o nível de segurança?
          Me parece muito estranho…

          #90455
          vieri
          Participante

            crie uma trigger de disable drop !!

            #90456
            vieri
            Participante

              create or replace TRIGGER system.DISABLE_DROP
              BEFORE DROP
              ON DATABASE
              BEGIN
              IF( (SYS.DICTIONARY_OBJ_TYPE = ‘TABLE’ OR
              SYS.DICTIONARY_OBJ_TYPE = ‘INDEX’ OR
              SYS.DICTIONARY_OBJ_TYPE = ‘SYNONYM’ OR
              SYS.DICTIONARY_OBJ_TYPE = ‘SEQUENCE’) AND
              SYS.LOGIN_USER ‘SYS’ AND
              SYS.LOGIN_USER ‘SYSTEM’

              ) THEN
              RAISE_APPLICATION_ERROR(-20020,’Você não tem permissão de DROP !!!’);
              END IF;

              END;

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