No post anterior iniciamos a tarefa de restringir o acesso 4GL em bases de dados Progress. Criamos alguns usuários e definimos o papel de administrador para o usuário "adm".
Agora realmente iremos restringir o acesso ao banco de dados. Primeiro vamos proibir o acesso anônimo, aquele no qual qualquer usuário pode acessar as informações do banco mesmo sem informar seu usuário e senha. Para isso utilizamos a ferramenta "Data Administration" e selecionamos a opção "Disallow Blank Userid Access", conforme a figura a seguir:
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)
Agora vamos definir o que cada usuário autenticado no banco poderá fazer. Para isso, vamos acessar a opção "Edit Data Security" via ferramenta "Data Administrator", conforme a figura a seguir:

Observe as permissões concedidas para a tabela "customer". De acordo com o que especificamos nesta tela, apenas os usuários "adm" e "joao" poderão incluir, alterar e excluir registros nesta tabela. Observe que em todas as permissões aparece o símbolo de negação na primeira posição, isto porque definimos que nenhum usuário anônimo poderá acessar as informações do banco.
Concedemos também permissão de leitura na tabela "customer" para o usuário "maria". Esse usuário apenas poderá consultar dados nesta tabela, sem incluir, alterar ou excluir.
Podemos ainda definir permissões específicas para cada campo das tabelas. Isso é possível, nesta mesma tela, selecionando a opção "Permissions for Selected Field", conforme a figura a seguir:

Em nosso exemplo, definimos que apenas os usuários "adm" e "joao" conseguirão ler e alterar o conteúdo do campo "Credit-Limit" da tabela "customer". O usuário "maria" continuará conseguindo consultar os demais campos desta tabela exceto este. Caso ela tente consultar ou alterar este campo, receberá o seguinte erro:
** Insufficient access privilege for Field Credit-Limit. (233)
Nos próximos posts conheceremos algumas situações que podem deixar uma base de dados Progress vulnerável e como evitá-las.