Departamento: Departamento de Engenharias e Ciência da Computação Curso: Ciência da Computação Semestre: 4o Ano: 2006 Disciplina: Banco de Dados II Créditos: 04 Professora: Cristina Paludo Santos Segurança de Dados - Resumo 1. Segurança de Dados: Idéia básica: Os dados armazenados no banco de dados precisam ser protegidos contra acessos não autorizados, destruição ou alteração intencional. Objetivo principal: Utilizar mecanismos de resguardo contra acessos não-autorizados no BD. 1.1 Violações de Segurança Classificação perda de consistência do banco de dados - Intencional (malicioso) - Acidental – tratamento facilitado Perda Acidental: - Quebras durante o processamento de transações; - Anomalias causadas por acesso concorrente no BD; - Anomalias causadas pela distribuição de dados sobre diversos computadores; - Erro lógico que viola a suposição de que as transações preservem as restrições de consistência do BD. Perda Intencional: - Leitura não autorizada de dados; - Modificação não autorizada de dados; - Destruição não autorizada de dados; Níveis para adoção de medidas de segurança: - Físico: local onde os sistemas de computador estão localizados; - Humano: acesso a máquina; - Sistema de Banco de Dados: limitar o acesso dos usuários aos dados armazenados; 1.2 Autorização - Sistema de Autorização: mecanismo que permite conceder ou revogar privilégios de acesso para os usuários do banco de dados. - Formas de Autorização em partes do banco de dados: - Leitura: SIM leitura / NÃO modificação; - Inserção: SIM inserção / NÃO modificação; - Atualização: SIM modificação / NÃO remoção; - Remoção: SIM remoção Segurança de dados – Banco de Dados II 1 - Comandos SQL utilizados pelo sistema de autorização: - Para CONCEDER privilégios de acessos é usada a instrução GRANT: GRANT <lista de privilégios> ON <nome da tabela ou visão> TO <lista de usuários>; - A lista de privilégios permite especificar os seguintes tipos de privilégios: - Select: especifica que o usuário pode ler os dados das tabelas ou visões listadas; - Delete: especifica que o usuário pode excluir linhas das tabelas ou visões listadas; - Insert: especifica que o usuário pode incluir linhas das tabelas ou visões listadas; - Update: especifica que o usuário pode alterar linhas das tabelas ou visões listadas. Este privilégio é atribuído a colunas especificadas: GRANT UPDATE (saldo) ON deposito TO u1, u2; - Expand: especifica que o usuário pode acrescentar um campo a tabela; - References: especifica que o usuário pode criar tabelas que contêm uma chave estrangeira. Também é atribuído a colunas especificas: GRANT REFERENCES (código) ON depto TO u1, u2; - Um usuário não pode conceder os privilégios recebidos a outros usuários, a menos que possua autorização para tal: GRANT Select ON Depto TO Usuário_1, Usuário_2 WITH GRANT OPTION - Para REVOGAR privilégios de acessos é usada a instrução REVOKE: REVOKE <lista de privilégios> ON <nome da tabela ou visão> FROM <lista de usuários>; - Quando um usuário perde um privilégio, todos os usuários que dele receberam este privilégio também o perde. 1.2.1 Grafos de Concessão de Privilégios Pode-se permitir a um usuário conceder a outros usuários alguma forma de autorização a ele concedida. No entanto, devemos ser cuidadosos sobre como a autorização pode ser repassada entre os usuários, de modo a garantir que tal autorização possa ser revogada no futuro. Exemplo: Considere a concessão de autorização de atualização sobre a relação empréstimo. 1. O DBA concede a autorização de atualização a U1, U2 e U3, que podem repassar a sua autorização para ouros usuários; 2. A passagem de autorização pode ser representada por um grafo de autorizações da seguinte maneira: U1 DB A U2 U3 Segurança de dados – Banco de Dados II 2 - Os nodos do grafo são os usuários A raiz do grafo é o DBA Uma reta Ui Uj indica que o usuário Ui concedeu uma autorização para o usuário Uj Todas as arestas de um grafo devem ter um caminho original a partir do DBA: U1 U4 DB U2 A U5 U3 3. Suponhamos que o DBA revogue a autorização de U1; 4. U4 teve autorização concedida por U1, sua autorização será revogada também; 5. U5 teve autorização concedida por U1 e U2, portanto não perde a autorização concedida por U2; 6. Ciclos de autorização devem ser prevenidos, por exemplo: a. DBA autoriza U2 e U3; b. U2 autoriza U3 que por sua vez autoriza U2; c. O DBA revoga a autorização de U2, mas este continua com a autorização através de U3 U2 U2 DB DB A A U3 U3 Obs.: O DBA deve revogar U3 para quebrar o ciclo; 1.3 Visão - Somente uma porção do BD é vista pelo usuário ou aplicação; - Tabela derivada a partir das tabelas do BD; - Tabela virtual, isto é, transparente para usuários e aplicações; - Visões são manipuladas como tabelas normais do BD; - Definição em SQL: CREATE VIEW <nome da visão> AS <expressão de consulta> - Operações DML sobre visões: - São executadas na(s) tabela(s) base - Exemplos: Select * Select codp, nome, idade From PacCâncer From Pacientes Where de paciente ‘J%’; Segurança dados –like Banco de Dados II Where problema = ‘Câncer’ and nome like ‘J%’; 3 Delete from PacCâncer Delete from Pacientes Where idade > 90; where problema = ‘Câncer’ and idade > 90; - Considerações importantes: - Toda visão é passível de consulta - Nem toda a visão é passível de atualização. ATOR (CodAtor, NomeAtor, Nacionalidade, Sexo, Idade, IndicacaoOscar, Oscar) FILME (CodFilme, NomeFilme, AnoFilme, Orçamento, Tempo) PERSONAGEM (CodFilme, CodAtor, Personagem, Cachê) Apresente o comando SQL para criar as seguintes visões: 1. Uma visão que apresente apenas o nome do atores e a quantidade de oscar que possui. 2. Uma visão que apresente o nome dos atores e o nome dos filmes em que atuaram. 3. Uma visão que apresente o nome dos atores, personagem que representou em cada filme e o cachê pago, mas apenas para os atores com idade maior do 40 anos. Segurança de dados – Banco de Dados II 4