Kbase 88908: Segurança Progress
Autor |
  Tatiane Koslinsky - CAT |
Acesso |
  Público |
Publicação |
  19/10/2018 |
|
Por padrão, o banco Progress vem sem segurança aplicada. O primeiro passo após a criação do banco é protege-lo criando o usuário sysprogress, usuário DBA do Progress.
Autenticar o usuário no banco
DISP SETUSERID ("sysprogress","senha","banco").
O padrão é *
Permite que tal atribuição seja aplicada a todos os usuários.
A combinação abc* permitirá que a atribuição seja aplicada a todos os usuários que iniciem com as letras abc. Isso permitirá, por exemplo, separar as permissões por áreas afins, desde que seja utilizada uma nomenclatura padrão para os nomes dos usuários. Por exemplo, para os usuários da área financeira, utilizar fin no início do código dos usuários. Para a área de logística, utilizar log, e assim por diante. Quando for aplicar as permissões, será possível utilizar a combinação fin* para conceder acesso a todos os usuários da área financeira.
Para negar o acesso deverá ser utilizado o caractere !
De acordo com o nosso exemplo, a combinação !fin evita que usuários da área financeira tenham determinada autorização.
Mesmo criando os usuários e concedendo o poder de administração para apenas alguns destes, isso não garante que nosso banco esteja protegido. Conexões anônimas continuarão sendo permitidas e acesso a qualquer tabela do banco de dados.
A criação de um usuário administrador e a sua atribuição a esta autoridade apenas restringe algumas ações dentro do banco de dados, como criação de novos usuários, por exemplo.
Impedir que usuários anônimos conectem um banco Progress é impossível, porém desabilitando o seu acesso, estes usuários não conseguirão mais acessar as informações contidas no banco de dados. Continuarão a se conectar, porém não conseguirão fazer nada neste banco. Uma simples consulta no conteúdo de uma tabela produzirá o seguinte erro:
** Insufficient access privilege for table <table name>. (234)
Precisamos também controlar o acesso SQL à este banco, realizado através de conexões ODBC ou JDBC. A abordagem de acesso SQL ao banco difere um pouco do acesso 4GL que vimos até agora. Para conexões SQL o banco não permite acesso anônimo. São dois usuários que por definição já possuem acesso SQL com permissões administrativas ao banco, são eles o usuário do sistema operacional que criou o banco e o usuário SYSPROGRESS.
Controlar a senha do usuário que criou o banco não é difícil, sendo que este usuário geralmente é o administrador do servidor que, por sua vez, já deverá possuir uma senha que poucos usuários tenham acesso. Já o usuário SYSPROGRESS deverá ser criado e deverá ter sua senha confiada à poucas pessoas. Não criar o usuário SYSPROGRESS permitirá que algum usuário não autorizado o crie a qualquer momento, recebendo assim os direitos administrativos neste banco.
Com o usuário SYSPROGRESS criado, é uma boa prática não divulgar esta senha para todos os usuários do banco, mas sim conceder permissões de acesso SQL necessárias à eles. Isso é possível através dos comandos GRANT e REVOKE, que permitem conceder e retirar permissões de usuários, respectivamente. Em nosso banco de dados de exemplo, utilizaremos os seguintes comandos para conceder permissões de leitura na tabela customer para o usuário "maria" e poder de criação, alteração, consulta e exclusão para o usuário "joao":
grant select on PUB.customer to maria;
grant select, insert, update, delete on PUB.customer to joao;
Autor: Eloi Rene Pscheidt