Você está na página 1de 40

Instituto Federal da Bahia – IFBA

Campus Vitória da Conquista

Controle de Acesso

Prof. Me. Pablo Freire Matos


pablofmatos@gmail.com

Slides baseados no material elaborado pelo professor:


Luciano Calderoni
Objetivo Sistema de Banco de Dados (SBD)

 Armazenar os dados de forma organizada

 Permitir a recuperação de dados de modo


rápido e confiável

 Permitir o acesso as informações somente


aos usuários devidamente autorizados

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

2. A seguir o DBA define as permissões


(autorizações) de cada usuário

3. O SGBD garante que as permissões sejam


cumpridas durante a execução das operações
Controle de Acesso
5
Criando Usuário no MySQL
CREATE USER {nome_usuário}
 Sintaxe IDENTIFIED BY {senha};

 Exemplos
CREATE USER teste3
IDENTIFIED BY ‘123’;
CREATE USER teste2@localhost
IDENTIFIED BY ‘123’;

O usuário logado deve ser o DBA


Utilizar: Banco de Dados mysql e tabela user
Atenção: BD mysql é case-sensitive
Controle de Acesso
6
Excluindo Usuário no MySQL

 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;

Limpar ou Atualizar os Privilégios


FLUSH PRIVILEGES;

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

 Sintaxe Concessão e Revogação:


GRANT <operação> ON <tabela> TO <usuário>;
REVOKE <operação> ON <tabela> FROM <usuário>;

DML, DDL, ... Tabela onde será Usuário para o qual


ALL concedida ou será concedida ou
revogada a permissão revogada a permissã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

MILANI, André. MySQL: Guia do Programador. São Paulo: Novatec, 2006.


Controle de Acesso
13
Lista de Privilégios – MySQL (2/3)
Privilégio Descrição
Permite ler e escrever arquivos no sistema (e.g.,
FILE
comando Load Data)
GRANT Permite conceder privilégios para outros usuários
INDEX Permite o gerenciamento de índices
LOCL TABLES Permite bloquear tabelas para uso
Permite visualizar e finalizar processos do
PROCESS
MySQL
RELOAD Permite recarregar bancos de dados
REPLICATION CLIENT Permite solicitar replicação

MILANI, André. MySQL: Guia do Programador. São Paulo: Novatec, 2006.


Controle de Acesso
14
Lista de Privilégios – MySQL (3/3)
Privilégio Descrição
REPLICATION SLAVE Permite replicar as informações
Permite visualizar a estrutura de todos os bancos
SHOW DATABASES
de dados
SHOW VIEW Permite visualizar os códigos de criação de visões
SHUTDOWN Permite desativar o servidor MySQL
Permite configurar os dados do servidor Master no
caso de Replicação, utilizar o comando Kill para
SUPER
interromper processos, excluir logs e ultrapassar o
limite de conexões máximas
TRIGGER Permite criar e gerenciar triggers
USAGE Sem privilégios
MILANI, André. MySQL: Guia do Programador. São Paulo: Novatec, 2006.
Manual do MySQL. Disponível em: http://downloads.mysql.com/docs/refman-5.7-en.pdf
Controle de Acesso
15
Comando REVOKE

 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;

Concede permissão de Concede permissão de atualização nos


consulta na tabela Funcionário campos nome e salário da tabela
ao usuário Teste Funcionário aos usuários Paulo e
André (sem especificar as colunas,
indica todas)
Funcionario
codFunc nome salario
1000 Flávio 2500,25
1548 Valéria 3500,55
3001 Luciano 1420,63

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;

Revoga a permissão de atualização de todas REVOKE UPDATE


as colunas na tabela Funcionário do usuário ON Funcionario
André (pode indicar nomes das colunas) FROM Andre;

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

 Cláusula WITH GRANT OPTION


 Permite que o usuário que acabou de receber
privilégios sobre a relação conceda esses
privilégios a outros usuários

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!

 Outra maneira de selecionar os campos das tabelas é


utilizando?
 Visões!

Controle de Acesso
21
Controle de Acesso e Visões

 A combinação controle de acesso + visões


permite um maior refinamento ao conceder e
revogar permissões

CREATE VIEW v_Funcionario AS GRANT SELECT


SELECT codFunc, nome ON v_Funcionario
FROM Funcionario; TO Paulo;

Controle de Acesso
22
Exercício 1

 Cria os seguintes usuários no SGBD MySQL:


 Pedro, Vania e Carlos

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;

2) Revogar o privilégio de seleção de Pedro.


REVOKE SELECT
ON Funcionario
FROM 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;

4) Conceder os privilégios de atualização de


somente o nome do funcionário ao usuário
Vania.
GRANT UPDATE (nome)
ON Funcionario
TO Vania;
Controle de Acesso
26
5) Conceder todos os privilégios a todos os
três usuários.
GRANT ALL
ON Funcionario
TO Pedro, Carlos, Vania;

6) Revogar todos os privilégios de todos os


três usuários.
REVOKE ALL
ON Funcionario
FROM Pedro, Carlos, Vania;

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

GRANT ALL PRIVILEGES


ON empresax.*
TO Jorge
IDENTIFIED BY ‘123’;

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

GRANT SELECT, INSERT, UPDATE, DELETE


ON empresax.*
TO Fabiana@%
IDENTIFIED BY ‘123’;

O curinga '%' indica que o usuário pode se conectar de qualquer host


Controle de Acesso
31
Exercício 3 Funcionario
codFunc nome salario cargo
 Considere a mesma 1000 Flávio 2500,25 gerente
relação do exercício 1548 Valéria 3500,55 analista

anterior 3001 Luciano 1420,63 secretária

 Use o comando WITH GRANT OPTION para


1. Conceder os privilégios de remoção e atualização ao
usuário Vania com direito de propagação de privilégio

GRANT DELETE, UPDATE


ON Funcionario
TO Vania
WITH GRANT OPTION;
Controle de Acesso
32
GRANT e REVOKE

 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

anterior 3001 Luciano 1420,63 secretária

 Suponha que o DBA queira dar ao usuário Vania


uma capacidade limitada para recuperar algumas
informações da relação funcionário e permitir que
seja capaz de propagar o privilégio.

 A limitação é para recuperar apenas os atributos


código e nome, e apenas para as tuplas com
cargo igual secretária.
Controle de Acesso
35
Resposta
CREATE VIEW v_Secretaria AS
SELECT codFunc, nome
FROM Funcionario
WHERE cargo = 'secretaria';

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.

2. Qual o significado de conceder e revogar um


privilégio?

3. Pesquisar sobre SQL Injection. O que é e como


pode ser evitado?

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.

 Capítulo 23: Segurança e Autorização em BD


 ELMASRI, R; NAVATHE, S. B. Sistemas de Banco de Dados. 4ª ed.
São Paulo: Pearson, 2005.

 Capítulo 17: Segurança


 DATE, C. J. Introdução a Sistemas de Banco de Dados. 8ª ed. Rio de
Janeiro: Elsevier, 2004.

 Capítulo 15: Administração e Segurança em BD


 ROB, P.; CORONEL, C. Sistemas de Banco de Dados: Projeto,
Implementação e Administração. 8ª ed. São Paulo: Cengage Learning,
2011.

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.

 ELMASRI, R; NAVATHE, S. B. Sistemas de Banco de Dados. 4ª


ed. São Paulo: Pearson, 2005.

 ROB, P.; CORONEL, C. Sistemas de Banco de Dados: Projeto,


Implementação e Administração. 8ª ed. São Paulo: Cengage
Learning, 2011.

 SÊMOLA, M. Gestão da Segurança da Informação: Uma Visão


Executiva. Rio de Janeiro: Campus, 2003.

Controle de Acesso
39
Bibliografia Complementar
 GILLENSON, M. L. Fundamentos de Sistemas de Gerência de
Banco de Dados. Rio de Janeiro: LTC, 2006.

 MANZANO, J. A. N. G. MySQL 5.5 – Interativo: Guia Essencial de


Orientação e Desenvolvimento. São Paulo: Érica, 2011.

 SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistema de


Banco de Dados. 3ª ed. Rio de Janeiro: Elsevier, 1999.

 STEPHENS, R.; PLEW, R. Aprenda em 24 Horas SQL3. 3ª Ed.


Rio de Janeiro: Campus, 2003.

Controle de Acesso
40

Você também pode gostar