Escolar Documentos
Profissional Documentos
Cultura Documentos
Controle de Acesso
Controle de Acesso
2
Controle de Acesso
SBD existem diversos usuários e aplicações
Alguns podem apenas consultar os dados
Outros podem consultar e modificar todos os dados
Outros podem consultar todos os dados e inserir alguns
dentre outros
Controle de acesso
Garante que os usuários executam somente as
operações para as quais estão autorizados
Garantem a segurança dos dados armazenados no BD
Todo SGBD fornece um mecanismo de definição de
controle de acesso
Controle de Acesso
3
Controle de Acesso em SBD
Sistema Gerenciador de
Banco de Dados
(SGBD)
Banco
de
Dados
Usuários
Hardware e
Finais
Software
Controle de Acesso
4
Controle de Acesso
1. O DBA define (cria) os usuários que terão
acesso ao BD e suas senhas
A criação dos usuários depende do SGBD
Não existe um mecanismo padrão
Exemplos
CREATE USER teste3
IDENTIFIED BY ‘123’;
CREATE USER teste2@localhost
IDENTIFIED BY ‘123’;
Exemplo:
DELETE
FROM user
WHERE user like ‘teste%’;
Controle de Acesso
7
Recuperando Usuário no MySQL
Controle de Acesso
8
Identificar os Privilégios de um Usuário
SHOW GRANTS FOR root@localhost;
SHOW GRANTS FOR pablo;
Controle de Acesso
9
Controle de Acesso em SQL
Mecanismo de definição de permissões de
acesso segundo a SQL-ANSI
Apenas atribuição de permissões, não criação
Controle de Acesso
10
Comando GRANT
Sintaxe Detalhada
GRANT {ALL [PRIVILEGES]| USAGE | lista_de_privilégios}
ON {
<nome_banco_dados>.<nome_da_tabela> | *.* |
<nome_banco_dados>.*
}
TO {lista_usuários}
[WITH GRANT OPTION]
Controle de Acesso
11
Lista de Privilégios
DML
INSERT, UPDATE, DELETE, SELECT
DDL
CREATE, DROP, ALTER
Show databases
Shutdown
Replication Slave...
Controle de Acesso
12
Lista de Privilégios – MySQL (1/3)
Privilégio Descrição
ALL/ALL PRIVILEGES Todos os privilégios
Permite alterar e excluir Stored
ALTER ROUTINE
Procedures/Functions
CREATE ROUTINE Perimite criar Stored Procedures/Functions
CREATE TEMPORARY TABLES Permite a criação de tabelas temporárias
CREATE USER Permite criar e gerencia usuários
CREATE VIEW Permite criar visões
EVENT Permite criar Event Schedulers
EXECUTE Permite executar Stored Procedures
Sintaxe Detalhada
REVOKE [GRANT OPTION] {lista_privilégios | ALL}
ON {
<nome_banco_dados>.<nome_da_tabela> | *.* |
<nome_banco_dados>.*
}
FROM {lista_usuários}
Controle de Acesso
16
Exemplo 1
GRANT SELECT GRANT UPDATE (nome, salario)
ON Funcionario ON Funcionario
TO Teste; TO Paulo, Andre;
Controle de Acesso
17
Exemplo 2
GRANT ALL Concede todas as permissões (ALL) na
ON Funcionario tabela Funcionário ao usuário Teste
TO Teste;
Funcionario
REVOKE ALL codFunc nome salario
ON Funcionario 1000 Flávio 2500,25
FROM Teste;
1548 Valéria 3500,55
Revoga todas as permissões (ALL) na
3001 Luciano 1420,63
tabela Funcionário do usuário Teste
Controle de Acesso
18
Propagação de Privilégios
Proprietário de uma relação
Criador de uma relação
Possui todos os privilégios sobre a relação
Tem a capacidade de conceder a (e de revogar
de) outros usuários privilégios sobre a relação
Controle de Acesso
19
Exemplo DBA: GRANT SELECT
ON Funcionario
Concedendo privilégios TO U1
WITH GRANT OPTION;
U1: GRANT SELECT 1. \ DBA
ON Funcionario
TO U2, U3
WITH GRANT OPTION;
U2: GRANT SELECT U1
ON Funcionario
TO U4
U2 U3
WITH GRANT OPTION;
U4: GRANT SELECT
ON Funcionario TO U5; U4
O que acontece quando U1
revoga os privilégios de U2? U5
Controle de Acesso
20
Controle de Acesso e Visões
E para permitir que o usuário Paulo possa apenas
consultar os campos codFunc e nome da tabela
Funcionário?
GRANT SELECT (codFunc, nome)
ON Funcionario
TO paulo;
Funciona em
MySQL!
Controle de Acesso
21
Controle de Acesso e Visões
Controle de Acesso
22
Exercício 1
Controle de Acesso
23
Exercício 1
Use GRANT e REVOKE para
1. Conceder privilégio de seleção ao usuário Pedro.
2. Revogar o privilégio de seleção de Pedro.
3. Conceder os privilégios de recuperação e inserção ao usuário
Carlos.
4. Conceder os privilégios de atualização de somente o nome do
funcionário ao usuário Vania.
5. Conceder todos os privilégios a todos os três usuários.
6. Revogar todos os privilégios de todos os três usuários.
Funcionario
codFunc nome salario cargo
1000 Flávio 2500,25 gerente
1548 Valéria 3500,55 analista
3001 Luciano 1420,63 secretária
Controle de Acesso
24
1) Conceder privilégio de seleção ao usuário
Pedro.
GRANT SELECT
ON Funcionario
TO Pedro;
Controle de Acesso
25
3) Conceder os privilégios de recuperação e
inserção ao usuário Carlos.
GRANT SELECT, INSERT
ON Funcionario
TO Carlos;
Controle de Acesso
27
Exercício 2
Considere o usuário root como o DBA do
banco de dados “empresax”. Este banco terá
os seguintes usuários:
usuário Jorge: DBA
usuário Fabio: desenvolvedor que pode
manipular, alterar e excluir a estrutura do BD
usuário Fabiana: usuário final que precisa apenas
manipular os dados armazenados
Conceder privilégios para estes três usuários.
OBS: Criar o usuário na hora da concessão.
Controle de Acesso
28
Usuário Jorge: DBA
Controle de Acesso
29
Usuário Fabio: desenvolvedor que
pode manipular, alterar e excluir a
estrutura do BD
GRANT SELECT, INSERT, UPDATE,
DELETE, DROP, ALTER
ON empresax.*
TO Fabio@localhost
IDENTIFIED BY ‘123’;
Controle de Acesso
30
Usuário Fabiana: usuário final que
precisa apenas manipular os dados
armazenados
Particularidades
o mesmo privilégio pode ser associado a um
usuário U1 por qualquer número de outros usuários
um comando REVOKE realizado por um usuário U1
somente remove os privilégios de U1 garantidos por U1
um comando REVOKE realizado por um usuário U1
NÃO revoga todos os privilégios propagados a partir de
U1 por meio da cláusula GRANT OPTION
Controle de Acesso
33
Especificando Autorização
Através de Visões
Controle de Acesso
34
Exercício 4 Funcionario
codFunc nome salario cargo
Considere a mesma 1000 Flávio 2500,25 gerente
relação do exemplo 1548 Valéria 3500,55 analista
GRANT SELECT
ON v_Secretaria
TO Vania
WITH GRANT OPTION;
Controle de Acesso
36
Atividades Extraclasse
1. Explique por que segurança de dados é
importante.
Controle de Acesso
37
Leitura Recomendada
Capítulo 5: Segurança e Direitos de Acesso
MILANI, A. MySQL: Guia do Programador. São Paulo: Novatec, 2006.
Controle de Acesso
38
Bibliografia Básica
DATE, C. J. Introdução a Sistemas de Banco de Dados. 8ª ed.
Rio de Janeiro: Elsevier, 2004.
Controle de Acesso
39
Bibliografia Complementar
GILLENSON, M. L. Fundamentos de Sistemas de Gerência de
Banco de Dados. Rio de Janeiro: LTC, 2006.
Controle de Acesso
40