BANCO DE DADOS EM APLICATIVOS WEB Aula 15 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 1 Agenda Gestão de usuário Exercícios Laboratório. 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 2 Gestão de usuario Em todos bancos de dados para garantir a integridade de dados e segurança é necessario praticar a gestao de usuários. Gestão de usuário, significa, entre outras coisas, limitar/controlar acesso aos recursos do banco de dados. Controle de acesso se da através dos previlégios concedidos aos usuarios. 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 3 Gestão de usuario Pode-se conceder previlegios diferentes por host de onde o usuario pode estabelecer conexão. É possivel determinar quais comandos podem ser executados por host, por exemplo localhost. O MySQL armazena as informações dos usuarios em 4 tabelas no banco de dados mysql. User Db Tables_priv Columns_priv 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 4 Gestão de usuario Tabela user Armazena informações de todos usuário do banco e previlégios globais. Tabela DB Armazena os previlégios dos usuários especificos de um banco de dados Tabelas tables_priv e columns_priv armazenam os previlégios associados a tabelas e colunas Recomenda-se o acesso a essas tabelas somente ao administrador do banco de dados. 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 5 Gestão de usuario Criação de usuário e privilégios Grant – Para usuários inexistentes força sua criação, Para usuários existentes adiciona privilégios aos já existentes. Sintaxe : GRANT priv [(colunas)] [, priv [(colunas)]] ... ON {*.* | db.* | db.tabela} TO usuario [IDENTIFIED BY 'senha'] [, usuario [IDENTIFIED BY 'senha']] ... [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR contador | MAX_UPDATES_PER_HOUR contador | MAX_CONNECTIONS_PER_HOUR contador]] ** [] indica comando opcional 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 6 Gestão de usuario Lista de previlégios : Privilégio ALL [PRIVILEGES] ALTER Todos os privilégios exceto GRANT OPTION Permite executar ALTER TABLE CREATE Permite executar CREATE TABLE CREATE TEMPORARY TABLES DELETE Permite executar CREATE TEMPORARY TABLE Permite executar DELETE DROP Permite executar DROP TABLE EXECUTE FILE Permite executar stored procedures (MySQL 5.0) Permite executar SELECT ... INTO OUTFILE e LOAD DATA INFILE INDEX Permite executar CREATE INDEX e DROP INDEX INSERT Permite executar INSERT LOCK TABLES PROCESS 05/11/2015 Descrição Permite executar LOCK TABLES em tabelas que você tenha o privilégio SELECT Permite executar SHOW FULL PROCESSLIST Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 7 Gestão de usuario Lista de previlégios - Continuação: Privilégio Descrição RELOAD Permite executar FLUSH REPLICATIO N CLIENT Permite ao usuário obter a localização do Master ou Slave REPLICATIO N SLAVE Necessário para a replicação Slave (leitura dos eventos do log binário do Master) SELECT Permite executar SELECT SHOW DATABASES exibe todos os bancos de dados SHUTDOWN Permite executar mysqladmin shutdown SUPER Permite executar CHANGE MASTER, KILL , PURGE MASTER LOGS e SET GLOBAL. Permite conectar-se ao servidor uma vez, mesmo que o max_connections tenha sido atingido UPDATE Permite executar UPDATE USAGE Sinônimo para "no privileges'' GRANT OPTION Permite ao usuário repassar os seus privilégios INSERT Permite executar INSERT 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 8 Gestão de usuario Criação de usuário e privilégios - Continuação: Uma vez informados os privilégios do usuário, você deverá indicar o nível ao qual o privilégio se aplica, sendo possível especificar três níveis: *.* Privilégio global db.* Qualquer tabela do banco db db.tb Apenas a tabela tb do banco de dados db. Para especificar apenas algumas colunas de uma determinada tabela, estas deverão ser listadas ao lado do privilégio (priv (colunas)) Depois do nível você deverá indicar o usuário, ou a lista de usuários, para os quais os privilégios se aplicam. No MySQL o usuário é constituído de um nome mais o host de onde ele poderá acessar o servidor (user@host) Caso você não informe o host para o usuário, o MySQL assumirá "%", isto é, todos os hosts 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 9 Gestão de usuario Criação de usuário e privilégios - Continuação : A senha do usuário é opcional, mas é recomendado sempre informá-la no momento de criação do usuário, por questões de segurança No exemplo a seguir é criado um usuário com o nome teste que pode se conectar somente do host onde o servidor está em execução (localhost), o usuário só poderá fazer SELECT nas colunas nome e idade da tabela pessoa, que se encontra no banco de dados rh. A senha do usuário é 12345. GRANT SELECT (nome, idade) ON rh.pessoa TO teste@localhost IDENTIFIED BY "12345"; Para listar os privilégios deste usuário utilize o comando: SHOW GRANTS FOR teste@localhost; 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 10 Gestão de usuario Criação de usuário e privilégios - Continuação : Você pode especificar um conjunto de hosts utilizando o caracter "%", neste caso é possível dar acesso a um usuário dentro de uma faixa de IPs ou DNS. Usuários anônimos também podem ser criados informando um nome com o caracter espaço (" "). No exemplo a seguir, o usuário remoto poderá executar UPDATE e INSERT em qualquer tabela do banco de dados rh, sendo possível a conexão ao servidor a partir de qualquer máquina no domínio mysqlbrasil.com.br: GRANT UPDATE, INSERT ON rh.* TO remoto@"%.mysqlbrasil.com.br" IDENTIFIED BY "remoto"; Ou utilizando IP: GRANT UPDATE, INSERT ON rh.* TO remoto@"200.236.13.%" IDENTIFIED BY "remoto"; 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 11 Gestão de usuario Criação de usuário e privilégios - Continuação : Um usuário anônimo com os mesmos privilégios do usuário remoto seria criado da seguinte forma: GRANT UPDATE, INSERT ON rh.* TO " "@"%mysqlbrasil.com.br" IDENTIFIED BY "anonimo"; A opção GRANT OPTION é utilizada para que o usuário possa conceder os seus privilégios para outros usuários do banco. Para remover privilegios de usuarios é utlizado o comando revoke : REVOKE priv [(colunas)] [, priv [(colunas)]] ... ON {*.* | db.* | db.tabela} FROM usuario [, usuario] ... 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 12 Gestão de usuario Criação de usuário e privilégios - Continuação : Considerações do comando Revoke A parte ON do revoke deve conicidir com a part ON do GRANT que deseja remover, caso contrário não tera efeito. Remove apenas previlegios do usuario , não remove usuarios. Remoção de usuários é feita com comando DELETE na tabela de usuários, somente após terem sido removidos todos seus previlégios. Para execução do comando DELETE é necessário ter previlegio na tabela user do mysql (geralmente feito pelo usuario root). DELETE FROM mysql.user WHERE user="teste" AND host="localhost"; Finaliza-se com o comando FLUSH PRIVILEGES para atualizar os previlegios que estao em memória. 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 13 BIBLIOGRAFIA BIBLIOGRAFIA BÁSICA DATE, C.J. Introdução a Sistemas de Bancos de Dados. 8ª Ed. Rio de Janeiro: Campus, 2004. 1 2 NAVATHE, S. B.; ELMASRI, R. E. Sistemas de Banco de Dados, 4ª edição, Editora Pearson Addison Wesley, 2005. SETZER, V. W., SILVA, F.S.C. Banco de Dados. 1ª Ed. São Paulo: Edgard Blucher, 2005. 3 BIBLIOGRAFIA COMPLEMENTAR COUGO, P. Modelagem Conceitual e Projeto de Banco de Dados, Editora Campus. 4 5 KORTH, H. F.; SILBERSCHATZ, A.; SUDARSHAN, S., Sistemas de Banco de Dados, Editora Makron Books, 1999. MACHADO, Felipe Nery Rodrigues: Análise Relacional de Sistemas; São Paulo: Editora Érica, 2001. 6 7 SETZER, V.W., NASSU, E.A. Banco de Dados Orientados a Objetos. São Paulo: Ed. Edgard Blucher, 1999. 05/11/2015 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 14