«

»

ago 11

Como proteger CREATE PUBLIC SYNONYM contra escalonamento de privilégios

This post is also available in: English

Durante a minha última apresentação no GUOB Tech Tour 2016 – Oracle Technology Tour LA – Brazil, demonstrei como poderíamos facilmente usar um privilégio de CREATE PUBLIC SYNONYM para escalonar até um privilégio DBA.

Neste artigo, eu vou compartilhar com vocês uma package que criei e uso em meus sistemas para permitir que os usuários sejam capazes de criar os seus próprios sinônimos públicos sem comprometer a segurança do Banco de Dados.

Então vamos começar.

Como funciona?

Essa package funciona permitindo a um determinado usuário que apenas crie sinônimos públicos aos seus próprios objetos ou que remova sinônimos públicos que estejam apontando para um de seus objetos.

Conceda os grants necessários ao dono da package

Antes de mais nada, essa package precisa ser criada em um usuário que possua os seguintes privilégios mínimos concedidos diretamente (não via ROLE):

  • SELECT on DBA_SYNONYMS
  • CREATE PUBLIC SYNONYM
  • DROP PUBLIC SYNONYM

1. Crie a package

2 Crie o package body

3 Dê privilégio na package aos usuários que precisam de Sinônimos Públicos

Examplo:

Opcionalmente, você também pode criar um sinônimo para evitar que o owner da package seja sempre digitado:

E é isso.

Como usar?

Para criar um sinônimo público

Para remover um sinônimo público

E lembre-se: não será possível tocar em um sinônimo público de outro usuário.

Gostou? Não deixe de comentar ou dar um like. Abraços e até a próxima!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">