Você está na página 1de 36

Segurana em Banco de Dados

Controle de Acessos de Usurios

Controle de Acesso de Usurios


Ao confiar a um SGBD os dados de uma organizao, a segurana dos dados armazenados torna-se fundamental. Os requisitos de segurana de um banco de dados corporativo so vrios:

Controlar o acesso ao banco de dados; Fornecer acesso a objetos especficos do banco de dados; Os dados de uma determinada tabela devero estar acessveis para alguns usurios, mas no podero ser acessados por outros; Alguns usurios podem ter permisso para alterar dados em uma determinada tabela e outros podero apenas consult-la; Em algumas tabelas, pode ser necessrio restringir o acesso de algumas colunas;
2

Controle de Acesso de Usurios


Um SGBD pode ser utilizado como banco de dados em uma srie de situaes, como por exemplo:

Para sites de comrcio eletrnico; Para armazenar os dados do site de um banco; Para diversas aplicaes, como aplicaes financeiras, contbeis, etc; Para cadastro de alunos, disciplinas, turmas e notas em uma grande universidade ou escola.

Necessidade de SEGURANA. Alguns usurios podem no ter privilgios sobre determinados dados.
3

Controle de Acesso de Usurios Os exemplos apresentados neste material esto relacionados a caractersticas relacionadas ao SGBD SQL Server 2008, porm outros SGBDs existentes no mercado adotam regras similares.

LOGINS
O primeiro passo para que um usurio possa acessar o servidor SQL Server estabelecer uma conexo com uma instncia do servidor SQL Server. Para estabelecer uma conexo com uma instncia do servidor de banco de dados, necessrio que o usurio tenha um LOGIN com senha. Uma instncia em um SGBD como se fosse um servidor completamente independente, podendo oferecer um conjunto diferente de servios e configuraes. Cada instncia pode ter vrios databases. Uma instalao de SGBD pode conter vrias instncias de banco de dados. Durante a instalao de um SGBD, uma instncia do SGBD instalada.
5

LOGINS
O usurio com o login jsilva se conecta a uma instncia do SGBD. O usurio com o login maria no consegue se conectar instncia do SGBD.

LOGINS
O SGBD SQL Server 2008 permite que um usurio se conecte a uma instncia do banco de dados atravs das seguintes formas:

Windows Authentication SQL Server Authentication


No modo Windows Authentication o SGBD pode dar autorizao de acesso para contas de um domnio do Windows Server 2003 ou Windows Server 2008, por exemplo. No modo SQL Server Authentication o SGBD utiliza logins criados no prprio SQL Server e que ficam armazenadas no banco de dados master de cada instncia.
7

LOGINS

Quando uma instncia do SGBD SQL Server instalada criado o login SA (system administrator) que possui poderes totais sobre todos os objetos de uma instncia do SQL Server.
8

LOGINS
Para criar um login em uma instncia do SQL Server podemos utilizar o comando CREATE LOGIN:
Sintaxe simplificada: CREATE LOGIN <login> WITH PASSWORD = <senha> Exemplo: CREATE LOGIN tkautzmann WITH PASSWORD = '123456'

LOGINS
Ser possvel alterar a senha do login utilizando o comando ALTER LOGIN.
Exemplo: ALTER LOGIN tkautzmann WITH PASSWORD = 'tiago123'

Para eliminar um login, utiliza-se o comando DROP LOGIN.


Exemplo: DROP LOGIN tkautzmann

10

LOGINS
Com um login, possvel se conectar uma instncia de um SGBD SQL Server, porm no ser possvel ainda se conectar a uma database. Para se conectar a um database disponvel em uma instncia, ser necessrio criar um usurio dentro da database, relacionando este usurio ao login. Os usurios pertencem aos databases. Um login pode ter vrios usurios em vrios databases.
11

USERS (USURIOS)
Um usurio de database criado utilizando o comando CREATE USER. Ao ser criado, um usurio (user) no possui nenhum privilgio. O DBA poder ento conceder vrios privilgios para o usurio. Estes privilgios determinam o que o user poder fazer no banco de dados.
Sintaxe simplificada: CREATE USER <usuario> FOR LOGIN <login>
Exemplo: USE REDE_BANCO CREATE USER tkautzmann FOR LOGIN tkautzmann
<usuario> o nome do usurio a ser criado na database. <login> especifica o login que ser relacionado ao usurio da database.

12

USERS (USURIOS)
Para eliminar um usurio, utiliza-se o comando DROP USER.
Exemplo: USE REDE_BANCO DROP USER tkautzmann

Para criar ou excluir um usurio de um database necessrio estar conectado ao database.


13

Segurana
Com a criao de um usurio pertencente a um database, e que est relacionado a um login de instncia do banco, j temos dois nveis de segurana:
Permisso para fazer conexo com uma instncia do servidor SQL Server; Permisso para acessar a database do usurio criado. Porm o usurio no poderia, ainda, manipular qualquer objeto da database. Para isso ser necessrio conceder privilgios ao user da database.

14

Segurana
Usurio com permisso para conexo com a instncia SGBD, com permisso do Banco de Dados CLIENTES, porm sem permisso na tabela PAGAMENTOS.

15

Privilgios
Privilgios fornecem a permisso para executar comandos em um database. O administrador do banco de dados (sa) um usurio de alto nvel com capacidade para conceder aos usurios acesso a um banco de dados e seus objetos.
Os usurios necessitam de privilgios de banco de dados para, por exemplo, criar tabelas, views e procedures e privilgios de objeto para manipular o contedo dos objetos do banco de dados (exemplo: select, insert, update, select, delete).

16

Privilgios de banco de dados


Principais privilgios (permisses) de banco de dados:

17

Privilgios de objetos
Principais privilgios (permisses) de objeto:

18

Privilgios Conceder Privilgios - GRANT


A concesso de privilgios (permisses) feita utilizando o comando GRANT.
Sintaxe simplificada GRANT { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ] [ ON [ class :: ] securable ] TO principal [ ,...n ] [ WITH GRANT OPTION ] [ AS principal ]

19

Privilgios Conceder Privilgios - GRANT


USE REDE_BANCO GRANT SELECT ON CONTA TO tkautzmann
O exemplo acima concede ao usurio tkautzmann o privilgio (permisso) de utilizar o comando SELECT na tabela CONTA.

USE REDE_BANCO GRANT SELECT ON GERENTE (nome) TO tkautzmann


O exemplo acima concede ao usurio tkautzmann a permisso de utilizar o comando SELECT apenas para o campo nome da tabela GERENTE.
20

Privilgios Conceder Privilgios - GRANT


USE REDE_BANCO GRANT SELECT, UPDATE, INSERT ON AGENCIA TO tkautzmann
O exemplo acima concede ao usurio tkautzmann a permisso de executar os comandos SELECT, UPDATE e INSERT na tabela AGENCIA.

USE REDE_BANCO GRANT SELECT ON CARTAO TO tkautzmann, luana


O exemplo acima concede aos usurios tkautzmann e luana a permisso de utilizar o comando SELECT na tabela CARTAO. 21

Privilgios Conceder Privilgios - GRANT


USE REDE_BANCO GRANT SELECT ON FATURA TO tkautzmann WITH GRANT OPTION
O exemplo acima concede ao usurio tkautzmann a permisso (privilgio) de utilizar o comando SELECT na tabela fatura e permite tambm que o usurio tkautzmann conceda o mesmo privilgio para outro usurio da database. A opo WITH GRANT OPTION permite que o usurio que recebeu a permisso possa conceder a mesma permisso para outro usurio da database.
22

Privilgios Revogar Privilgios - REVOKE


Para revogar privilgios concedidos a um usurio da database utilizamos o comando REVOKE.
Sintaxe simplificada REVOKE REVOKE [ GRANT OPTION FOR ] { [ ALL [ PRIVILEGES ] ] | permission [ ( column [ ,...n ] ) ] [ ,...n ] } [ ON [ class :: ] securable ] { TO | FROM } principal [ ,...n ] [ CASCADE] [ AS principal ]

23

Privilgios Revogar Privilgios - REVOKE


USE REDE_BANCO REVOKE SELECT ON AGENCIA TO tkautzmann
O exemplo acima revoga a permisso do usurio tkautzmann de utilizar o comando SELECT na tabela AGENCIA.

USE REDE_BANCO REVOKE SELECT ON GERENTE (nome) TO tkautzmann


O exemplo acima revoga a permisso dada ao usurio tkautzmann de utilizar o comando SELECT para o campo nome da tabela GERENTE.24

Privilgios Revogar Privilgios - REVOKE


USE REDE_BANCO REVOKE GRANT OPTION FOR SELECT ON FATURA TO tkautzmann CASCADE
Revoga a permisso dos usurios que o usurio tkautzmann concedeu a permisso de usar SELECT na tabela FATURA.

25

ROLES - Papis
Uma role (papel) um grupo nomeado de privilgios que podem ser concedidos ao usurio. Este mtodo torna a concesso e remoo de privilgios mais fcil de executar e manter. Um usurio pode ter acesso a vrias roles e vrios usurios podem ser associados mesma role.

role

26

ROLES - Papis
Primeiro necessrio criar uma role. Depois de criada, poderemos conceder (GRANT) privilgios role. Por final, poderemos atribuir membros (usurios) que recebero os mesmos privilgios concedidos role.
possvel revogar (REVOKE) privilgios de uma role.
27

ROLES Roles nativas da instncia


Existem algumas roles (NATIVAS) que j so criadas no momento da instalao de uma determinada instncia do SQL Server 2008. Alguns exemplos:
Role db_owner Descrio Membros podem realizar todas as configuraes e atividades de manuteno em uma database, podendo at mesmo dropar uma database. Membros podem adicionar ou remover acesso a uma database. Membros podem fazer backup de uma database.

db_accessadmin db_backupoperator

28

ROLES Roles criadas pelo usurio


Para criar uma role utilizamos o comando CREATE ROLE:
Sintaxe simplificada: CREATE ROLE <role_name> Exemplo: USE REDE_BANCO CREATE ROLE equipe_desenvolvimento;

29

ROLES Roles criadas pelo usurio


USE REDE_BANCO GRANT SELECT, UPDATE, INSERT ON AGENCIA TO equipe_desenvolvimento
O exemplo acima concede role equipe_desenvolvimento o privilgio (permisso) de utilizar os comandos SELECT, UPDATE e INSERT na tabela AGENCIA. Todos os membros da role recebero esta concesso.

USE REDE_BANCO REVOKE SELECT ON GERENTE (nome) TO equipe_desenvolvimento


O exemplo acima concede role equipe_desenvolvimento o privilgio (permisso) de utilizar o comando SELECT no campo nome da tabela GERENTE. Todos os membros da role recebero esta concesso.

30

ROLES Roles criadas pelo usurio


USE REDE_BANCO GRANT SELECT ON CONTA TO equipe_desenvolvimento
O exemplo acima concede role equipe_desenvolvimento o privilgio (permisso) de utilizar o comando SELECT na tabela CONTA. Todos os membros da role recebero esta concesso.

REVOKE SELECT ON CONTA (saldo) TO equipe_desenvolvimento


O exemplo acima revoga da role equipe_desenvolvimento o privilgio (permisso) de utilizar o comando SELECT com o campo saldo na tabela CONTA. Todos os membros da role recebero esta revogao.
31

ROLES Adicionando membros roles


Podemos adicionar membros s roles utilizando uma stored procedure nativa do SGBD SQL Server, como nos exemplos:

Adiciona o usurio luana role equipe_desenvolvimento exec sp_addrolemember equipe_desenvolvimento", "luana Adiciona o usurio tkautzmann role equipe_desenvolvimento exec sp_addrolemember 'equipe_desenvolvimento', 'tkautzmann' Adiciona o usurio tkautzmann role nativa db_owner exec sp_addrolemember db_owner', 'tkautzmann'

32

ROLES Removendo membros de roles


Podemos REMOVER membros das roles utilizando uma stored procedure nativa do SGBD SQL Server, como nos exemplos:

Remove o usurio luana da role equipe_desenvolvimento exec sp_droprolemember equipe_desenvolvimento", "luana Remove o usurio tkautzmann da role equipe_desenvolvimento exec sp_droprolemember equipe_desenvolvimento", tkautzmann"

33

ROLES Removendo uma role


Para remover uma role utilizamos o comando DROP ROLE. Antes de remover uma role, necessrio remover todos os membros da role.
Sintaxe: DROP ROLE <role_name> Exemplo: DROP ROLE equipe_desenvolvimento

34

til - Views nativas do SQL Server 2008


Logins sys.sql_logins
Usurios sys.sysusers
Tabelas sys.tables Views sys.views

Databases sys.databases

35

Referncias
Documentao do Microsoft SQL Server http://msdn.microsoft.com/pt-br/library/ms130214.aspx BATTISTI, Julio. SQL Server 2005 Administrao & Desenvolvimento. Rio de Janeiro:Editora Axcel, 2005. MANZANO, Jos Augusto N. G.. SQL Server 2005 Express Edition Interativo Guia Bsico. 2 Edio. Rio de Janeiro:Editora rica, 2007.

COSTA, Rogrio Lus de C.. SQL Guia Prtico. 2 Edio. Rio de Janeiro:Brasport, 2006.

36

Você também pode gostar