Conceitos Considerações Gerais Autorização Autorização

Propaganda
16/06/2009
Conceitos
Segurança ≠ Integridade
 Segurança refere-se à proteção de dados contra a
divulgação, alteração ou destruição não autorizadas.
Banco de Dados II
URI-FW

Garante que usuários têm permissão para fazer o que
estiverem tentando.
 Integridade refere-se à precisão ou validade dos
dados.

Considerações Gerais
• Para proteger um banco de dados devemos
tomar medidas de segurança em vários níveis:
– Físico: A sala do computador (servidor) ou terminal (cliente) devem
estar protegidas contra intrusos.
– Humano: Os usuários devem ser cuidadosamente autorizados para
reduzir a chance de qualquer fornecimento de acesso a um intruso
em troca de suborno ou outros favores.
– Sistema Operacional: A debilidade na segurança do SO pode servir
como meio de acesso não autorizado ao BD.
– Rede: A segurança em nível de SW de rede, para BDs que permitem
acesso remoto, é tão importante quanto a segurança física.
– Sistema de BD: Alguns usuários de sistemas de BD devem ter
autorização de acesso somente a uma porção limitada do BD. É
responsabilidade do sistema de BD garantir que essas restrições de
acesso não sejam violadas.
Autorização
Além das formas de autorização de acesso
aos dados, pode ser concedida
autorização a um usuário para modificar
esquemas do banco de dados:
– Autorização index: permite a criação e remoção de
índices.
– Autorização resource: permite a criação de novas
relações (tabelas).
– Autorização alteration: permite a adição ou remoção de
atributos em uma relação (tabela)
– Autorização drop: permite a remoção de relações
(tabelas).
Garante que as coisas que estão tentando fazer são corretas.
Autorização
Um usuário pode ter várias formas de autorização
sobre partes do banco de dados. Dentre elas
estão as seguintes:
– Autorização read: permite a leitura, mas não modificações de dados.
– Autorização insert: permite a inserção de novos dados, mas não a
modificação de dados existentes.
– Autorização update: permite a modificação, mas não a remoção de
dados.
– Autorização delete: permite a remoção de dados.
• Um usuário pode receber todos, nenhum ou uma
combinação desses tipos de autorização.
Autorização no SQL Server
 Os recursos de segurança do SQL Server permitem
determinar:
 Quais usuários podem usar o SQL Server.
 Quais usuários podem acessar cada banco de dados.
 As permissões de acesso para cada objeto de banco de
dados e para cada usuário.
 As permissões de acesso para cada comando SQL em
cada banco de dados, para cada usuário.
1
16/06/2009
Autorização no SQL Server
Modos de Segurança SQL Server
 Existem quatro barreiras para que os usuários possam acessar
 Modo de segurança do Windows
 Recursos avançados de segurança
 Adicionar grupos como uma conta.
 Acesso rápido.
dados em um servidor SQL Server:
 O sistema operacional de rede; o usuário deve efetuar logon na rede.
 A autenticação do SQL Server; o usuário deve ter uma conta no SQL
Server.
 A autenticação de banco de dados; o ID do usuário deve existir em
uma tabela de sistema do banco de dados (mais especificamente, a
tabela sysusers)
 A autenticação de objetos; o usuário deve ter permissões para
acessar qualquer objeto (tabelas, visões, entre outros).
 Modo de Segurança Mista
 Clientes não-Windows e usando browser podem usar
esse modo para conectar-se.
 Camada adicional de segurança sobre o Windows
Autorização
Visões (Views)
A última forma de autorização é aquela
dada ao administrador do banco de
dados (DBA).
Visão - é uma forma diferente de ver uma relação
(escondendo dados que não precisam ser vistos ou
visualizando os dados resultantes de uma
determinada consulta).
– O nível de autorização dado ao DBA é análoga
aquele fornecido a um super-usuário (root) de um
sistema operacional.
– Controle total sobre o sistema de banco de dados.
• Embora possa ser negado o acesso direto de um
usuário a uma relação, pode ser permitido ao
usuário acessar parte daquela relação por meio de
uma visão.
Exemplo
Exemplo
 Sistema Bancário:
Em SQL a visão pode ser definida como:
 Considere um caixa que precise dos nomes de todos os
create view cliente_agência as
(select nome_ag, nome_cli
from depositante, conta
where depositante.número_conta = conta.número_conta)
Agência = (nome_ag, cidade_ag, fundos).
Conta = (nome_ag, número_conta, saldo)
Depositante = (nome_cli, número_conta)
clientes que têm conta em cada agência. Porém, este caixa
não está autorizado a ver as demais informações da conta do
cliente.
– Desta forma, o acesso à tabela CONTA deve ser negado
para o caixa.
– O acesso deve ser concedido através de uma visão que
fornece somente as informações necessárias.
• O caixa poderá, então, fazer a seguinte
consulta:
select * from cliente_agência
2
16/06/2009
Autorização sobre Visões
Especificação de Segurança em SQL
 O usuário que cria uma visão recebe somente os
privilégios que não fornecem autorização adicional além
daquelas que ele já possui.
 O padrão SQL possui comandos para
• Exemplo: um usuário não pode ter a autorização de
update sobre uma visão caso ele não tenha a
autorização de update sobre as relações usadas na
visão.
• No exemplo anterior, o criador da visão deve ter
autorização read sobre as duas relações utilizadas.
conceder e revogar privilégios.
 O padrão SQL inclui os privilégios delete, insert, select
(read) e update.
 O padrão SQL também inclui um privilégio references
que restringe a declaração de chaves estrangeiras
pelo usuário quando cria relações.

Permite que usuários criem chaves estrangeiras que se refiram
a outras relações.
Especificação de Segurança em SQL
Especificação de Segurança em SQL
 A declaração grant é usada para conferir
 Por default, não é permitido a um usuário que recebeu um
privilégio em SQL conceder esse privilégio a outro usuário.
autorização.
 Forma básica:

grant <lista de privilégios> on <nome da relação ou nome da
visão> to <lista de usuários>
• Exemplo:
 Exemplos:

grant select on agência to U1,U2,U3


– grant select on agência to U1 with grant option
Concede aos usuários U ,U ,U a autorização select sobre a relação agência.
1
2
3
Grant update (nome_cli) on depositante to U1,U2,U3

• Se desejamos conceder um privilégio e permitir ao receptor
passar esse privilégio a outros usuários, anexamos a
condição with grant option ao comando grant apropriado.
A autorização update pode tanto ser conferida a todos os atributos da relação
como a apenas um deles
• Pode ser utilizado o privilégio all privileges, para ser
utilizadas como forma abreviada para todos os privilégios e
public, da mesma forma, para todos os usuários.
Especificação de Segurança em SQL
Especificação de Segurança em SQL
A declaração revoke é usado para
revogar uma autorização.
As opções cascade e restrict:
 Forma básica:

revoke <lista de privilégios> on <nome da relação ou
visão> from <lista de usuário> [restrict | cascate]
 Exemplos:
 revoke select on agência from U1, U2, U3 cascade
 revoke update (nome_cli) on depositante from U1, U2,
U3
 A revogação de um privilégio concedido a
um usuário pode fazer com que outros
usuários também percam esse privilégio.
 Para que isto aconteça utiliza-se a opção cascade.
 revoke select on agência from U1, U2, U3 cascade
 Para impedir a revogação em cascata utiliza-se a opção
restrict. Neste caso, haverá a emissão de uma mensagem de
erro caso haja qualquer revogação em cascata, e a ação de
revogar não será implementada.

revoke select on agência from U1, U2, U3 restrict
3
16/06/2009
Papéis (Roles)
Criptografia
 Na sua essência, um papel [role] é um grupo de
usuários que têm necessidades semelhantes de acesso
ao SQL Server.
 As diversas medidas que um sistema de banco de
dados utiliza para impedir o acesso de intrusos às
informações pode não ser suficiente.
 Solução:
 Criptografar os dados.
 Diferentes de papéis do SQL Server, incluindo os
seguintes:
 Papéis predefinidos de servidor
 Papéis predefinidos de bancos de dados roles
 O papel público
 Papéis personalizados de bancos de dados
Criptografia
 Uma boa técnica de criptografia tem as
seguintes propriedades:
(Substituição de cada caracter pelo próximo caracter do alfabeto)
teste
Algoritmo
de
Criptografia
uftuf
Criptografia Simétrica
 Chave de codificação = chave de
decodificação.
 É relativamente simples para os usuários autorizados codificar e
decifrar os dados.
 O esquema de criptografia não depende do segredo do algoritmo,
mas de um parâmetro do algoritmo chamado chave de criptografia.
 É extremamente difícil para um intruso determinar a chave de
criptografia.
 Existem 3 tipos de esquemas criptográficos.
 Simétricos
 Assimétricos
 Híbridos
 Deve-se ter cuidado ao passar a chave para o receptor.
(intrusos não devem interceptá-la)
 Esse esquema tem como principal vantagem a performance.
 Um exemplo de algoritmo usando esse esquema é o DES –
Data
 Encryption Standard, desenvolvido na década de 70 pela IBM.
Criptografia Simétrica
Criptografia Assimétrica
 Chave de Codificação ≠ Chave de decodificação
 Cada participante possui um par de chaves (uma pública e
uma privada)
 Todos disponibilizam suas chaves públicas e guardam suas
chaves privadas.
 Quando José quer mandar uma mensagem para Maria,
codifica-a com a chave pública de Maria.
 Desta forma, só Maria terá a chave privada para decifrar a
mensagem.
 Vantagem: Maior segurança
 Desvantagem: Menor desempenho.
 Um exemplo de algoritmo usando esse esquema é o RSA desenvolvido por Rivest, Shamir and Adleman no início da
década de 80
4
16/06/2009
Criptografia Assimétrica
Criptografia Híbrida
 Esquemas simétricos e assimétricos são
utilizados em conjunto.
 A chave simétrica é usada para codificar a mensagem.
 A chave pública do receptor da mensagem é usada para codificar a
chave simétrica.
 Vantagens
 Melhor performance
 Maior segurança.
 Exemplo
 O protocolo SET (Secure Electronic Transaction) utiliza o esquema
híbrido de criptografia.
Exercício
Criar uma base de dados com as tabelas abaixo:
- Agência = (NumAg, Cidade)
- Conta = (NumA, NumConta , CodCli, saldo)
- Cliente = (CodCli, NomeCli)
2. Inserir Dados nas tabelas
3. Criar uma View que mostre a cidade e o nome do cliente.
4. Criar um usuário com o seu nome
5. Setar a permissão de select na View criada para o novo
usuário .
6. Fechar o SQL Server, e fazer o login com o novo usuário
7. Fazer um Select que mostre os clientes Cadastrados
8. Fazer um Select na View Criada
1.
5
Download