De que se trata o artigo

Este artigo apresenta algumas formas para a implementação de segurança nas aplicações através da autenticação dos usuários e o carregamento das permissões para os mesmos, demonstrando primeiramente uma solução desenvolvida manualmente e posteriormente, através do componente UserControl, facilitando e automatizando o emprego deste conceito e recurso. Também é efetuada uma introdução ao componente TMS Security System, outra ferramenta que tem esta finalidade.


Em que situação o tema é útil

Aumentar as funcionalidades das aplicações para o usuário final, permitindo que o mesmo, através de uma conta de administrador, possa criar outros usuários e definir quais serão as permissões de acesso de cada utilizador do sistema, visando preservar e garantir a integridade e sigilo de determinadas informações.

Segurança

Segurança da informação, sem dúvida, é um fator indispensável para as aplicações, principalmente para aquelas que são utilizadas por diversas pessoas e oferecem vários serviços de forma centralizada, abrigando toda a regra de negócio da empresa. Sendo assim, quando o assunto é desenvolvimento de software,convém aimplementação de mecanismos que possibilitem uma definição de privilégios para seus utilizadores, atribuindo áreas e opções que os mesmos podem utilizar ou são responsáveis ebloqueando aquelas que eles não devem ter acesso por diversas questões, isso para preservar a integridade e o sigilo das informações. Entretanto, segurança é um fator que também deve envolver todo o ambiente que está relacionado ao software, visandoassim,garantir ao máximo a privacidade dos dados. Neste artigo é apresentada uma forma manual de empregar um controle de acesso para permitir ou bloquear as funcionalidades do sistema, através da autenticação dos usuários durante a inicializaçãodo mesmo, em seguida é demonstrado um exemplo com o componente UserControl, que pode ser empregado dentro deste contexto, automatizando e facilitando muito a implementação deste recurso nos projetos e para concluir, é efetuada uma introdução ao conjunto de componentes do TMS Security System.

Segurança é um fator extremamente importante e muitas vezes indispensável em vários setores da vida, seja no trabalho ou no dia-a-dia, e porque não também nas informações, tornando-as restritas e protegidas, garantindo a integridade das mesmas.Muitos sites presentes naInternet, bem como WebApps,são um exemplo prático dentro deste contexto, onde muitos mecanismos são empregados com o objetivo de reduzir ao máximo o número de fraudes e acessos indevidos, bem como preservar os dados transferidos e as informações de privacidade dos usuários,assim como a autenticidade dos mesmosatravés da utilização de protocolos específicos, criptografia, certificados, logins, senhas, entre outros recursos presentes na atualidade.

Garantir que determinados dados apenas serão gravados e acessados por pessoas específicas também é um diferencial necessário em muitas aplicações comerciais e industriais, sejam elas de pequeno, médio ou grande porte. Em softwares do tipo ERP (ver nota do DevMan 1), por exemplo, que normalmente são compostos por vários módulos acessados por diversos usuáriosa todoinstante, o emprego de segurança e limitações a áreas específicas se torna um fator obrigatório, afinal usuários ou grupos de um determinado setor, com exceção de administradores e alguns departamentos, não necessitam acessar ou alterar os dados que pertencem a outro, por questões de inconsistências e até mesmo éticas, uma vez que tal função já está atribuída e é de responsabilidade de outro setor.

Quanto ao que concerne à elaboração de softwares capacitados a empregar conceitos de segurança, os desenvolvedores contam com uma variedade de alternativas, que vão desde implementações manuais, que consequentemente demandam maior tempo e esforços, tais como a criação tabelas específicas no banco de dados para armazenar informações de acesso dos usuários e funções no código fonte para a autenticação e validação dos mesmos, até componentes e ferramentas completas presentes no mercado, como é o caso do UserControl e do TMS Security System, disponíveis para o Delphi XE 2 etambém para versões anteriores.

Em síntese, oUserControl é uma ferramenta de muita utilidade onde o desenvolvedor utiliza componentes e janelas específicas do mesmo de uma forma rápida e prática, em tempo de design, para adicionar os componentes (menus, botões, etc) queserão controlados, possuindo também componentes de integração com os frameworks de bancos de dados, aumentando consideravelmente a produtividade no que diz respeito à implementação de segurança. Sendo assim, através dos componentes desta ferramenta, um usuário administrador poderá criar ou remover usuários, liberar ou restringir seus acessos, entre outros recursos,em tempo de execução.

Já o TMS Security System, desenvolvido pela TMS Software, também é uma ferramenta que suportaa atribuição de permissões de acesso aos usuáriosatravés de uma conta deadministrador, permitindo as definiçõesem níveis de formulário e menus, que por sua vez podem estar agrupados e herdarem os direitos.Contudo, os desenvolvedores ainda contam com outros recursos, como autenticação integrada através de usuários do Windows.

É possível notar que a funcionalidade de segurança e restrição das informações é algo importante e útil para as aplicações, atribuindo o que cada usuário do sistema pode acessar e gravar, mas esta forma de proteção está limitadaao executável do mesmo, o que implica que outras boas práticas devem ser consideradas para aumentar o nível de segurança e integridade dos dados. Sendo assim, outros pontos fundamentais devem ser enfatizados, ou seja, conceitos como isolamento da base de dados em um servidordevidamente protegido, alteração da senha padrão do usuário administrador do software SGBD (Sistema de Gerenciamento de Banco de Dados), empregode criptografia,backups regulares (cópias de segurança), entre outros,também devem ser levados em consideração e empregados em conjunto com a aplicação, afinal determinado usuário que tenha um maior conhecimento e experiência, pode facilmente acessar a base de dados e assim comprometer e efetuar a ação que desejar por meio desta.

Nota do DevMan 1

ERP (Enterprise Resource Planning – Planejamento de Recursos Empresariais), também conhecido como Sistema de Gestão Empresarial, é uma denominação atribuída a um software que integra todos os processos de negócio deuma empresa. Normalmenteéum sistema desenvolvido com o intuito de atender os mais diversos nichos de mercado e é composto por diversos módulos destinados a cada departamento ou setor da organização, sendo amplamente utilizadono meio industrial. O emprego de um ERP traz diversas vantagens, tais como a centralizaçãoe sincronismo das informações, permitindo um acesso rápido aos dados de qualquer área,a redução de falhas, a diminuição dos custos, a minimização dos níveis de estoque,o aumento da eficiência em diversos segmentos, dentre outros. Entretanto, o processo de implantação de um ERP pode demandar certo tempo e consumir recursos financeiros, entre outros, uma vez que o mesmo atinge todas as áreas da empresa, todos os processos devem ser devidamente mapeados e as parametrizações definidas, além evidentemente, do treinamento dos colaboradores.

Implementando Segurança na prática

Para iniciar uma aplicação de exemplo com o emprego de segurança, um novo projeto deve ser criado (File>New>VCL FormsApplication), onde o formulário principal recebeu a denominação de FrPrincipal. Neste primeiro exemplo o controle de usuários e acessos será desenvolvido de uma forma manual, o que demanda maior tempo e consequentemente, mais código fonte. Sendo assim as informações serão gravadas em tabelas do banco de dados, onde o SGBD adotado foi o Firebird. A Listagem 1 apresenta o código SQL para a criação das tabelas que serão utilizadas para a segurança da aplicação, sendo a primeira (USUARIO) para armazenar as informações dos usuários e a segunda (USUARIOACESSO), para seus devidos acessos. Crie um novo banco de dados e execute as sentenças SQL da Listagem 1.

Listagem 1.Código SQL para a geração das tabelas


  CREATE TABLE USUARIO(
      ID INTEGER NOT NULL,
  NOME VARCHAR(50),
      LOGIN VARCHAR(20) UNIQUE,
      SENHA VARCHAR(20),
  ADMINISTRADOR VARCHAR(1),
      ATIVO VARCHAR(1),
      CONSTRAINT PKY_USUARIO PRIMARY KEY(ID)
  );
  CREATE TABLE USUARIOACESSO(
      ID INTEGER NOT NULL,
      IDUSUARIO INTEGER NOT NULL,
      COMPONENTE VARCHAR(50),
      ATIVO VARCHAR(1),
  CONSTRAINT PKY_USUARIOACESSO PRIMARY KEY(ID),
      CONSTRAINT FKY_USUACE_USUARIO FOREIGN KEY(IDUSUARIO) REFERENCES USUARIO(ID)
  );

É possível notar que a tabela de usuários contém um simples cadastro das informações mais necessárias, possuindo um campo mais específico que foi denominado “ADMINISTRADOR”, com o objetivo de definir tal usuário com acesso total. Quanto à tabela de acessos, além da chave primária e do ID do usuário, existe um campo importante que recebeu a denominação de “COMPONENTE”,cujo intuito é armazenar o nome do componente que foi definido no Delphi para representar quais os objetos que o usuário vinculado possui acesso, levando em conta também, o valor do campo “ATIVO”, que por sua vez deve ser “S”.

...

Quer ler esse conteúdo completo? Tenha acesso completo