You are on page 1of 7

Banco de Dados II - Adriano Cmara - UNIGRAN

Aula 07

SEGURANA DE
BANCO DE DADOS

1. USURIOS AUTORIZADOS PARA O BD


Qualquer usurio na lista de usurios autorizados para um servidor pode abrir um
banco informando o seu nome de usurio e senha apropriada.
Se voc especicar um nome de usurio e senha quando o banco de dados criado,
ento esse usurio sinalizado como o dono do banco de dados. Apenas esse usurio e o
SYSDBA podem fazer um drop (excluir) no banco de dados. Se voc no especicar um
usurio e senha quando o banco de dados criado, ento apensas o SYSDBA pode fazer um
drop (excluir) no banco.
Uma vez que o usurio esta conectado ao banco de dados, e nenhuma outra segurana
foi denida, o usurio virtualmente tem acesso a todos os objetos no banco de dados.
61

Banco de Dados II - Adriano Cmara - UNIGRAN

Se um usurio cria uma tabela, o Firebird associa o usurio como proprietrio da


tabela, e apenas aquele usurio tem o direito de dar um drop (excluir) na tabela.
Usando a instruo GRANT, o proprietrio pode disponibilizar a outros usurios
diferentes nveis de acesso a tabela ou view. Quando o proprietrio da tabela permite direitos
de acesso a um usurio, ele pode tambm especicar se esses novos usurios podem passar
esses direitos para outros. O proprietrio tambm tem o direito de revogar os privilgios de
acesso garantidos anteriormente.
O proprietrio do banco de dados e o usurio SYSDBA tm os mesmos direitos que
o dono de cada tabela dentro do banco. Eles podem garantir e revogar direitos as tabelas
conforme for necessrio.
Essas regras tambm so verdadeiras para views - as quais so tratadas internamente
como tabelas virtuais e para Stored Procedures, mas no para domnios, os quais no possuem
segurana associada a eles. Note, entretanto que um domnio esteja em uso na denio das
tabelas, no pode ser feita sua excluso.
Desta maneira, privilgios de segurana so associados aos vrios objetos dentro do
banco de dados que controla como os dados so armazenados e manipulados.
Simplesmente permitindo usurios dentro do banco de dados no suciente se no
for garantido acesso aos objetos dentro do banco.

2. SEGURANA DE SISTEMA OPERACIONAL


Note, entretanto que um usurio experiente deve ainda obter acesso no autorizado
aos dados dentro da tabela. Existem duas razes para isso:
O Firebird no criptografa os dados armazenados dentro do BD. Com um editor
ou browser, um usurio experiente seria capaz de ler os dados diretamente do disco, fora do
controle do prprio Firebird.
O Firebird no esconde ou de outra forma protege as tabelas do sistema dentro do
BD que mantm os metadados do BD. Um usurio que entenda a parte de metadados interno
do Firebird capaz de modicar essas tabelas, talvez para se adicionar como um usurio
autorizado para tabelas importantes.
Por essas razes, o Firebird se apia nos servios de segurana disponvel no sistema
operacional, para impedir que usurios no autorizados acessem o diretrio ou dispositivo no
qual o banco de dados reside.
2.1 Caractersticas do SQL para segurana
O SQL e o modelo relacional, provem um nmero de caractersticas para melhorar a
segurana dentro de um banco de dados:
62

Banco de Dados II - Adriano Cmara - UNIGRAN

Integridade Referencial
Instrues Grant e Revoke
O SQL probe fazer a excluso de um objeto se esse objeto referenciado em outro
lugar no banco. Voc no pode excluir uma tabela se a tabela referenciada por um check,
constraint, trigger, stored procedure ou outro objeto.
2.2 A instruo GRANT
Use a instruo GRANT para garantir privilgios de acesso para um objeto de banco
de dados tal como tabela ou view.
Sintaxe:
GRANT lista_de_ privilgios ON [Tabela] TO usurios
Onde:
Lista_de_privilgios: pode ser todos os privilgios ALL [PRIVILEGES] ou alguns
separados por vrgula, como: SELECT, INSERT, UPDATE ou DELETE.
Usurios: pode ser PUBLIC (todos) ou os nomes dos usurios que deseja atribuir o
direito. Utiliza-se vrgula para separar o nome dos usurios que se deseja atribuir acesso.
Atravs dessa instruo fazemos concesses de acesso ao banco de dados, ou seja,
disponibilizamos o(s) direito(s) para que usurios possam ter os seguintes acessos:
SELECT => Extrair dados do banco.
UPDATE => Atualizar registros nas tabelas.
INSERT => Inserir registros nas tabelas.
DELETE => Excluir registros das tabelas.
REFERENCES => Denir chaves para relacionamento.
Antes de comearmos a criar usurio e denir acessos ao nosso banco de dados
importante ressaltar que aplicamos um GRANT para PUBLIC (usurios), estamos
disponibilizando os direitos at para usurios que vierem a ser cadastrados, portanto cuidado
ao usar PUBLIC.
No IBExpert a visualizao dos usurios se torna bem interativa onde temos mas
tabelas a visualizao dos GRANTS onde mostrado os usurios que tem direitos a esta
tabela bem como os privilgios de acesso deste usurio. Notem que tambm podemos
restringir o acesso as colunas da tabela. Sendo que no IBExpert basta somente clicar em cima
da instruo (Select, update, delete, insert, execute, reference, description) e colocar ou tirar
um privilgio de acesso.
63

Banco de Dados II - Adriano Cmara - UNIGRAN

Criando um usurio utilizando o GRANT.


Temos dois usurios cadastrado em nosso Banco de Dados VENDAS.GDB, o
usurio PUBLIC e SYSDBA, no qual somente o SYSDBA tem acesso a todas as funes do
banco de dados.
Vamos criar um usurio utilizando Grant, para depois vermos a diferena da criao
para um Role, neste caso o Grant cria um usurio que ser geral em todo Banco de Dados,
onde terei que dar acesso ou limitar este acesso tabela por tabela ou ento colocar todos os
privilgios.
Exemplo 01: Dando todos os privilgios ao usurio Adriano, na tabela CLIENTE:
GRANT ALL ON CLIENTE TO ADRIANO

Exemplo 02: Dando privilgios de consulta ao usurio Adriano, na tabela


VENDEDOR:
GRANT SELECT ON VENDEDOR TO ADRIANO

Note que utilizando a clausula GRANT os usurio so criado e aparecem para todas
as outras tabelas, mas sem qualquer direito de acesso ou consulta.
64

Banco de Dados II - Adriano Cmara - UNIGRAN

Estas permisses so bem mais fceis de visualizar e alterar utilizando o IBExpert,


clicando em cima do usurio e clique no boto direito do mouse:

Removendo os privilgios e usurios


Para remover os usurios ou privilgios utilizamos clusula REVOKE.
Sintaxe:
REVOKE lista_de_ privilgios ON [Tabela] FROM usurios
Exemplo 03: Remover o usurio ADRIANO na tabela VENDEDOR:
REVOKE GRANT OPTION FOR ALL ON VENDEDOR FROM ADRIANO

Exemplo 04: Remover o usurio ADRIANO na tabela CLIENTE:


REVOKE GRANT OPTION FOR ALL ON CLIENTE FROM ADRIANO
2.3 Denindo um Role
Uma Role pode ser denida como um pacote ou papel de privilgios que podem
ser associados de forma fcil aos usurios do banco de dados. Por exemplo, podemos criar
uma role com privilgio total a todos os objetos de nosso banco de dados, ou seja, privilgio
de administrador. Sendo assim, todos os usurios com papel de administradores do banco de
dados devero ser associados a esta role.
Desta forma, ca muito fcil o gerenciamento de privilgios para um grupo de
usurios. Se antes era necessrio realizar Grant de todas as tabelas, views, functions e
procedures para todos os usurios com permisso de administradores, agora, com a Role,
necessitamos apenas associar estes usurios a ela.
65

Banco de Dados II - Adriano Cmara - UNIGRAN

O uso de roles no obrigatrio, mas pode ser muito til em ambientes com muitos
usurios e uma diversidade ampla de pers.
Para criar uma Role em seu banco de dados voc pode utilizar o IBExpert utilizando
o comando New Role a partir do menu de contexto do item Role:

Logo em seguida ser criado o Role USR_CONSULTA

Sintaxe SQL:
CREATE ROLE role_name
GRANT privilgios ON tabela TO role_name
GRANT role_name TO lista_usurios
Na utilizao do IBExpert a criao e manipulao destes privilgios e usurios
torna-se mais interativa.
66

Banco de Dados II - Adriano Cmara - UNIGRAN

ATIVIDADES
As atividades referentes a esta aula esto disponibilizadas na ferramenta
Atividades. Aps respond-las, envie-nas por meio do Portflio- ferramenta do
ambiente de aprendizagem UNIGRAN Virtual. Em caso de dvidas, utilize as ferramentas
apropriadas para se comunicar com o professor.

67

You might also like