Baixe o app para aproveitar ainda mais
Prévia do material em texto
117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 1 UNIDADE 4 – TÓPICOS AVANÇADOS SOBRE SGBD MÓDULO 1 – SEGURANÇA DE BANCO DE DADOS 01 1 - INTRODUÇÃO A QUESTÕES DE SEGURANÇA DE BANCO DE DADOS Em nossa matéria, já tratamos sobre dispositivos para backup e técnicas gerais de recuperação de falhas. Nesta etapa do estudo, trataremos de conceitos avançados, como segurança de dados (que será tratado a seguir), Bancos de dados distribuídos, mineração de dados e bancos de dados OLAP. A segurança do banco de dados é uma área extensa, que tenta resolver muitos problemas, incluindo os seguintes: Diversas questões legais e éticas com relação ao direito de acessar certas informações — por exemplo, algumas informações podem ser consideradas particulares e não serem acessadas legalmente por organizações ou pessoas não autorizadas. Existem várias leis que controlam a privacidade da informação, como, por exemplo, o sigilo bancário que impede que outros tenham acessos aos seus dados bancários. Questões políticas em nível governamental, institucional ou corporativo quanto aos tipos de informações que não devem se tornar públicas. Por exemplo, classificações de crédito e registros médicos pessoais. Questões relacionadas ao sistema, como os níveis de sistema em que várias funções de segurança devem ser impostas. Por exemplo, se uma função de segurança deve ser tratada no nível de hardware físico, no nível do sistema operacional ou no nível do SGBD. A necessidade, em algumas organizações, de identificar vários níveis de segurança e categorizar os dados e usuários com base nessas classificações. Por exemplo, altamente secreta, secreta, confidencial e não classificada. A política de segurança da organização com relação a permitir o acesso a várias classificações dos dados deve ser imposta. Neste módulo veremos como o SGBD pode atuar para fornecer a segurança adequada às informações. 02 1.1 - Ameaças aos bancos de dados As ameaças aos bancos de dados podem resultar na perda ou degradação de alguns ou de todos os objetivos de segurança comumente aceitos: integridade, disponibilidade e confiabilidade: Perda de integridade. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 2 Perda de disponibilidade. Perda de confidencialidade. Para proteger os bancos de dados contra esses tipos de ameaças, é comum implementar quatro tipos de medidas de controle: a) controle de acesso, b) controle de inferência, c) controle de fluxo e d) criptografia. Essas medidas de controle serão tratadas adiante. Perda de integridade A integridade do banco de dados refere-se ao requisito de que a informação seja protegida contra modificação imprópria (direito de modificar a informação). A modificação de dados inclui criação, inserção, atualização, mudança do status dos dados e exclusão. A integridade é perdida se mudanças não autorizadas forem feitas nos dados por atos intencionais ou acidentais. Se a perda da integridade do sistema ou dos dados não for corrigida, o uso continuado do sistema contaminado ou de dados adulterados poderia resultar em decisões imprecisas, fraudulentas ou errôneas. Perda de disponibilidade A disponibilidade do banco de dados refere-se a tornar os objetos disponíveis a um usuário humano ou a um programa ao qual eles têm um direito legítimo (direito de leitura e modificação). Isso pode acontecer, por exemplo, como resultado de uma falha de segurança, em que um hacker consegue derrubar o serviço de banco de dados, tornando-o indisponível. Perda de confidencialidade A confidencialidade do banco de dados refere-se à proteção dos dados contra acesso não autorizado (direito de acesso). O impacto do acesso não autorizado de informações confidenciais pode variar desde a violação de leis de sigilo até o comprometimento da segurança nacional. Esse acesso ou 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 3 exposição não autorizados de dados poderia resultar em perda de confiança pública, constrangimento ou ação legal contra a organização. 03 Em um sistema de banco de dados multiusuário, o SGBD precisa oferecer técnicas para permitir que certos usuários ou grupos de usuários acessem partes selecionadas de um banco de dados sem que obtenham acesso ao restante dele. Isso é particularmente importante quando um grande banco de dados integrado precisa ser usado por diversos usuários diferentes dentro da mesma organização. Por exemplo, informações confidenciais, como salários de funcionários ou análises de desempenho, devem ser mantidas confidenciais para a maioria dos usuários do sistema de banco de dados. Um SGBD normalmente inclui um subsistema de segurança e autorização do banco de dados que é responsável por garantir a segurança de partes de um banco de dados contra acesso não autorizado. Agora, é comum referir-se a dois tipos de mecanismos de segurança de banco de dados: Mecanismos de segurança discricionários. Estes são usados para conceder privilégios aos usuários, incluindo a capacidade de acessar arquivos de dados, registros ou campos específicos em um modo especificado (como leitura, inserção, exclusão ou atualização). Mecanismos de segurança obrigatórios. Estes são usados para impor a segurança multinível pela classificação de dados e usuários em várias classes (ou níveis) de segurança e, depois, pela implementação da política de segurança apropriada da organização. Por exemplo, uma política de segurança típica é permitir que os usuários em certo nível de classificação (ou liberação) vejam apenas os itens de dados classificados no próprio nível de classificação (ou inferior) do usuário. Uma extensão disso é a segurança baseada em papéis, que impõe políticas e privilégios com base no conceito de papéis organizacionais. Esses mecanismos serão detalhados mais à frente. 04 1.2 - Medidas de controle Como dissemos antes, quatro medidas de controle principais são usadas para fornecer segurança aos bancos de dados: 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 4 Controle de acesso. Controle de inferência. Controle de fluxo. Criptografia de dados. Controle de acesso Um problema de segurança comum aos sistemas de computação é o de impedir que pessoas não autorizadas acessem o próprio sistema, seja para obter informações ou para fazer mudanças maliciosas em uma parte do banco de dados. O mecanismo de segurança de um SGBD precisa incluir provisões para restringir o acesso ao sistema de banco de dados como um todo. Essa função, chamada controle de acesso, é tratada criando-se contas do usuário e senhas para controlar o processo de login pelo SGBD. Controle de inferência Bancos de dados estatísticos são usados para fornecer informações estatísticas ou resumos dos valores com base em diversos critérios. Por exemplo, um banco de dados para estatísticas de população pode oferecer estatísticas com base em faixas etárias, níveis de renda, tamanho de residência, níveis de educação e outros critérios. Os usuários de banco de dados estatísticos, como os estatísticos do governo ou empresas de pesquisa de mercado, têm permissão para acessar o banco de dados e recuperar informações estatísticas sobre uma população, mas não para acessar informações confidenciais detalhadas sobre indivíduos específicos. A segurança para os bancos de dados estatísticos deve garantir que informações sobre os indivíduos não possam ser acessadas. Às vezes, é possível deduzir certos fatos com relação aos indivíduos baseando-se em consultas que envolvem apenas estatísticas de resumo sobre grupos; consequentemente, isso também nãodeve ser permitido. As medidas de controle correspondentes são chamadas de medidas de controle de inferência. 05 Controle de fluxo Outra questão de segurança é a do controle de fluxo, que impede que informações fluam de modo que alcancem usuários não autorizados. Os canais que são percursos para as informações fluírem implicitamente em caminhos que violam a política de segurança de uma organização são chamados de canais secretos. Criptografia de dados Uma medida de controle final é a criptografia de dados, que é utilizada para proteger dados confidenciais (como números de cartão de crédito e senhas) que são transmitidos por meio de algum 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 5 tipo de rede de comunicação. A criptografia também pode ser usada para oferecer proteção adicional para partes confidenciais de um banco de dados. Os dados são codificados usando algum algoritmo de codificação. Um usuário não autorizado que acessa dados codificados terá dificuldade para decifrá-los, mas os usuários autorizados recebem algoritmos de codificação ou decodificação (ou chaves) para decifrar os dados. Técnicas de criptografia que são muito difíceis de decodificar sem uma chave foram desenvolvidas para aplicações militares. As técnicas mais populares utilizam criptografia de chave pública, que é bastante usada para dar suporte a transações baseadas na Web em relação a bancos de dados, e assinaturas digitais, que são utilizadas em comunicações pessoais. Uma discussão abrangente da segurança nos sistemas de computação e bancos de dados está fora do escopo desta disciplina. Você verá apenas uma rápida visão geral das técnicas de segurança de banco de dados aqui. 06 1.3 - Segurança de banco de dados e o DBA Como já se sabe, o administrador do banco de dados (DBA) é a autoridade central para gerenciar um sistema de banco de dados. As responsabilidades do DBA incluem conceder privilégios aos usuários que precisam usar o sistema e classificar os usuários e dados de acordo com a política da organização. O DBA tem uma conta de DBA no SGBD, também conhecida como conta do sistema ou conta de superusuário, que oferece capacidades poderosas que não estão disponíveis às contas e usuários comuns do banco de dados. Os comandos privilegiados do DBA incluem aqueles para conceder e revogar privilégios a contas, usuários ou grupos de usuários individuais e para realizar os seguintes tipos de ações: 1) Criação de conta. 2) Concessão de privilégio. 3) Revogação de privilégio. 4) Atribuição de nível de segurança. O DBA é responsável pela segurança geral do sistema de banco de dados. A primeira ação da lista acima é usada para controlar o acesso ao SGBD como um todo, enquanto as ações 2 e 3 são utilizadas para controlar a autorização de banco de dados discricionária, e a ação 4, para controlar a autorização obrigatória. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 6 Criação de conta Essa ação cria uma conta e senha para um usuário ou grupo de usuários para permitir acesso ao SGBD. Concessão de privilégio Essa ação permite que o DBA conceda certos privilégios a determinadas contas. Revogação de privilégio Essa ação permite que o DBA revogue (cancele) alguns privilégios que foram dados anteriormente a certas contas. Atribuição de nível de segurança Essa ação consiste em atribuir contas do usuário ao nível de liberação de segurança apropriado. 07 O comando SQL que cria um usuário no banco de dados é o CREATE USER, e ele tem o seguinte padrão: CREATE USER ‘nome_do_usuario’ IDENTIFIED BY ‘senha_de_acesso’ O comando DROP USER é utilizado para excluir uma conta de usuário: DROP USER ‘nome_do_usuario’ Cada SGBD possui uma série de outras funcionalidades complementares que podem ser configuradas por parâmetros especiais, como por exemplo, tempo de validade da senha, necessidade de alterar a senha no primeiro login, tipo de criptografia de senha etc. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 7 Veja um exemplo Veja um exemplo Vamos supor que um sistema bancário de nome “Sistema De Crédito” precise de acesso aos bancos de dados de “Clientes” (apenas para consulta) e do banco de dados “DadosBancarios” (para consulta e alteração. O DBA pode criar um usuário de nome “USR_SistCredito”, concedendo direito de leitura no banco de dados “Clientes” e de leitura e alteração em “DadosBancarios”, criando uma senha de acesso, como por exemplo “SDF@SD#33@D&A!JBV”. O programador então utilizará esses dados de usuário e senha para que o sistema de crédito possa acessar ambos os bancos. Os usuários finais não terão acesso direto ao banco de dados, apenas por meio do sistema. Posteriormente, o gestor do sistema, por sua vez, cadastrará os usuários do sistema, criando perfis de acesso e senhas para eles. 08 1.4 - Controle de acesso, contas de usuário e auditorias de banco de dados Sempre que uma pessoa ou um grupo de pessoas precisa acessar um sistema de banco de dados, o indivíduo ou grupo precisa primeiro solicitar uma conta de usuário. O DBA, então, criará um novo número de conta e senha para o usuário, se houver uma necessidade legítima para acessar o banco de dados. O usuário precisa efetuar o login no SGBD ao entrar com o número de conta e senha sempre que o acesso ao banco de dados for necessário. O SGBD verifica se os números de conta e senha são válidos; se forem, o usuário tem permissão para usar o SGBD e acessar o banco de dados. Os programas de aplicação também podem ser considerados usuários e precisam efetuar o login no banco de dados (ver nota final do capítulo anterior). É simples registrar os usuários do banco de dados e suas contas e senhas criando uma tabela criptografada ou um arquivo com dois campos: Numero_conta e Senha. Essa tabela pode ser facilmente mantida pelo SGBD. Sempre que uma conta é criada, um novo registro é inserido na tabela. Quando uma conta é cancelada, o registro correspondente deve ser excluído da tabela. O sistema de banco de dados também precisa registrar todas as operações no banco de dados que são aplicadas por certo usuário em cada sessão de login, que consiste na sequência de interações do Muitos sistemas de informação possuem o controle de acesso feito diretamente pelo próprio sistema (e não pelo SGBD), em um módulo de segurança específico. Nesses casos, o gestor ou administrador do sistema é o responsável por desempenhar atividades, semelhantes a estas citadas, para o DBA. Este, por sua vez, cria e concede acesso para o sistema acessar o banco de dados de forma a poder ler e alterar qualquer tabela (o programador é quem configura esse usuário especial de acesso ao banco de dados). O nível de acesso individual de cada usuário, conforme citado, é gerenciado pelo sistema de informação. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 8 banco de dados que o usuário realiza desde o momento do login até o momento do logoff. Quando um usuário efetua o login, o SGBD pode registrar o número de conta do usuário e associá-lo ao computador ou dispositivo do qual o usuário realizou a conexão. Todas as operações aplicadas a partir desse computador ou dispositivo são atribuídas à conta do usuário até que ele efetue o logoff. É particularmente importante registrar as operações de atualização que são aplicadas ao banco de dados, de modo que, se o banco de dados for adulterado, o DBA possa determinar qual usuário mexeu nele. 09 Para manter um registro de todas as atualizações realizadas no banco de dados e de usuários em particular que aplicaram cada atualização, podemos modificar o logdo sistema. Lembre-se que o log do sistema inclui uma entrada para cada operação aplicada ao banco de dados que pode ser exigida para a recuperação de uma falha de transação ou falha do sistema. Podemos expandir as entradas de log de modo que também incluam o número de conta do usuário e o computador on-line ou ID de dispositivo que aplicou cada operação registrada no log. Se houver suspeita de qualquer adulteração no banco de dados, é realizada uma auditoria do banco de dados, que consiste em rever o log para examinar todos os acessos e operações aplicadas ao banco de dados durante certo período. Quando uma operação ilegal ou não autorizada é encontrada, o DBA pode determinar o número de conta usado para realizar a operação. As auditorias são particularmente importantes para bancos de dados confidenciais, que são atualizados por muitas transações e usuários, como no caso de bancos que os atualizam por meio de seus diversos caixas e clientes. Um log de banco de dados, utilizado principalmente para fins de segurança, às vezes é chamado de trilha de auditoria. 10 1.5 - Dados sensíveis e tipos de exposição A sensibilidade de dados é uma medida da importância atribuída aos dados por seu proprietário, com a finalidade de indicar sua necessidade de proteção. Alguns bancos de dados contêm apenas dados confidenciais, enquanto outros podem não conter qualquer dado confidencial. O tratamento de bancos de dados que caem nesses dois extremos é 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 9 relativamente fácil, pois podem ser tratados pelo controle de acesso, que é explicado na próxima seção. A situação torna-se mais complicada quando alguns dos dados são confidenciais, enquanto outros não o são. Diversos fatores podem fazer que os dados sejam classificados como confidenciais: Inerentemente confidenciais. De uma fonte confidencial. Confidenciais declarados. Um atributo ou registro confidencial. Confidencial em relação a dados previamente expostos. Inerentemente confidenciais. O valor dos próprios dados pode ser tão revelador ou confidencial que ele se torna sensível. Por exemplo, o salário de uma pessoa ou o fato de um paciente ter HIV/AIDS. De uma fonte confidencial. A fonte dos dados pode indicar uma necessidade. Por exemplo, um informante cuja identidade precisa ser mantida em segredo. Confidenciais declarados. O proprietário dos dados pode tê-los declarado explicitamente como confidenciais. Por exemplo, a lista de funcionários que poderão ser demitidos de uma empresa. Um atributo ou registro confidencial. O atributo ou registro em particular pode ter sido declarado confidencial. Por exemplo, o atributo de salário de um funcionário ou o registro do histórico de salários em um banco de dados pessoal. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 10 Confidencial em relação a dados previamente expostos. Alguns dados podem não ser confidenciais por si sós, mas assim se tornarão na presença de algum outro dado. Por exemplo, a informação exata de latitude e longitude para um local onde aconteceu algum evento previamente registrado, que mais tarde foi considerado confidencial. 11 É responsabilidade do administrador de banco de dados e do administrador de segurança impor coletivamente as políticas de segurança de uma organização. Isso indica se o acesso deve ser permitido a certo atributo do banco de dados (também conhecido como coluna da tabela ou um elemento de dados) ou não para usuários individuais ou para categorias de usuários. Vários fatores precisam ser considerados antes de se decidir se é seguro revelar os dados. Os três fatores mais importantes estão listados a seguir. Disponibilidade de dados. Se um usuário estiver atualizando um campo, então esse campo torna-se inacessível e outros usuários não devem visualizar esses dados. Esse bloqueio é temporário e apenas para garantir que nenhum usuário veja quaisquer dados imprecisos. Isso normalmente é tratado pelo mecanismo de controle de concorrência. Aceitabilidade de acesso. Os dados só devem ser revelados a usuários autorizados. Um administrador de banco de dados também pode negar acesso a uma solicitação do usuário mesmo que esta não acesse diretamente um item de dados confidencial, com base no fato de os dados solicitados poderem revelar informações sobre os dados confidenciais que o usuário não está autorizado a ter. Garantia de autenticidade. Antes de conceder acesso, certas características externas sobre o usuário também podem ser consideradas. Por exemplo, um usuário só pode ter acesso permitido durante determinadas horas de trabalho. O sistema pode rastrear consultas anteriores para garantir que uma combinação de consultas não revele dados confidenciais. Esse último é particularmente relevante para consultas a banco de dados estatístico. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 11 12 2 - CONTROLE DE ACESSO DISCRICIONÁRIO O método típico para impor o controle de acesso discricionário em um sistema de banco de dados é baseado na concessão e revogação de privilégios (que são operados pelos comandos GRANT e REVOKE respectivamente). Vamos considerar os privilégios no contexto de um SGBD relacional. Em particular, vamos discutir um sistema de privilégios um tanto semelhante ao que foi desenvolvido originalmente para a linguagem SQL. Muitos SGBDs relacionais atuais utilizam alguma variação dessa técnica. A ideia principal é incluir declarações na linguagem de consulta que permitam que o DBA e usuários selecionados concedam e revoguem privilégios. 2.1 - Tipos de privilégios discricionários Na SQL, o conceito de identificador de autorização é usado para se referir a uma conta de usuário (ou grupo de contas de usuário). Para simplificar, usaremos as palavras usuário ou conta para indicar a mesma coisa, no lugar de identificador de autorização. O SGBD precisa fornecer acesso seletivo a cada relação no banco de dados com base em contas específicas. As operações também podem ser controladas; assim, ter uma conta não necessariamente capacita seu mantenedor a toda a funcionalidade oferecida pelo SGBD. 13 De maneira informal, existem dois níveis para atribuição de privilégios na utilização do sistema de banco de dados: O nível de conta. O nível de relação (ou tabela). Os privilégios no nível de conta se aplicam às capacidades fornecidas à própria conta e podem incluir: O privilégio CREATESCHEMA ou CREATE TABLE, para criar um esquema ou relação da base; O privilégio CREATE VIEW, para criar uma relação entre tabelas ou uma visão diferenciada; O privilégio ALTER, para aplicar mudanças de esquema como a inclusão ou remoção de atributos das relações; O privilégio DROP, para excluir relações ou visões; 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 12 O privilégio MODIFY, para inserir, excluir ou atualizar tuplas; O privilégio SELECT, para recuperar informações do banco de dados usando uma consulta SELECT. Observe que esses privilégios de conta se aplicam à conta em geral. Se determinada conta não tiver o privilégio CREATE TABLE, nenhuma relação pode ser criada com base nessa conta. Os privilégios em nível de conta não são definidos como parte da SQL; eles são deixados para os implementadores do SGBD definirem. Em resumo, os direitos atribuídos a um usuário dizem o que ele pode fazer e onde ele pode fazer. O nível de conta. Nesse nível, o DBA especifica os privilégios em particular que cada conta mantém independentemente das relações no banco de dados.O nível de relação (ou tabela). Nesse nível, o DBA pode controlar o privilégio para acessar cada relação ou Visão individual no banco de dados. 14 As questões de concessão de acesso de um SGBD são muito flexíveis. Há comandos que permitem, por exemplo: Que um usuário tenha acesso a uma tabela, mas não a um determinado campo dessa tabela. Que o usuário possa selecionar campos de uma tabela, mas não possa inserir novos registros. Que o usuário possa inserir novos registros em uma tabela, mas não possa alterá-los ou apaga- los. Que o usuário possa inserir novos registos em uma tabela, mas não possa selecionar os registros salvos. Que o usuário possa acessar qualquer dado, mas não possa criar uma tabela ou alterar um esquema. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 13 Que o usuário possa realizar backups, mas não possa acessar os dados das tabelas do banco. Ao criar um novo usuário em um banco de dados, ele não pode realizar nenhuma operação. Após a criação do usuário, o DBA precisa dar acesso às operações (como ler, inserir, alterar e/ou apagar dados) e aos objetos (como tabelas e visões). A seguir, veremos alguns exemplos de comandos. 15 Exemplos de comandos Na linguagem MySQL, o comando abaixo permite que o usuário ‘Marcelo’ acesse e modifique todas as tabelas do banco de dados SISTEMABANCARIO: GRANT ALL ON SISTEMABANCARIO.* TO ‘Marcelo’; O comando a seguir, permite que a usuária ‘Isadora’ tenha acesso de leitura na tabela FolhaPagamento do banco de dados FINANCEIRO: GRANT SELECT ON FINANCEIRO.FolhaPagamento to ‘Isadora’; Podemos ainda usar literais para declarar “todas as tabelas” ou “todos os bancos e todas as tabelas”. O comando a seguir garante o acesso à usuária ‘Rosa’ a todas as tabelas do banco de dados FINANCEIRO: GRANT SELECT ON FINANCEIRO.* to ‘Rosa’; O próximo comando garante o acesso a todas as tabelas de todos os bancos de dados para a usuária ‘Rosa”: GRANT SELECT ON *.* to ‘Rosa’; A lista de concessões pode ser dada também para comandos estruturais. O próximo exemplo permite que a usuária ‘Rosa’ crie tabelas no banco de dados ESTOQUE: GRANT CREATE TABLE ON ESTOQUE TO ‘Rosa’; 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 14 16 Alguns SGBDs permitem até mesmo controlar o uso que um usuário demanda do SGBD. O comando abaixo, por exemplo, disponível no MySQL, limita que o usuário ‘Thiago’ realize no máximo 100 consultas por hora no banco de dados: ALTER USER ‘Thiago’ WITH MAX_QUERIES_PER_HOUR 100; Consulte sempre o manual do SGBD que você utiliza para saber em detalhes as funcionalidades que ele disponibiliza para você. Clique aqui e veja, a título de exemplo, a lista de possibilidades de controle de segurança do SGBD MySQL. O comando REVOKE retira a segurança concedida pelo comando GRANT. O comando a seguir retira o acesso do usuário ‘Marcelo’ no banco de dados SISTEMABANCARIO: REVOKE ALL PRIVILEGES ON SISTEMABANCARIO FROM ‘Marcelo; O próximo comando remove o acesso do usuário ‘Rosa’ de inserir registro em todas as tabelas do banco ESTOQUE: REVOKE INSERT ON ESTOQUE FROM ‘Rosa’; Clique aqui Acesse a lista de possibilidades de controle de segurança do SGBD MySQL no seguinte link: http://dev.mysql.com/doc/refman/5.7/en/grant.html 17 2.2 - Controle de acesso baseado em papéis Imagine a seguinte situação: um determinado sistema possui 1000 usuários, destes, 2 são administradores, 10 são gerentes e os demais são usuários comuns que só fazem consultas. Para o DBA, garantir que cada usuário possua sua respectiva configuração de segurança correta pode ser bastante complexo. Há uma grande chance de que um entre os novecentos e poucos usuários comuns possua uma diferença de acesso. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 15 Para resolver tal situação o SGBD possui um objeto denominado papel. Um papel é como um cargo dentro de uma empresa. Cada pessoa de cada cargo tem direitos diferentes no banco de dados e, muito provavelmente, duas pessoas de cargos iguais têm iguais direitos no banco de dados. Dessa forma, ao invés de um DBA dar concessões de acessos à usuários, ele passa a dar concessões de acesso a papéis. Por exemplo, ele define quais permissões o papel “Administrador de sistema” pode ter, depois ele define quais permissões o papel “Usuário comum” pode ter e assim sucessivamente. Configurados os papéis, o segundo passo é relacionar quais papéis um determinado usuário pode assumir. E, nesse ponto, o SGBD é bastante flexível, um usuário pode receber vários papéis diferentes. O João, por exemplo, pode ser o administrador de um sistema, o gerente do sistema e um usuário comum do sistema. Para a SQL, um papel é definido pelo objeto ROLE. Um papel é criado com o comando CREATE ROLE e é excluído com o comando DESTROY ROLE. Depois que um papel é criado, o método de atribuir e revogar permissões é exatamente o mesmo utilizado para usuários. Com a criação de papéis, fica muito mais fácil para o DBA criar usuários e atribuir segurança a eles. 18 3 - INJEÇÃO DE SQL Injeção de SQL é uma das ameaças mais comuns a um sistema de banco de dados. Alguns dos outros ataques a bancos de dados, que são muito frequentes, são: Escalada de privilégios autorizada. Esse ataque é caracterizado por um indivíduo que tenta elevar seu privilégio atacando pontos vulneráveis nos sistemas de banco de dados. Abuso de privilégio. Enquanto o ataque anterior é feito por um usuário não autorizado, este é realizado por um usuário privilegiado. Por exemplo, um administrador que tem permissão para alterar a informação do aluno pode usar esse privilégio para atualizar notas de alunos sem a permissão do instrutor. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 16 Negação de serviço. Um ataque de negação de serviço (DOS — Denial Of Service) é uma tentativa de tornar recursos indisponíveis a seus usuários intencionados. Essa é uma categoria de ataque geral em que o acesso a aplicações ou dados da rede é negado aos usuários legítimos devido ao estouro do buffer ou esgotamento de recursos. Autenticação fraca. Se o esquema de autenticação do usuário for fraco, um atacante pode personificar a identidade de um usuário legítimo ao obter suas credenciais de login. 19 3.1 - Métodos de Injeção SQL Os programas e aplicações Web que acessam um banco de dados podem enviar comandos e dados ao banco de dados, bem como exibir dados recuperados do banco de dados por meio do navegador Web. Em um ataque de Injeção SQL, o atacante injeta uma entrada de cadeia de caracteres pela aplicação, que muda ou manipula a instrução SQL para o proveito do atacante. Um ataque de Injeção de SQL pode prejudicar o banco de dados de várias maneiras, como na manipulação não autorizada do banco de dados, ou recuperação de dados confidenciais. Ele também pode ser usado para executar comandos em nível do sistema que podem fazer o sistema negar serviço à aplicação. Os tipos de ataques de injeção SQL mais comuns são: Manipulação de SQL ou injeção de código. Sobrecarga de recursos ou negação de serviços (Deny of Service). Contorno de autenticação. Manipulação de SQL ou injeção de código Um ataque de manipulação muda um comando SQL na aplicação, fazendo que outra ação, diferente da originalmente proposta, seja executada no banco de dados. Por exemplo, suponha que um sistema de autenticação sistema de usuário receba o login e a senha do usuário e tente executar uma 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada17 operação como “SELECT * FROM usuarios WHERE nome = ‘Thiago’ AND senha = ‘@#$sdf’. O atacante percebe que há uma tabela de nome ‘usuarios’ no banco de dados e ele poderia, por exemplo, mudar a instrução para “DROP TABLE usuario”, fazendo com que o sistema apague a tabela ‘usuarios’ e assim impossibilitando todo e qualquer acesso ao sistema. Sobrecarga de recursos ou negação de serviços (Deny of Service) Esse tipo de ataque caracteriza-se pela sobrecarga do SGBD, fazendo que o processamento e/ou acesso a disco atinja 100% de ocupação. Dessa forma, outros processos de outros usuários ficam comprometidos e/ou não funcionam. Uma das formas de se executar esse tipo de ataque é criar loops infinitos de operações de acesso a dados, fazendo com que o sistema fique infinitamente realizando uma operação de acesso a disco. Um outro mecanismo desse tipo de ataque é sobrecarregar as portas de comunicação do servidor com a rede. Contorno de autenticação Esse tipo de ataque permite ao atacante logar o sistema como se fosse um usuário privilegiado, muitas vezes com os mesmos direitos do DBA, podendo assim realizar qualquer operação no banco de dados. 20 4 - TÉCNICAS PARA REPARAÇÃO DE UM SGBD ATACADO Os sistemas de banco de dados precisam operar e continuar suas funções, mesmo com capacidades reduzidas, apesar de eventos destruidores, como ataques de hackers. Um SGBD, além de realizar todos os esforços para impedir um ataque e detectar um e, caso ocorra, deve ser capaz de fazer o seguinte: Confinamento. Avaliação de danos. Reconfiguração. Reparo. Tratamento de falha. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 18 O objetivo do atacante é prejudicar a operação da organização e a realização de sua missão, por meio de danos a seus sistemas de informação. O alvo específico de um ataque pode ser o próprio sistema ou seus dados. Embora os ataques que paralisam totalmente o sistema sejam graves e dramáticos, eles também devem ser bem temporizados para alcançar o objetivo do atacante, pois os ataques receberão atenção imediata e concentrada, a fim de retornar o sistema à condição operacional, diagnosticar como ocorreu o ataque e instalar medidas preventivas. Confinamento. Tomar ação imediata para eliminar o acesso do atacante ao sistema e isolar ou conter o problema para impedir que se espalhe mais. Avaliação de danos. Determinar a extensão do problema, incluindo funções que falharam e dados adulterados. Reconfiguração. Reconfigurar para permitir que a operação continue em um modo reduzido enquanto a recuperação prossegue. Reparo. Recuperar dados adulterados ou perdidos e reparar ou reinstalar funções do sistema que falharam, para restabelecer um nível de operação normal. Tratamento de falha. Ao máximo possível, identificar os pontos fracos explorados no ataque e tomar medidas para impedir uma nova ocorrência. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 19 21 RESUMO Neste módulo, aprendemos que: a) Os três objetivos da segurança são: integridade (garantia de que os dados não foram alterados), disponibilidade (garantia de que os dados estão disponíveis para os usuários autorizados) e confiabilidade (garantia de que os dados são protegidos de acesso às pessoas não autorizadas). b) As quatro medidas protetoras de banco de dados são: controle de acesso, controle de inferência, controle de fluxo e criptografia. c) O controle de acesso inclui mecanismos de segurança discricionários e obrigatórios. d) O controle de acesso diz respeito às pessoas que podem ter acesso ou não a determinada informação por meio das funcionalidades de um sistema ou por meio do acesso direto ao banco de dados. e) O controle de inferência diz respeito à proteção de dados individuais calculados por meio de deduções lógicas de dados estatísticos. f) O controle de fluxo trata do impedimento do acesso de informações para pessoas não autorizadas. g) A criptografia de dados atua no embaralhamento de informações, codificando-as de tal forma que apenas pessoas que possuam as chaves de decodificação possam ter acesso à informação. h) O DBA controla os usuários e sistemas que acessam os bancos de dados por meio de contas específicas e perfis de acesso. Boa parte dos sistemas de informação tratam eles mesmos do controle de acesso dos usuários. i) Os principais comandos SQL para gerenciamento de segurança são os comandos GRANTE e REVOKE. j) A injeção de SQL é uma das ameaças mais comuns a SGBDs e caracteriza-se pelo ataque ao SGBD, seus dados e seus recursos. UNIDADE 4 – TÓPICOS AVANÇADOS SOBRE SGBD MÓDULO 2 – BANCOS DE DADOS DISTRIBUÍDOS 01 1 - CONCEITOS DE BANCO DE DADOS DISTRIBUÍDO (BDD) 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 20 Estudamos anteriormente questões de segurança dos bancos de dados. Neste módulo, falaremos de Bancos de dados distribuídos. Um sistema de computação distribuído consiste em uma série de elementos de processamento, não necessariamente homogêneos, que são interconectados por uma rede de computadores e que cooperam na realização de certas tarefas atribuídas. Exemplo ilustrativo de um sistema distribuído Como um objetivo geral, os sistemas de computação distribuídos dividem um grande problema, difícil de ser administrado em partes menores, solucionando-o de modo eficiente de uma maneira coordenada. A viabilidade econômica dessa técnica tem duas razões: mais poder de computação é aproveitado para solucionar uma tarefa complexa, e cada elemento de processamento autônomo pode ser gerenciado independentemente para desenvolver as próprias aplicações. 02 A tecnologia de Bancos de dados distribuídos (BDD) é o resultado de uma fusão de duas tecnologias: tecnologia de banco de dados e tecnologia de rede e comunicação de dados. As redes de computadores permitem o processamento distribuído de dados. Bancos de dados tradicionais, por sua vez, enfocam o fornecimento de acesso centralizado e controlado aos dados. Os bancos de dados distribuídos permitem uma integração de informações e seu processamento por aplicações que podem, por si mesmas, ser centralizadas ou distribuídas. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 21 Diversos sistemas de protótipo de banco de dados distribuído foram desenvolvidos na década de 1980 para resolver as questões de distribuição de dados, consulta distribuída e processamento de transação, gerenciamento de metadados de banco de dados distribuído e outros assuntos. Porém, um Sistema Gerenciador de Banco de Dados Distribuídos (SGBDD) abrangente em escala completa, que implementa a funcionalidade e as técnicas propostas na pesquisa em BDD, nunca surgiu como um produto comercialmente viável. A maioria dos principais vendedores redirecionou seus esforços de desenvolvimento de um produto SGBDD puro para o desenvolvimento de sistemas com base nos conceitos cliente-servidor, ou para o desenvolvimento de tecnologias para acessar fontes de dados heterogêneas distribuídas. As organizações continuam interessadas na descentralização do processamento (no nível de sistema) enquanto alcançam uma integração dos recursos de informação (no nível lógico) dentro de seus sistemas de bancos de dados, aplicações e usuários distribuídos geograficamente. Agora, existe um endosso geral da abordagem cliente-servidor para o desenvolvimento de aplicações, e a abordagem de três camadas (ou n-camadas) para o desenvolvimento de aplicações Web. 03 Podemos definir um banco de dados distribuído (BDD) como uma coleção de múltiplos bancos de dados logicamente inter-relacionados,distribuídos por uma rede de computadores, e um sistema de gerenciamento de banco de dados distribuído (SGBDD) como um sistema de software que gerencia um banco de dados distribuído enquanto torna a distribuição transparente ao usuário. Os bancos de dados distribuídos são diferentes dos arquivos Web da Internet. As páginas Web são basicamente uma coleção muito grande de arquivos armazenados em diferentes nós em uma rede — a Internet — com inter-relacionamentos entre os arquivos, representados por hyperlinks. As funções comuns do gerenciamento de banco de dados, incluindo o processamento de consulta uniforme e o processamento de transação, ainda não se aplicam a esse cenário. A tecnologia, no entanto, está mudando para uma direção tal que os bancos de dados distribuídos da World Wide Web (WWW) se tornarão uma realidade no futuro. A proliferação de dados em milhões de sites Web em várias formas não se qualifica como um BDD pela definição dada anteriormente. 04 1.1 - Diferenças entre sistemas multiprocessados e BDD 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 22 Precisamos distinguir os bancos de dados distribuídos dos sistemas multiprocessados que usam armazenamento compartilhado (memória primária ou disco). Para um banco de dados ser chamado de distribuído, as seguintes condições mínimas devem ser satisfeitas: Conexões de nós de banco de dados por uma rede de computadores. Inter-relação lógica dos bancos de dados conectados. Ausência de restrição de homogeneidade entre os nós conectados. Todos os sites podem estar localizados nas proximidades físicas — digamos, dentro do mesmo prédio ou um grupo de prédios adjacentes — e conectados por uma rede local, ou podem estar distribuídos geograficamente por grandes distâncias e conectados por uma rede de longa distância ou mesmo por meio da Internet. As redes locais costumam utilizar cabeamento lógico do tipo “par trançado”, enquanto as redes de longa distância utilizam fibras óticas por meio de linhas telefônicas ou mesmo sinais de satélites. Também é possível usar uma combinação de redes. As redes podem ter diferentes topologias que definem os caminhos de comunicação diretos entre os sites. O tipo e a topologia da rede utilizada podem ter um impacto significativo no desempenho e, portanto, nas estratégias para o processamento de consulta distribuído e o projeto de banco de dados distribuído. Para questões arquitetônicas de alto nível, porém, não importa o tipo de rede utilizada; o que importa é que cada site seja capaz de se comunicar, direta ou indiretamente, com todos os outros sites. Para o restante deste módulo, consideramos que existe algum tipo de rede de comunicação entre os sites, independentemente de qualquer topologia em particular. Não abordaremos quaisquer questões específicas da rede, embora seja importante entender que, para uma operação eficiente de um sistema de banco de dados distribuído (SBDD), questões de projeto e desempenho da rede são críticos e fazem parte integral da solução geral. Os detalhes da rede de comunicação básica são invisíveis ao usuário final. Conexões de nós de banco de dados por uma rede de computadores. Existem vários computadores, chamados sites ou nós. Esses sites devem ser conectados por uma rede de comunicação básica para transmitir dados e comandos entre sites. Inter-relação lógica dos bancos de dados conectados. É essencial que as informações nos bancos de dados sejam relacionadas logicamente. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 23 Ausência de restrição de homogeneidade entre os nós conectados. Não é necessário que todos os nós sejam idênticos em relação aos dados, hardware e software. 05 1.2 - Transparência O conceito de transparência estende a ideia geral de ocultar detalhes da implementação dos usuários finais. Um sistema altamente transparente oferece muita flexibilidade ao usuário final/desenvolvedor de aplicação, pois requer pouco ou nenhum conhecimento dos detalhes básicos de sua parte. No caso de um banco de dados centralizado tradicional, a transparência simplesmente pertence à independência lógica e física de dados para desenvolvedores de aplicação. Contudo, em um cenário de BDD, os dados e software são distribuídos por vários sites conectados por uma rede de computadores, de modo que tipos adicionais de transparências são introduzidos. Considere o banco de dados de empresa da figura abaixo, as tabelas FUNCIONARIO, PROJETO e TRABALHA_EM podem ser fragmentadas horizontalmente (ou seja, em conjuntos de linhas, conforme discutiremos logo adiante) e armazenadas com possível replicação, como mostra a figura a seguir. Modelo de dados fragmentados horizontalmente. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 24 06 Os seguintes tipos de transparências são possíveis: Transparência da organização dos dados (também conhecida como transparência de distribuição ou de rede). Isso se refere à liberdade para o usuário de detalhes operacionais da rede e o posicionamento dos dados no sistema distribuído. Ela pode ser dividida em: o transparência de local e o transparência de nomes. Transparência de replicação. Nesse modelo, as cópias dos mesmos objetos de dados podem ser armazenadas em vários sites para melhor disponibilidade, desempenho e confiabilidade. A transparência de replicação torna o usuário desavisado da existência dessas cópias. Transparência de fragmentação. Dois tipos de fragmentação são possíveis: o A fragmentação horizontal distribui uma relação (tabela) em sub-relações que são subconjuntos de tuplas (linhas) na relação original. Veja um exemplo. o A fragmentação vertical distribui uma relação em sub-relações em que cada uma é definida por um subconjunto das colunas da relação original. Exemplo de fragmentação vertical. Outras transparências incluem transparência de projeto e transparência de execução — referindo-se à liberdade de saber como o banco de dados distribuído é projetado e onde uma transação é executada. Transparência de local Refere-se ao fato de que o comando usado para realizar uma tarefa é independente do local dos dados e do local do nó onde o comando foi emitido. Transparência de nomes Implica que, quando um nome é associado a um objeto, os objetos nomeados podem ser acessados sem ambiguidade, sem especificação adicional quanto ao local onde os dados se encontram. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 25 Veja um exemplo Um banco de dados de vendas de uma empresa, no qual as vendas de cada estado ficam no banco de dados localizado naquele estado, para se fazer uma pesquisa por todas as vendas, há de se pesquisar em todos os bancos de dados de cada estado. Exemplo de fragmentação vertical Um banco de dados que trata de pedidos de compra e de pagamentos dessas compras. Um BDD poderia ter a base de dados dos pedidos de compra em um site e os dados dos pagamentos em outro site. Uma consulta global pelo usuário precisa ser transformada em consultas em cada site. 07 1.3 - Autonomia A autonomia determina a extensão à qual os nós individuais ou BDs em um BDD conectado podem operar independentemente. Um alto grau de autonomia é desejável para maior flexibilidade e manutenção personalizada de um nó individual. Um baixo grau de autonomia gera dependência, ou seja, um site precisa de outro para funcionar; isso é ruim em termos de projeto. Você deve planejar seu BDD para permitir o maior grau de independência possível. Exemplo: suponha que você possua 5 sites de BDD; suponha que o site A possua os dados básicos de pessoase que os demais sites, B, C, D e E, só possuam os IDs das pessoas. Imagine agora uma consulta SQL de uma determinada aplicação ocorrendo em qualquer um dos sites B a E que cujo retorno da instrução SQL requisite dados básicos das pessoas. Para que essa instrução processe, qualquer um dos sites B a E precisará consultar o site A para obter a resposta. Se o site A cair, nenhum dos sites B a E será capaz de prover os resultados desejados. Ou seja, os sites B a E tem alta dependência do site A, o que é indesejado. O correto seria que cada site B a E contivesse uma cópia dos dados básicos das pessoas, assim eles seriam capazes de processar a consulta SQL de modo independente. A autonomia pode ser aplicada ao projeto, comunicação e execução. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 26 08 1.4 - Confiabilidade e disponibilidade Confiabilidade e disponibilidade são duas das vantagens em potencial, mais comuns, citadas para bancos de dados distribuídos. A confiabilidade é definida em termos gerais como a probabilidade de um sistema estar funcionando (não parado) em certo ponto no tempo, enquanto a disponibilidade é a probabilidade de que o sistema esteja continuamente disponível durante um intervalo de tempo. Exemplos: um sistema que está fora do ar é um sistema que não é confiável. Um sistema que está no ar, mas operando de forma absurdamente lenta pode ser confiável, mas não está disponível. Podemos relacionar diretamente confiabilidade e disponibilidade do banco de dados aos defeitos, erros e falhas associadas a ele. Para construir um sistema que seja confiável, podemos adotar várias técnicas. Uma técnica comum enfatiza a tolerância a correções; ela reconhece que as falhas ocorrerão, e projeta mecanismos que podem detectar e remover falhas antes que elas possam resultar em uma falha do sistema. Outra técnica mais rigorosa tenta garantir que o sistema final não terá falha alguma. Isso é feito por meio de um processo de projeto especializado, seguido por controle de qualidade e teste abrangentes. Um SGBDD confiável tolera falhas dos componentes básicos e processa solicitações do usuário desde que a coerência do banco de dados não seja violada. Um gerenciador de recuperação do SGBDD precisa lidar com falhas que surgem de transações, hardware e redes de comunicação. As falhas de hardware podem ser aquelas que resultam em perda do conteúdo da memória principal ou perda de conteúdo do armazenamento secundário. As falhas de comunicação ocorrem devido a erros associados a mensagens e falhas na linha. Os erros de mensagens podem incluir sua perda, adulteração ou chegada fora de ordem no destino. A autonomia de projeto refere-se à independência do uso do modelo de dados e técnicas de gerenciamento de transação entre nós. A autonomia de comunicação determina a extensão à qual cada nó pode decidir sobre o compartilhamento de informações com outros nós. A autonomia de execução refere-se à independência dos usuários para atuarem conforme desejarem. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 27 Falha Uma falha pode ser descrita como um desvio de um comportamento do sistema daquele especificado a fim de garantir a execução correta das operações. erros Erros constituem o subconjunto de estados do sistema que causam a falha. Falha é a causa de um erro. 09 1.5 - Vantagens dos bancos de dados distribuídos As organizações lançam mão do gerenciamento de banco de dados distribuído por diversos motivos. Algumas vantagens importantes são listadas a seguir. Maior facilidade e flexibilidade de desenvolvimento da aplicação. O desenvolvimento e a manutenção de aplicações em sites geograficamente distribuídos de uma organização são facilitados devido à transparência da distribuição e controle de dados. Maior confiabilidade e disponibilidade. Isso é obtido pelo isolamento de falhas ao seu site de origem, sem afetar os outros bancos de dados conectados à rede. Quando os dados e o software de SGBDD são distribuídos por vários sites, um destes pode apresentar falha enquanto outros continuam a operar. Apenas os dados e software que existem no Site defeituoso não poderão ser acessados. Isso melhora tanto a confiabilidade quanto a disponibilidade. Uma melhoria ainda maior é obtida pela devida replicação dos dados e software em mais de um site. Em um sistema centralizado, uma falha em um único site torna o sistema inteiro indisponível a todos os usuários. Em um banco de dados distribuído, alguns dos dados podem ficar inalcançáveis, mas os usuários ainda podem ser capazes de acessar outras partes do banco de dados. Se os dados no site que apresentou falha tiverem sido duplicados em outro site antes da falha, então o usuário não será afetado de forma alguma. Maior desempenho. Um SGBD distribuído fragmenta o banco de dados ao manter os dados mais próximos de onde eles são mais necessários. A localização de dados reduz a disputa pela CPU e serviços de E/S e, ao mesmo tempo, reduz os atrasos no acesso envolvido nas redes remotas. Quando um banco de dados grande é distribuído por vários sites, existem bancos de dados menores em cada site. Como resultado, 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 28 consultas e transações locais que acessam dados em um único site possuem melhor desempenho por causa dos bancos de dados locais menores. Além disso, cada site tem um número menor de transações executando do que se todas as transações fossem submetidas a um único banco de dados centralizado. Ainda, o paralelismo entre consultas e dentro da consulta pode ser alcançado ao executar várias consultas em diferentes sites, ou ao desmembrar uma consulta em uma série de subconsultas executadas em paralelo. Isso contribui para melhorar o desempenho. Expansão mais fácil. Em um ambiente distribuído, é muito mais fácil a expansão do sistema em matéria de inclusão de mais dados, aumento dos tamanhos do banco de dados ou inclusão de mais processadores. 10 1.6 - Funções adicionais dos bancos de dados distribuídos A distribuição leva a uma maior complexidade no projeto e implementação do sistema. Para conseguir as vantagens em potencial, já listadas, o software de SGBDD precisa ser capaz de oferecer as seguintes funções, além daquelas de um SGBD centralizado: Acompanhar a distribuição de dados. Processamento de consulta distribuído. Gerenciamento de transação distribuído. Gerenciamento de dados replicados. Recuperação de banco de dados distribuído. Segurança. Gerenciamento de diretório (catálogo) distribuído. Essas próprias funções aumentam a complexidade de um SGBDD em relação a um SGBD centralizado. Antes que possamos observar todas as vantagens em potencial da distribuição, temos de encontrar soluções satisfatórias para essas questões e problemas de projeto. É difícil conseguir a inclusão de toda essa funcionalidade adicional, e encontrar soluções ideais é um passo além. Acompanhar a distribuição de dados. A capacidade de acompanhar a distribuição de dados, fragmentação e replicação ao expandir o catálogo do SGBDD. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 29 Processamento de consulta distribuído. A capacidade de acessar sites remotos e transmitir consultas e dados entre os vários sites por meio de uma rede de comunicação. Gerenciamento de transação distribuído. A capacidade de criar estratégias de execução para consultas e transações que acessem dados de mais de um site e de sincronizar o acesso aos dados distribuídos, mantendo a integridade do banco de dados geral. Gerenciamento de dados replicados.A capacidade de decidir qual cópia de um item de dados replicado acessar e de manter a consistência das cópias de um item de dados replicado. Recuperação de banco de dados distribuído. A capacidade de recuperar-se de falhas no site individual e de novos tipos de falhas, como a dos links de comunicação. Segurança. As transações distribuídas precisam ser executadas com o gerenciamento apropriado da segurança dos dados e dos privilégios de autorização/acesso dos usuários. Gerenciamento de diretório (catálogo) distribuído. Um diretório contém informações (metadados) sobre os dados no banco de dados. O diretório pode ser global, para o BDD inteiro, ou local para cada site. O posicionamento e a distribuição do diretório são questões de projeto e diretriz. 11 2 - TIPOS DE SISTEMAS DE BANCOS DE DADOS DISTRIBUÍDOS 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 30 O termo sistema de gerenciamento de banco de dados distribuído (SGBDD) pode descrever diversos sistemas que diferem uns dos outros em muitos aspectos. O item principal que todos os sistemas têm em comum é o fato de os dados e software serem distribuídos por vários sites conectados por alguma forma de rede de comunicação. O primeiro fator que consideramos é o grau de homogeneidade do software de SGBDD. Se todos os servidores (ou SGBDs locais individuais) usarem software idêntico e todos os usuários (clientes) utilizarem software idêntico, o SGBDD é chamado de homogêneo; caso contrário, ele é chamado de heterogêneo. Outro fator relacionado ao grau de homogeneidade é o grau de autonomia local. Se não houver provisão para o site local funcionar como um SGBD independente, então o sistema não tem autonomia local. Contudo, se o acesso direto por transações locais a um servidor for permitido, o sistema tem algum grau de autonomia local. 12 3 - ARQUITETURAS DE BANCO DE DADOS DISTRIBUÍDOS Embora as arquiteturas de banco de dados paralela e distribuída estejam bastante presentes na indústria hoje, existem diversas manifestações das arquiteturas distribuídas que estão continuamente evoluindo entre as grandes empresas. A arquitetura paralela é mais comum na computação de alto desempenho, em que há uma necessidade de arquiteturas multiprocessadoras para enfrentar o volume de dados passando por aplicações de processamento de transação e warehousing (armazém de dados). 3.1 - Arquiteturas paralelas versus distribuídas Existem dois tipos principais de arquiteturas de sistema multiprocessador que são comumente utilizados: Arquitetura de memória compartilhada (altamente acoplada). •Múltiplos processadores compartilham armazenamento secundário (disco) e também memória principal. Essa arquitetura é feita por um único computador com vários processadores. Arquitetura de disco compartilhado (livremente acoplada). •Múltiplos processadores compartilham armazenamento secundário (disco), mas cada um tem a própria memória principal. Essa arquitetura é feita por vários computadores interligados por um barramento comum. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 31 Essas arquiteturas permitem que os processadores se comuniquem sem o overhead de trocar mensagens por uma rede. Os sistemas de gerenciamento de banco de dados desenvolvidos que utilizam esses tipos de arquiteturas são chamados de sistemas de gerenciamento de banco de dados paralelos, em vez de SGBDDs, pois utilizam a tecnologia de processadores paralelos. 13 Outro tipo de arquitetura de multiprocessador é chamado de arquitetura nada compartilhado. Nessa arquitetura, cada processador tem a própria memória principal e secundária (disco), não existe memória comum e os processadores se comunicam por uma rede de interconexão de alta velocidade (barramento ou switch). Ou seja, são vários computadores isolados um do outro. Embora a arquitetura nada compartilhado seja semelhante a um ambiente de computação de banco de dados distribuído, existem diferenças importantes no modo de operação. Nos sistemas de multiprocessador nada compartilhado, há simetria e homogeneidade de nós (geralmente utilizam-se servidores idênticos montados em rack); isso não acontece no ambiente de banco de dados distribuído, no qual a heterogeneidade do hardware e do sistema operacional em cada nó é muito comum. A arquitetura nada compartilhado também é considerada um ambiente para bancos de dados paralelos. Arquitetura nada compartilhado 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 32 14 Para que exista uma arquitetura distribuída, dois quesitos são necessários: sites separados e bancos de dados separados. Se apenas os sites forem separados, mas os bancos de dados forem centralizados (como na figura abaixo), essa arquitetura é considerada de banco de dados centralizado. Arquitetura em rede com um banco de dados centralizado em um dos sites. 15 Somente com a separação de bancos de dados e de sites é que consideramos uma arquitetura como sendo distribuída. A figura a seguir ilustra esse modelo. Arquitetura de banco de dados totalmente distribuída. 16 3.2 - Arquitetura geral de uma configuração de replicação Uma arquitetura de bancos de dados distribuídos pode ser implementada por dois ou mais SGBDD atuando em sincronia. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 33 A sincronia de um site SGBDD é gerenciada por meio de um servidor líder da arquitetura, denominado de replicador mestre (ou Master). Os demais sites SGBDDs do conjunto são denominados de replicadores escravos. O replicador mestre é o responsável por controlar todas as operações de replicação. É ele quem informa aos demais sites SGBDDs do conjunto (replicadores escravos) se uma determinada tarefa de sincronia deve acontecer e se essa tarefa ocorreu com sucesso (ou se deve ser refeita ou cancelada). O replicador mestre também é responsável por determinar quais bancos de dados do servidor deve ser replicado. Nem todos os bancos de dados do servidor necessitam ser replicados (muitas vezes replicamos apenas um banco de dados específico). Normalmente, ao configurar um SGBDD como replicador mestre. Há basicamente duas formas de se implementar a replicação: um publicador – vários leitores, e vários publicadores – vários leitores. Veremos a seguir cada uma dessas formas. 17 A primeira e mais comum delas é denominada um publicador – vários leitores. Nesse modelo, apenas o replicador mestre gera novas informações, os demais sites SGBDDs (replicadores escravos) recebem essas informações e atualizam seus próprios bancos de dados. Nesse modelo, os replicadores escravos podem tanto possuir uma cópia completa (espelho) do replicador mestre como possuir apenas parte dos dados deste. Exemplo: Suponha uma grande empresa que possua uma sede em Brasília e filiais em 4 capitais (Rio de Janeiro, São Paulo, Belo Horizonte e Porto Alegre). Essa empresa poderia entender que o melhor projeto de replicação para ela seria o modelo um publicador – vários leitores, onde a sede, em Brasília, possuiria todos os dados centralizados da empresa, e cada filial teria apenas os dados relacionados à aquela filial. Por exemplo, os dados dos funcionários que atuam na filial de São Paulo estariam presentes no SGBDD de Brasília (replicador mestre) e no SGBDD de São Paulo. Já os dados dos funcionários que atuam no Rio de Janeiro, também estariam no SGBDD de Brasília e no SGBDD do Rio de Janeiro. Cada filial só possui os dados que lhe interessa e a sede centraliza todos os dados. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de EducaçãoContinuada 34 Outra forma de implementar a replicação é a vários publicadores – vários leitores. Nesse modelo, tanto o replicador mestre quanto os replicadores escravos enviam e recebem dados. O replicador mestre pode centralizar todos os dados dos replicadores escravos ou possuir apenas seus dados de interesse. O mesmo vale para os replicadores escravos, eles podem ser uma cópia espelho do servidor mestre (onde todos os sites SGBDDs seriam fielmente replicados) ou possuir apenas os dados do seu interesse. Por exemplo, pensando na mesma lógica do exemplo anterior, uma filial de São Paulo poderia enviar as vendas realizadas naquela região para o SGBDD da matriz (em Brasília), dessa forma, cada filial teria os dados das vendas feitas na respectiva região e a matriz teria a consolidação de todas as vendas realizadas por todas as filiais. 18 3.2.1 - Conflitos de chave primária e Identificador de campo único O identificador de campo único (Unique Identifier – UID) é um tipo de dado gerado aleatoriamente pelo SGBD onde não é possível gerar dois valores idênticos de nenhuma forma. Esse tipo de dados é composto por letras e números, como você pode ver neste exemplo: E75B92A3- 3299-4407-A913-C5CA196B3CAB. Os identificadores de campo único são necessários para montar sites SGBDDs onde há vários sites publicadores para se evitar conflitos de chave primária. Vamos entender o porquê disso vendo um exemplo. Suponha que você tenha uma tabela chamada VENDA, com os campos ID_Venda (Inteiro), ValorVenda (Dinheiro), DataVenda (Data) e ID_Cliente (Inteiro). Essa tabela VENDA tem, associada a ela, uma outra tabela denominada ITENS_DE_VENDA que corresponde aos produtos vendidos e que para nosso exemplo não necessita de detalhamento. Vamos imaginar que há um SGBDD montado com um replicador mestre e cinco replicadores escravos semelhantes ao exemplo que passamos na seção anterior. Imagine que seja feita uma venda em São Paulo. A tabela de VENDA do SGBDD de São Paulo receberá um registro de ID_Venda = 1, ValorVenda = R$ 100, DataVenda = 10/12/2015 e ID_Cliente = 8. Esse registro será enviado para o replicador mestre e lá será armazenado da mesma forma. Imagine agora que a filial do Rio de Janeiro faça uma venda também. A tabela de VENDA do SGBDD do Rio de Janiero receberá um registro de ID_Venda = 1, ValorVenda = R$ 80, DataVenda = 10/12/2015 e ID_Cliente = 3. Esse registro será enviado para o replicador mestre e lá chegando entrará em conflito com a venda feita em São Paulo, já que ambos possuem o mesmo ID_Venda. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 35 Para resolver esse conflito, modelos de dados SGBDD podem criar chaves primárias compostas (por exemplo, usando o ID_Venda + ID_Regiao, para identificar de qual região veio a venda), ou usando um identificador único para o registro, ao invés do tipo INTEIRO, utiliza-se o tipo UID. Ao usar o tipo UID garante-se que NUNCA haverá conflito de chave primária, pois nunca haverá dois registros com mesmo identificador. O mesmo conceito poderia ser implementado também para identificar clientes, evitando conflito de ID de clientes. Saiba+ Saiba+ Expandindo essa ideia, você perceberá que praticamente todas as tabelas que podem possuir conteúdo diferenciado em uma arquitetura de SGBDD poderiam se beneficiar do tipo UID para identificar esses registros. Tabelas que têm conteúdo idêntico, por exemplo, tabelas de Unidades da Federação, não precisam desse recurso, pois não haverá conflito. Exemplo: a UF RJ receberá o ID_UF = 3 em todos os sites. 19 Para inserir um identificador único em um registro, você precisará executar uma função do SGBD (caso o campo tenha preenchimento manual), ou deixar o SGBDD gerar automaticamente (caso o campo tenha preenchimento automático). Não é possível gerar o UID manualmente. A instrução SQL abaixo (no formato MS SQL Server) insere dados numa suposta tabela de VENDA com campo de ID_Venda do tipo UID: INSERT INTO VENDAS (ID_Venda, ValorVenda, DataVenda, ID_Cliente) VALUES (newid(), 100, ‘2015-12-10’, 8) Note que a função “newid()” irá gerar um número de UID e inseri-lo na tabela. Uma vez criado, você pode usar o valor de UID para referências. Como, por exemplo, em cláusulas WHERE ou mesmo numa instrução INSERT. Vamos supor agora que o campo ID_Cliente também é do tipo UID e o valor do ID_Cliente que queremos inserir seja “E75B92A3-3299-4407-A913- C5CA196B3CAB”. A instrução SQL agora seria: INSERT INTO VENDAS (ID_Venda, ValorVenda, DataVenda, ID_Cliente) VALUES (newid(), 100, ‘2015-12-10’, ‘E75B92A3-3299-4407-A913-C5CA196B3CAB’) Note que usamos aspas para delimitar o campo de UID, ele é formatado do mesmo modo que um campo de caracteres. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 36 Dessa forma, ao montar uma arquitetura de bancos de dados distribuídos onde mais de um SGBDD enviarão dados, tenha cuidado para evitar possíveis conflitos de chave primária. Utilize chaves compostas ou identificadores únicos para evitar esses conflitos. 20 3.2.2 - Tarefa de sincronização Para se ter efeito, uma arquitetura de bancos de dados distribuídos precisa estar em constante sincronia. A maioria dos SGBDDs implementam funcionalidades automáticas de sincronia. Essas atividades são classificadas em: Configuração do Master; Ao se iniciar um novo projeto, a primeira atividade é definir um SGBDD como Master, definir o(s) banco(s) de dados a ser(em) replicado(s) e definir o tipo de replicação. Nesse momento, o SGBDD fará uma análise do BDD e identificará prováveis problemas de conflito de chave primária. Você precisará resolver todos os problemas de conflitos de chave primária antes de prosseguir para o próximo passo (veja seção anterior para detalhes de conflito de chave primária). Configuração dos Escravos; Ao adicionar um novo site em um sistema BDD como escravo, é preciso definir o banco de dados da replicação (provavelmente um novo BD vazio) e o modelo de replicação (se só recebe dados ou se recebe e envia). Nesse momento, será necessário informar quem é o site Master e solicitar a sincronia inicial. Essa sincronia inicial é representada por uma grande carga de dados inicial e, portanto, pode ser bastante demorada. Feito isso, você pode decidir por definir manualmente a estratégia de sincronização ou deixar o site Master decidir por si só. O SGBDD possui mecanismos de otimização que definem a melhor estratégia de sincronia, levando em consideração tempos de resposta, velocidade de rede e outros fatores. O gerenciador de transação global é responsável por coordenar a execução por vários sites em conjunto com o gerenciador de transação local nesses sites. 21 4 - PROTOCOLOS DE SINCRONIZAÇÃO O SGBDD, por meio do mecanismo gerenciador de transação global, gerencia não só a sincronização dos bancos, mas também as transações interbancos. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 37 As transações interbancos são caracterizadas por operações SQL que precisam acessar e/ou modificar dados armazenados em sites BDD diferentes. Essas transações devem garantir todas as propriedades já discutidas anteriormente para uma transação convencional (por exemplo, os mecanismos de BEGIN TRANSACTION, COMMIT TRANSACTION, ROLL BACK, REDE_ITEM, WRITE_ITEM, ABORT etc.). Em um ambiente de BDD, o site que inicia a transação geralmente é o site responsável por coordenar a execução das operações da transação em todos os outros sites. Os SGBDDs normalmente implementam dois protocolos de sincronização: o protocolo de confirmação em duas fases (two phase commit - 2PC) e o protocolo de confirmação em três fases (three phase commit - 3PC). Veremos essesprotocolos a seguir. 22 4.1 - Protocolo de confirmação em duas fases Este protocolo trabalha com um gerenciador de recuperação global (ou coordenador) que mantém as informações necessárias para a recuperação. Neste modelo, o gerenciador assume o papel de controle da transação, que é feito por meio do bloqueio de acesso ao item de dado alterado. Ou seja, enquanto a transação não é processada em todos os sites participantes da transação, os itens de dados acessados e alterados em cada um dos sites participantes ficam bloqueados de acesso. Após a confirmação da transação pelo site coordenador, todos os demais sites recebem o comando de desbloqueio do item. Pelo fato de os itens de dados ficarem bloqueados, essa característica é considerada como uma grande desvantagem para o protocolo 2PC. Por exemplo, uma falha no coordenador da transação faz com que todos os participantes fiquem bloqueados até que o coordenador se recupere. 23 4.2 - Protocolo de confirmação em três fases O protocolo 3PC divide a confirmação da transação em duas partes: uma denominada preparar para confirmar e outra denominada confirmar. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 38 A fase preparar para confirmar é utilizada para comunicar o resultado da fase de voto a todos os participantes. Se todos os participantes votarem sim, então o coordenador os instrui a entrar no estado preparar para confirmar. A subfase confirmar é idêntica à sua correspondente em duas fases. Agora, se o coordenador falhar durante essa subfase, outro participante pode ver a transação inteira até o término. Ele pode simplesmente perguntar a um participante que falhou se ele recebeu uma mensagem de preparar para confirmar. Se não tiver recebido, então ele assume seguramente que deve abortar. Assim, o estado do protocolo pode ser recuperado independentemente de qual participante falhou. Além disso, ao limitar o tempo exigido para uma transação confirmar ou abortar a um tempo-limite máximo, o protocolo garante que uma transação tentando confirmar por 3PC libera os bloqueios sobre o tempo-limite. A ideia principal é limitar o tempo de espera para os participantes que confirmaram e estão esperando por uma confirmação ou aborto global do coordenado. Quando um participante recebe uma mensagem de pré-confirmação, ele sabe que o restante dos participantes votou para confirmar. Se uma mensagem de pré-confirmação não tiver sido recebida, então o participante abortará e liberará todos os bloqueios. 24 4.3 - Conclusão O tema bancos de dados distribuídos é bastante extenso e por si só seria base para toda uma matéria de curso. Aqui exploramos conceitos gerais sobre a replicação de dados. Para aprofundar seu conhecimento, avalie o manual dos SGBDDs em como eles implementam a arquitetura de BDD. A grande maioria dos SGBDs modernos como MySQL, Postgree, Oracle, MS SQL Server e outros implementam BDD. 25 RESUMO Neste módulo, aprendemos que: a) Um sistema de computação distribuído consiste em uma série de elementos de processamento, não necessariamente homogêneos, que são interconectados por uma rede de computadores e que cooperam na realização de certas tarefas atribuídas. b) A transparência refere-se à ideia geral de ocultar detalhes da implementação dos usuários finais. c) A autonomia refere-se ao grau de um site de um BDD ser capaz de funcionar autonomamente, sem necessidade de consultar ou enviar dados de/para outros sites. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 39 d) O grau de confiabilidade e disponibilidade refere-se à capacidade de um sistema funcionar e estar disponível para seus usuários nos momentos estabelecidos (nem todo sistema deve operar 24h por dia/365 dias por ano). e) A arquitetura de BDD promove várias vantagens, entre as quais: aumento da flexibilidade e facilidade do projeto de software, aumento da confiabilidade e disponibilidade da solução, aumento do desempenho e facilita a expansão de novos sites. f) Para que um SGBDD promova o sistema de BDD, é necessário que o SGBDD implemente as seguintes funcionalidades: acompanhamento de distribuição de dados, processamento de consulta distribuído, gerenciamento de transação distribuído, gerenciamento de dados replicados, recuperação de banco de dados distribuído, segurança, gerenciamento de diretório distribuído. g) Um projeto BDD é considerado homogêneo quando o SGBDD utilizado por todos os sites é o mesmo, assim como a aplicação dos usuários que acessam os sites também é a mesma. h) Os tipos de arquitetura de sistema multiprocessador são: arquitetura de memória compartilhada, arquitetura de disco compartilhado e arquitetura nada compartilhado. i) A sincronia de um site SGBDD é gerenciada por meio de um servidor líder da arquitetura, denominado de replicador mestre. Os demais sites SGBDDs do conjunto são denominados de replicadores escravos. j) Um identificador único é um tipo de dado especial utilizado principalmente em sistemas distribuídos. Ele possui a característica de ser impossível criar dois valores iguais, o que previne qualquer possibilidade de conflitos de chave primária em bancos distribuídos. k) Uma transação interbancos distribuídos é controlada pelo gerenciador de transações do site que iniciou a transação. Há dois tipos de protocolos de controle de transação, o de confirmação em duas fases, que bloqueia itens de dados enquanto a transação não encerra, e o de confirmação em três fases, onde uma etapa intermediária controla a execução da transação e a etapa final confirma ou desfaz a transação. UNIDADE 4 – TÓPICOS AVANÇADOS SOBRE SGBD MÓDULO 3 –DATA WAREHOUSE (PARTE 1) 01 1 - VISÃO GERAL DA TECNOLOGIA DE MINERAÇÃO DE DADOS Estudamos anteriormente como um banco de dados distribuído é implantado e como as transações são coordenadas nesse tipo de ambiente. Agora é o momento de falarmos sobre data warehouse. 117 – Banco de Dados II | Unidade 04 © 2015 - AIEC - Associação Internacional de Educação Continuada 40 Nas últimas três décadas, muitas organizações têm gerado uma grande quantidade de dados legíveis à máquina na forma de arquivos e bancos de dados. Para processar esses dados, temos a tecnologia de banco de dados disponível, que dá suporte a linguagens de consulta como a SQL. O problema com a SQL é que ela é uma linguagem estruturada, que assume que o usuário está ciente do esquema do banco de dados. A SQL dá suporte a operações da álgebra relacional que permitem que um usuário selecione linhas e colunas de dados das tabelas ou informações relacionadas à junção de tabelas com base em campos comuns. A mineração de dados (do inglês data mining) é o processo de explorar grandes quantidades de dados à procura de padrões consistentes, como regras de associação ou sequências temporais, para detectar relacionamentos sistemáticos entre variáveis, detectando assim novos subconjuntos de dados. No campo da administração, a mineração de dados é o uso da tecnologia da informação para descobrir regras, identificar fatores e tendências-chave, descobrir padrões e relacionamentos ocultos em grandes bancos de dados para auxiliar a tomada de decisões sobre estratégia e vantagens competitivas. 02 Quando falamos de grandes massas de dados, surgem as seguintes questões: As necessidades de consulta sobre grandes volumes de dados nem sempre é padrão, às vezes são necessários relatórios totalizadores, outras vezes são necessários relatórios detalhados; algumas vezes se analisam os dados geograficamente, outras vezes por valores, outras vezes por datas. Dessa forma é muito difícil que as aplicações de usuário incorporem todos os relatórios necessários e desejados pelos clientes. Muitas vezes é necessário prover mecanismos para
Compartilhar