Visando melhorar a segurança da base de dados no Mega Alexandria, removemos todas as permissões especiais e de DBA, ANY ou PUBLIC do owner único, apenas o owner MGUTILS poderá ter essas permissões, o qual poderá compartilhar suas funcionalidades com o “owner único” e como acesso simples (leitura e execução).
Desta maneira, quando um owner precisar de alguma funcionalidade que exige permissão de DBA do Oracle, o objeto será criado na MGUTILS, o qual possui permissões DBA e dará permissão de leitura/execução para o owner único.
O Mega Atualizador é o responsável por garantir os Grant's e permitirá a permissão desses objetos do owner MGUTILS automaticamente para o owner único ou o Mega, caso de base de dado com Synonyms.
Regras básicas de segurança para a base de dados:
-
Não é permitido nenhum tipo de grant ANY para o owner único;
-
Não é permitido grants do owner único para PUBLIC;
-
Não é permitido conceder DBA para o proprietário único;
-
Qualquer função DBA deve vir do compartilhamento do MgUtils.
Duplicidade em All_Objects, All_Tables, All_Procedures e outros
Não ocorrerá duplicidade no retorno das funções do oracle, mesmo sem o owner na clausula do sql, caso ocorra é porque existem grants incorretos, como ANY ou PUBLIC na base de dados.
⚠️Os Sql's do MegaERP não utilizam, e não precisam utilizar a cláusula para considerar o proprietário nas consultas, por exemplo, Select * from all_tables where owner = 'MegaXXX'. Isso deve ser resolvido com as permissões dos grants, e não na cláusula de sql. |
O proprietário MgUtils
Este owner foi projetado para servir de mediador entre os direitos de DBA e o owner único, ou seja, tudo que o owner do Mega necessitar de grant dba virá deste owner.
Por exemplo, para acessar uma exibição sys.dba_jobs_running este método DBA foi encapsulando no owner MgUtils como All_jobs_running:
Para compartilhar este objeto deve ser atribuído o grant abaixo para o proprietário único desejado:
✅ O grant Select não obriga o usuário final ter direitos de DBA. |
O proprietário MgUtils também é responsável por criar e acessar variáveis de contexto:
Grants necessários para o MgUtils:
Escrevendo a variável de contexto:
Lendo variável de contexto:
Compartilhamento das funções de controle de variável de contexto do MgUtils:
Aplicar Grant's na Base de dados
Os Grant's são aplicados ao owner único e ao MgUtils pelo Mega Atualizador, de maneira automática. Caso ocorra, reporte a equipe de atualização da Senior.
Revogar/Conceder no Mega Atualizador
Os Revoke's/Grant's aplicados para o owner único estão configurados dentro do Mega Atualizador, para garantir que sejam executados em todas as atualizações de versão.
Caso algum Revoke/Grant apresente erro ao ser executado, é possível visualizar acessando o log de atualização do Banco de Dados, que fica no seguinte caminho:
✅ %USERPROFILE%\AppData\Roaming\megaatualizador\LogDatabase |
Respondendo algumas dúvidas sobre a nova estrutura de banco de dados:
A conversão do banco de dados para a versão Alexandria não mudou apenas de vários proprietários para apenas um único owner, mas novas regras e configurações de segurança foram aplicadas e devem ser respeitadas para que o sistema funcione corretamente.
Regras aplicadas para os proprietários da versão Alexandria em diante:
MGUTIL - é o usuário DBA da Mega e somente o Mega Atualizador possui uma senha, podendo ser trocada a qualquer momento através do Mega Atualizador;
OWNER_UNICO - Possui permissões específicas de usuário padrão e não poderá ter as permissões DBA, PUBLIC ou ANY.
Sempre que o Mega Atualizador encontrar permissões DBA, PUBLIC ou ANY adquiridas, estas serão revogadas. Ao aplicar a revogação das permissões DBA, PUBLIC ou ANY alguns proprietários poderão apresentar objetos inválidos. Isso ocorre devido ao proprietário possuir integração com o MegaERP e esta relação ter sido configurada de maneira incorreta. A configuração correta de segurança para ser utilizada no MegaERP é permitir leitura, escrita ou execução específica do objeto para outro proprietário, sem usar ANY, DBA ou PUBLIC.
Exemplos
Para conceder o privilégio de SELECT na tabela GLO_AGENTE aos proprietários Owner_A e Owner_B, use a seguinte sintaxe:
Para conceder os privilégios UPDATE e/ou TRIGGER na tabela GLO_AGENTES aos proprietários Owner_A e Owner_B, use a seguinte sintaxe:
Para conceder o privilégio de EXECUTE no procedimento P_AJUSTAVRRATEIO ao owner Owner_A, use a seguinte sintaxe:
Para conceder o privilégio de USAGE no gerador de sequência CON_SEQ_SALDOS ao owner Owner_A use a seguinte sintaxe:
❕Para mais informações consulte o site Oracle Grant |
Como consultar objetos de banco
Para consultar objetos do banco, você deve utilizar as seguintes visualizações descritas abaixo
⚠️ Estas visualizações listam objetos do próprio proprietário e objetos compartilhados com o mesmo, sejam objetos do SYS ou de outros proprietários, seguindo as Definições de Grants na Alexandria.
Não é permitido o uso dos objetos DBA do Oracle tais como dba_jobs, dba_triggers etc, pois afetará as consultas com All_Tables ou All_Triggers que impactarão em todo o sistema do MegaERP. |
Comentários
1 comentário
Bom dia, os grants poderiam ser disponibilizados em texto ao invés de figura.
Por favor, entre para comentar.