Sumário Exploração de bases de dados Segurança Integridade Gabriel David FEUP - Rua dos Bragas, 4050-123 Porto - PORTUGAL Tel. 351-222041842 - Fax: 351-222000808 Email: [email protected] URL: http://www.fe.up.pt 1 Segurança e integridade Protecção dos dados Segurança direito à privacidade direito de propriedade direito à informação protecção da BD contra a consulta, alteração ou destruição não autorizadas ilegalidade Integridade manutenção da correcção dos dados, quer sob o aspecto da validade quer da consistência coerência Exploração - 2 Segurança - sobre o utilizador Normas de acesso ao centro de computação, arquivos de dados e terminais Código de identificação e password Num grande SGBD o processo das autorizações deve ser mais selectivo e flexível Exploração - 3 Exemplo de acesso Dados na BD de uma empresa EMPREGADO( nr, nome, morada, dept, salário, avaliação) Tipos de acesso desejáveis acesso livre a toda a relação, para todas as operações acesso apenas à própria informação, sendo permitida a alteração de apenas alguns valores acesso interdito acesso aos atributos nr, nome e salário, podendo alterar salário, mas apenas entre as 9H e as 17H, num terminal do Serviço de Pessoal possibilidade de aplicação de operadores estatísticos ao atributo salário, mas com interdição de consulta de registos individuais autorização de consulta a toda a relação, mas com possibilidade de alteração apenas do atributo avaliação dos empregados que pertençam ao departamento de que o utilizador é director Exploração - 4 Perfis Excesso de restrições de acesso implica sobrecarga no SGBD verificação de autorização afecta todos os acessos Habitualmente definem-se perfis de utilização aos quais se associam os utilizadores fundamental o recurso a vistas que funcionam como tabelas virtuais e fornecem um nível de independência dos dados possibilidade de definição de procedimentos de autorização ou de restrições específicos para um utilizador que se combinem com os genéricos e permitam controlo fino sobre o acesso para além da segurança, criar um ambiente agradável ao utilizador, filtrando o irrelevante uso de sinónimos (CREATE SYNONYM x FOR user.tabela) Exploração - 5 Instrução SQL GRANT Esta instrução define o tipo de acesso dos utilizadores aos objectos da BD que não criaram o criador de um objecto tem habitualmente todos os direitos sobre ele Exploração - 6 Privilégios de objectos Exemplo GRANT UPDATE (telefone, salario) ON intranet.tabEmpregados TO chefePessoal WITH GRANT OPTION Privilégio de objecto ALTER DELETE EXECUTE INDEX INSERT READ REFERENCES SELECT UPDATE Tabela Vista X X X Funções, Sequência Pacotes X X X X X X X X X X Tipos de utilizador X X Exploração - 7 Papéis Os papéis funcionam como conjuntos de privilégios de objectos ou de sistema que se podem conceder em bloco a um utilizador estruturam a definição dos perfis podem conceder-se (sub)papéis a papéis Exploração - 8 Privilégios de sistema Exemplos de privilégios CREATE SESSION - ligar à BD ALTER SESSION - mudar parâmetros da sessão CREATE ANY TABLE - criar tabelas DELETE ANY TABLE DROP ANY TABLE CREATE USER CREATE VIEW privilégio pode ser dado a um utilizador directamente ou através de um papel Exploração - 9 Segurança - sobre os dados Senhas para acesso a ficheiros ou atributos, dependendo da operação a efectuar estabelecimento de combinações sensíveis de características dos dados, associadas a condições a satisfazer pelo utilizador programa de arbitragem de alta prioridade e bem protegido para autorizar cada acesso Exploração - 10 BD estatísticas Pretende-se obter informações de síntese sobre grandes subconjuntos de dentidades, sem ter acesso a dados individuais Exemplos recenseamentos BD clínicas “percentagem de doentes cancerígenos fumadores?” SIM “o senhor Silva tem um cancro?” NÃO Regra impedir impressão de resultados derivados de pequenos conjuntos de dados Exploração - 11 Exemplo Pergunta select salario from emp where nome=‘Antão’ resultado vetado, dimensão(resultado) < n Pergunta k select avg(salario) Mx, count(*) Nx from emp where dept=‘Manutenção’ -- Nx > mínimo Pergunta k+1 select avg(salario) My, count(*) Ny from emp where dept=‘Manutenção’ or nome=‘Antão’ -- Ny > mínimo salário(Antão) = Ny My - Nx Mx Regra refinada impedir respostas com intersecções muito grandes com perguntas anteriores (memorizar k perguntas) Exploração - 12 Identificação parcial Compromisso grau de segurança/sobrecarga Respostas deliberadamente erradas a perguntas inválidas Outra abordagem - pesquisa por identificação parcial registos com a média dos rendimentos de um pequeno grupo de cidadãos com características semelhantes chave composta 4 6 1 6 5 IRS sexo carro distrito localidade profissão pergunta só pode especificar 12 bits (menor relação: 222-212 = 1024) IRS dos homens de Gaia, Porto SIM (11 bits) IRS dos médicos de Aveiro com Rover NÃO (15 bits) Exploração - 13 Segurança - sobre infiltradores Vão para além do uso “normal” do sistema curto-circuito da aplicação e/ou do SGBD intercepção de mensagens nas linhas de comunicação roubo de um disco Contra-medidas encriptação das mensagens encriptação das partes críticas da BD • criptografia pode ser implementada em HW ou SW Princípio dos sistemas de segurança situar o “custo” da violação dos dados ao mesmo nível do benefício obtido confidencialidade + integridade + disponibilidade Exploração - 14 Integridade Protecção quanto a operações inválidas restrições de integridade são extensões à LDD validação fazem parte do modelo de dados associadas a conjuntos de dados e certas operações de manipulação escritas na LMD ou numa linguagem hospedeira gamas de valores (restrições CHECK) integridade das entidades (chave primária sem valores nulos) integridade referencial (inserção/apagamento) consistência dependências funcionais (3NF + chave) valores calculados Exploração - 15 Recomendações Bom projecto procedimentos específicos para cada operação restrições, triggers rotinas de detecção de erros Bom senso! Exploração - 16