Segurança em Bases de Dados Progress – Parte 4

Escrito por Eloi Rene Pscheidt em 27 de outubro de 2008, 17:17h

No post anterior criamos os usuários, definimos os administradores, restringimos o acesso anônimo e concedemos algumas permissões para tabelas e campos. Hoje veremos que apenas esse trabalho não é suficiente para evitar que usuários desempenhem atividades não autorizadas no banco. 

Quando um programa Progress é compilado, ou seja, sua sintaxe é validada e um código intermediário (r-code) é gerado para posterior execução, apenas é validada a permissão do usuário que está compilando este programa. Se este usuário possuir as permissões de acesso às tabelas necessárias por este programa, o respectivo r-code (arquivo .r) é gerado. Isto é conhecido como validação de permissões em tempo de compilação. Depois de gerado, este r-code poderá ser executado por qualquer usuário, independente deste possuir ou não as permissões necessárias nas tabelas que o programa acessa. Se isso não for levado em consideração, de nada adianta proteger seu banco.

Até a versão 9 do Progress, cabia apenas às aplicações o controle de qual usuário pode executar determinado programa. Já apartir da versão 10.1A existe uma forma de forçar o banco a validar esta permissão também em tempo de execução, utilizando para isso o usuário que está conectado naquele momento ao banco de dados. Para habilitar tal opção, acesse a ferramenta Data Administrator, menu Admin, Database Options, conforme a figura a seguir:

Sem essa opção habilitada, nosso trabalho de restringir o acesso é válido apenas para execução de programas fontes ou consulta direta realizada via editor do Progress. 

Outra boa prática de segurança é impedir que r-codes não autorizados sejam executados no banco de dados. Isto é possível através de uma assinatura que é atribuída ao banco de dados. Toda vez que um programa compilado for executado, este r-code deverá possuir também esta assinatura. Caso não possua, ocorrerá um erro de CRC, impedindo que este programa seja executado. Isso impede que qualquer usuário compile um programa em uma base semelhante a nossa, porém aberta, e consiga executar este programa em nossa base fechada, sobrepondo assim toda a definição de segurança que tenhamos configurado.

Essa opção é bastante útil em ambientes aonde não é possível habilitar validação em tempo de execução (versões de Progress anteriores a 10.1A) ou sistemas nos quais seja difícil mapear quais são as permissões necessárias para cada usuário no sistema. Entretanto, ela não substitui a validação em tempo de execução, considerando que um usuário poderá a qualquer momento acessar uma estação que possua licença que permita consulta direta via editor do Progress (sem r-codes).

Para atribuir uma assinatura ao banco de dados, utilize o comando proutil <nomeDoBanco> -C dbauthkey + <assinatura>.
Para atribuir essa mesma assinatura para o programa compilado, utilize o comando proutil <nomeDoBanco> -C rcodekey + <assinatura> <nomeDoPrograma.r>.

Por exemplo:
proutil ems2cad -C dbauthkey + cristoRedentor
proutil ems2cad -C rcodekey + cristoRedentor
mostraCustomer.r

Programas que são compilados conectados em bases com assinatura definida já receberão a assinatura do banco. Apenas será necessário atribuir assinatura utilizando o proutil... rcodekey... em r-codes compilados em outras bases. 

Mais detalhes sobre a utilização destes comandos, consultar a documentação do Progress, disponível no endereço http://www.progress.com/.

Cuidar para não utilizar uma chave muito fácil de ser descoberta. A assinatura que utilizei acima não é um bom exemplo, serve apenas para ilustrar.
Tomar o cuidado também de não deixar esta assinatura dentro de algum script e principalmente, cuidar para não esquecer esta chave, já que não há uma forma de recuperar esta informação do banco.

A Datasul desenvolveu uma ferramenta que automatiza as tarefas de aplicar assinatura em bancos e programas, bem como atribuir algumas permissões em tabelas de bancos de dados Progress, chamada DASPPE. Esta ferramenta é gratuíta e pode ser baixada do portal de clientes Datasul, através do endereço www.datasul.com.br/portal, opções central de downloads, arquivos de apoio, idioma, produto, versão, ferramentas, dasppe.zip. Esta ferramenta não possui suporte e é atendida apenas via consultoria telefônica, disponível pelo telefone (47) 2101-7444, opção 2, tecnologia.

No próximo post desta série veremos alguns detalhes sobre permissões de acesso a banco Progress através de conexões ODBC/JDBC, utilizando a conexão do tipo SQL, que vimos no primeiro post.

Categorias: Ambiente | Banco de dados | Progress | Segurança

Tags: , , , ,

Comentários

Comentar




biuquote
  • Comentário
  • Pré-visualização
Loading