Prévia do material em texto
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 6 : Em um sistema gerenciador de banco de dados, a segurança da informação se dá em dois níveis: interno e externo. No nível externo, a proteção dos dados é exercida pelos mecanismos de segurança de rede, providos pelo sistema operacional e outras ferramentas acopladas, como firewall, antivírus, entre outros. Já no nível interno, a segurança é exercida pelo próprio SGBD, no que diz respeito aos níveis de acesso aos dados, que são concedidos por meio da linguagem DCL. Com essa linguagem, é possível definir quem tem permissão de visualizar ou atualizar cada coluna de cada tabela criada no âmbito de um ba nco de dados. Cabe ao administrador de dados, também conhecido como DBA, definir esses níveis de permissão, e não ao programador, que estará limitado a esses níveis de permissão. 1.1 Criando novos usuários Antes de falarmos em segurança da informação e m um banco de dados, precisamos ter um elenco de usuários ativos para gerenciar seus acessos e privilégios quanto ao banco de dados em tela. Para ter acesso ao formulário de criação de novos usuários, bem como a configuração de seus acessos, abra o PhpMyAdmin, clique no banco de dados desejado (“EscolaPrime”, por exemplo), e acione a aba “Privileges”. Ao término desta aula você será capaz de gerenciar a segurança e o compartilhamento de dados no SGBD. Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 7 Figura 1 - Formulário de criação de usuários e configuração de seus privilégios. Para adicionar uma nova conta de usuário, siga este passo a passo: Clique no link “Add user acount” (adicione conta de usuário) e observe a formação de uma página contendo um formulário de usuários: Figura 2 - Campos cadastrais do novo usuário que está sendo criado. Por default, o usuário “root”, que é criado automaticamente no ato da instalação do MySQL, recebe todos os privilégios possíveis para acesso aos bancos de dados criados. Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 8 Na sequência, pelo menos, preencha o nome do usuário e clique por sobre o botão “Generate” para que uma nova senha seja automaticamente gerada pelo PhpMyAdmin. Caso queira de fato gerar uma senha manualmente, basta preencher os demais campos antes deste botão. Rolando a página um pouco para baixo, vemos que ainda há campos a serem preenchidos neste formulário. O próximo conjunto de campos se refere às permissões de acesso deste usuário que está sendo criado. Veja, na figura abaixo, que podemos estabelecer exatamente que comandos esse usuário pode executar neste banco de dados. Figura 3 - Continuação do formulário anterior. Observe que o PhpMyAdmin divide os comandos em três grupos. O da esquerda engloba os comandos DML. Na parte central, ele concentra os comandos DDL e, por fim, os comandos DCL e demais comandos de administração do banco de dados, mais à direita. Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 9 Rolando um pouco mais para baixo (ou mais à direita, dependendo da responsividade de seu navegador), vemos mais um conjunto de campos a serem preenchidos. Este grupo de campos se refere a eventuais limites de acessos por parte do usuário que está sendo criado. Como podemos observar na figura abaixo, o PhpMyAdmin permite estabelecer limites de consultas (“queries”), atualizações (“updates”), e conexões (“connections”) por hora, além do número máximo de conexões simultâneas (“max user connections”). Figura 4 - Continuação do formulário anterior. Por fim, role a página até o fim e perceba que o PhpMyAdmin ainda oferece a oportunidade de estabelecermos alguns requisitos de segurança para o banco de dados. A primeira opção (vide figura a seguir) suprime qualquer requisito de segurança adicional. As outras opções, porém, forçam que o programa ou comando que i rá interagir com o banco O valor “zero”, quando informado em quaisquer desses campos, remove o limite dos respectivos requisitos. Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 10 de dados forneça um dos protocolos especificados, inclusive outro protocolo a ser informado nos três últimos campos de texto. Dependendo do tipo de banco de dados que se esteja definindo, este requisito pode ser fundamental, como é o caso dos bancos de dados que lidam com cartões de crédito e contas bancárias. Figura 5 – Continuação do formulário anterior. Finalmente, chegamos ao término da definição de segurança deste banco de dados. Para executar todos os parâmetros informados neste formulário, basta clicar no botão “Go”, como ilustrado na figura acima. Considerando que demos total privilégio ao João Marcelo, o PhpMyAdmin executou o seguinte comando DCL: CREATE USER 'João Marcelo Lyra'@'%' IDENTIFIED WITH mysql_native_pass word AS '***';GRANT SELECT, SHOW DATABASES, CREATE VIEW, SHOW VIEW Figura 6 - Página de feedback da criação do usuário. Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 11 ON *.* TO 'João Marcelo Lyra'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;GRANT ALL PRIVILEGES ON `escolaprime`.* TO 'João Marcelo Lyra'@'%'; Você pode ainda editar os privilégios concedidos no formulário seguinte, como podemos visualizar ao lado. 1.2 Editando privilégios de usuários Experimente editar as permissões, desmarcando todas as caixas de verificação dos comandos das colunas do meio e da direita, deixando apenas as permissões para os comandos DML. Depois de clicar no botão “Go”, você deverá visualizar a seguinte página, contendo os comandos REVOKE e GRANT. Figura 7 - Desmarcando as permissões para comandos de estrutura ( Structure) e administração (Administrat ion). Na prática, o PhpMyAdmin executou dois comandos DCL: REVOKE ALL PRIVILEGES ON `escolaprime`.* FROM 'João Marcelo Lyra'@'%'; GRANT SELECT, INSERT, UPDATE, DELETE ON `escolaprime`.* TO 'João Marcelo Lyra'@'%'; Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 12 Figura 8 - Painel de privilégios dos usuários. Agora é com você. Exercite o comando REVOKE, DENY e GRANT experimentando editar os privilégios desse usuário. Use o painel de privilégios ilustrado abaixo.