integridade de dados e administração de segurança em sgbds
Post on 19-May-2015
5.613 Views
Preview:
TRANSCRIPT
Prof. Daniel dos Santos Kaster © 2010 1
Integridade de dados e Integridade de dados e administração de segurança administração de segurança
em SGBDsem SGBDs
Prof. Daniel dos Santos KasterProf. Daniel dos Santos KasterDept. Computação – Universidade Estadual de Londrina (UEL)Dept. Computação – Universidade Estadual de Londrina (UEL)
dskaster@uel.brdskaster@uel.br
Semana da Computação
UFSCar
31/05 a 02/jun de 2010
Prof. Daniel dos Santos Kaster © 2010 2
ConteúdoConteúdo
IntroduçãoIntrodução
integridade e consistência de dadosintegridade e consistência de dados
Segurança de dadosSegurança de dados
Disponibilidade de dadosDisponibilidade de dados
Prof. Daniel dos Santos Kaster © 2010 3
IntroduçãoIntrodução
Na era da informação, os dados são a porção Na era da informação, os dados são a porção mais valiosa das organizações.mais valiosa das organizações.
Portanto, é preciso que estejam seguros e Portanto, é preciso que estejam seguros e disponíveis.disponíveis.
Além disso, o acesso aos dados precisa ser Além disso, o acesso aos dados precisa ser eficiente, porém controlado, garantindo a eficiente, porém controlado, garantindo a integridade.integridade.
Prof. Daniel dos Santos Kaster © 2010 4
IntroduçãoIntrodução
““O cofre não pode ser mais caro do que o tem O cofre não pode ser mais caro do que o tem dentro.”dentro.”
Prof. Daniel dos Santos Kaster © 2010 5
Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!
Prof. Daniel dos Santos Kaster © 2010 6
Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!
Desenvolver um aplicativoDesenvolver um aplicativo
Prof. Daniel dos Santos Kaster © 2010 7
Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!
Desenvolver um aplicativoDesenvolver um aplicativo
Desenvolver um aplicativo que funcioneDesenvolver um aplicativo que funcione
Prof. Daniel dos Santos Kaster © 2010 8
Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!
Desenvolver um aplicativoDesenvolver um aplicativo
Desenvolver um aplicativo que funcioneDesenvolver um aplicativo que funcione
Desenvolver um aplicativo que funcione e seja Desenvolver um aplicativo que funcione e seja robusto com relação ao seu uso típicorobusto com relação ao seu uso típico
Prof. Daniel dos Santos Kaster © 2010 9
Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!
Desenvolver um aplicativoDesenvolver um aplicativo
Desenvolver um aplicativo que funcioneDesenvolver um aplicativo que funcione
Desenvolver um aplicativo que funcione e seja Desenvolver um aplicativo que funcione e seja robusto com relação ao seu uso típicorobusto com relação ao seu uso típico
Desenvolver um aplicativo que funcione e seja Desenvolver um aplicativo que funcione e seja robusto com relação ao seu uso típico e tentativas de robusto com relação ao seu uso típico e tentativas de uso maliciosouso malicioso
Prof. Daniel dos Santos Kaster © 2010 10
Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!
Desenvolver um aplicativoDesenvolver um aplicativo
Desenvolver um aplicativo que funcioneDesenvolver um aplicativo que funcione
Desenvolver um aplicativo que funcione e seja Desenvolver um aplicativo que funcione e seja robusto com relação ao seu uso típicorobusto com relação ao seu uso típico
Desenvolver um aplicativo que funcione e seja Desenvolver um aplicativo que funcione e seja robusto com relação ao seu uso típico e tentativas de robusto com relação ao seu uso típico e tentativas de uso maliciosouso malicioso
Desenvolver um aplicativo que funcione e seja Desenvolver um aplicativo que funcione e seja robusto com relação ao seu uso típico e tentativas de robusto com relação ao seu uso típico e tentativas de uso malicioso e tenha alta disponibilidadeuso malicioso e tenha alta disponibilidade
Prof. Daniel dos Santos Kaster © 2010 11
ConteúdoConteúdo
Introdução Introdução ✓✓
integridade e consistência de dadosintegridade e consistência de dados
Segurança de dadosSegurança de dados
Disponibilidade de dadosDisponibilidade de dados
Prof. Daniel dos Santos Kaster © 2010 12
Integridade e consistência de dadosIntegridade e consistência de dados
IntegridadeIntegridade
– Os dados armazenados devem respeitar as regras do Os dados armazenados devem respeitar as regras do modelo de dados projetado para a aplicaçãomodelo de dados projetado para a aplicação
Prof. Daniel dos Santos Kaster © 2010 13
Integridade e consistência de dadosIntegridade e consistência de dados
IntegridadeIntegridade
– Os dados armazenados devem respeitar as regras do Os dados armazenados devem respeitar as regras do modelo de dados projetado para a aplicaçãomodelo de dados projetado para a aplicação
ConsistênciaConsistência
– Os dados têm que estar consistentes com relação aos Os dados têm que estar consistentes com relação aos “objetos” reais aos quais correspondem no momento “objetos” reais aos quais correspondem no momento em questãoem questão
Prof. Daniel dos Santos Kaster © 2010 14
Integridade de identidadeIntegridade de identidade
Garantem a unicidade de elementos em um Garantem a unicidade de elementos em um conjunto de elementosconjunto de elementos
Prof. Daniel dos Santos Kaster © 2010 15
Integridade de identidadeIntegridade de identidade
Garantem a unicidade de elementos em um Garantem a unicidade de elementos em um conjunto de elementosconjunto de elementos
Boas práticasBoas práticas
– Partir das restrições de unicidade inerentes ao Partir das restrições de unicidade inerentes ao problemaproblema
Prof. Daniel dos Santos Kaster © 2010 16
Integridade de identidadeIntegridade de identidade
Garantem a unicidade de elementos em um Garantem a unicidade de elementos em um conjunto de elementosconjunto de elementos
Boas práticasBoas práticas
– Partir das restrições de unicidade inerentes ao Partir das restrições de unicidade inerentes ao problemaproblema
– Garantir todas a unicidade de todas as chaves Garantir todas a unicidade de todas as chaves candidatascandidatas
Prof. Daniel dos Santos Kaster © 2010 17
Integridade de identidadeIntegridade de identidade
Garantem a unicidade de elementos em um Garantem a unicidade de elementos em um conjunto de elementosconjunto de elementos
Boas práticasBoas práticas
– Partir das restrições de unicidade inerentes ao Partir das restrições de unicidade inerentes ao problemaproblema
– Garantir todas a unicidade de todas as chaves Garantir todas a unicidade de todas as chaves candidatascandidatas
– Usar chaves artificiais de forma adequada (geradores Usar chaves artificiais de forma adequada (geradores e sequências)e sequências)
Prof. Daniel dos Santos Kaster © 2010 18
Integridade de identidadeIntegridade de identidade
Garantem a unicidade de elementos em um Garantem a unicidade de elementos em um conjunto de elementosconjunto de elementos
Boas práticasBoas práticas
– Partir das restrições de unicidade inerentes ao Partir das restrições de unicidade inerentes ao problemaproblema
– Garantir todas a unicidade de todas as chaves Garantir todas a unicidade de todas as chaves candidatascandidatas
– Usar chaves artificiais de forma adequada (geradores Usar chaves artificiais de forma adequada (geradores e sequências)e sequências)
– Cuidado ao lidar com tipos de dados que admitem Cuidado ao lidar com tipos de dados que admitem variações (p. ex. maiúsculas e minúsculas)variações (p. ex. maiúsculas e minúsculas)
Prof. Daniel dos Santos Kaster © 2010 19
Integridade de associaçõesIntegridade de associações
Elementos do problema em geral são Elementos do problema em geral são representados de forma fragmentada no modelo representados de forma fragmentada no modelo de dados. As associações entre tais fragmentos de dados. As associações entre tais fragmentos tem que ser consistente.tem que ser consistente.
Prof. Daniel dos Santos Kaster © 2010 20
Integridade de associaçõesIntegridade de associações
Elementos do problema em geral são Elementos do problema em geral são representados de forma fragmentada no modelo representados de forma fragmentada no modelo de dados. As associações entre tais fragmentos de dados. As associações entre tais fragmentos tem que ser consistente.tem que ser consistente.
Boas práticasBoas práticas
– Cuidado com afirmações do tipo: “se os dados sempre Cuidado com afirmações do tipo: “se os dados sempre são inseridos corretamente, por que gastar tempo são inseridos corretamente, por que gastar tempo verificando as associações?”verificando as associações?”
Prof. Daniel dos Santos Kaster © 2010 21
Integridade de associaçõesIntegridade de associações
Elementos do problema em geral são Elementos do problema em geral são representados de forma fragmentada no modelo representados de forma fragmentada no modelo de dados. As associações entre tais fragmentos de dados. As associações entre tais fragmentos tem que ser consistente.tem que ser consistente.
Boas práticasBoas práticas
– Cuidado com afirmações do tipo: “se os dados sempre Cuidado com afirmações do tipo: “se os dados sempre são inseridos corretamente, por que gastar tempo são inseridos corretamente, por que gastar tempo verificando as associações?”verificando as associações?”
– Modelar adequadamente a propagação de Modelar adequadamente a propagação de atualizações nas associaçõesatualizações nas associações
Prof. Daniel dos Santos Kaster © 2010 22
Integridade de domínio de dadosIntegridade de domínio de dados
Todo dado tem um domínio especificado na Todo dado tem um domínio especificado na aplicação que deve ser respeitadoaplicação que deve ser respeitado
A maior parte do trabalho de análise de dados, A maior parte do trabalho de análise de dados, em geral, compreende tratar inconsistênciasem geral, compreende tratar inconsistências
Prof. Daniel dos Santos Kaster © 2010 23
Integridade de domínio de dadosIntegridade de domínio de dados
Todo dado tem um domínio especificado na Todo dado tem um domínio especificado na aplicação que deve ser respeitadoaplicação que deve ser respeitado
A maior parte do trabalho de análise de dados, A maior parte do trabalho de análise de dados, em geral, compreende tratar inconsistênciasem geral, compreende tratar inconsistências
Boas práticasBoas práticas
– Se o domínio é restrito, utilizar referências ou Se o domínio é restrito, utilizar referências ou verificações CHECKverificações CHECK
Prof. Daniel dos Santos Kaster © 2010 24
Integridade de domínio de dadosIntegridade de domínio de dados
Todo dado tem um domínio especificado na Todo dado tem um domínio especificado na aplicação que deve ser respeitadoaplicação que deve ser respeitado
A maior parte do trabalho de análise de dados, A maior parte do trabalho de análise de dados, em geral, compreende tratar inconsistênciasem geral, compreende tratar inconsistências
Boas práticasBoas práticas
– Se o domínio é restrito, utilizar referências ou Se o domínio é restrito, utilizar referências ou verificações CHECKverificações CHECK
– Definir tipos específicos de dados de acordo com a Definir tipos específicos de dados de acordo com a necessidadenecessidade
Prof. Daniel dos Santos Kaster © 2010 25
Integridade de domínio de dadosIntegridade de domínio de dados
Todo dado tem um domínio especificado na Todo dado tem um domínio especificado na aplicação que deve ser respeitadoaplicação que deve ser respeitado
A maior parte do trabalho de análise de dados, A maior parte do trabalho de análise de dados, em geral, compreende tratar inconsistênciasem geral, compreende tratar inconsistências
Boas práticasBoas práticas
– Se o domínio é restrito, utilizar referências ou Se o domínio é restrito, utilizar referências ou verificações CHECKverificações CHECK
– Definir tipos específicos de dados de acordo com a Definir tipos específicos de dados de acordo com a necessidadenecessidade
– Usar as restrições de atributos adequadamenteUsar as restrições de atributos adequadamente
Prof. Daniel dos Santos Kaster © 2010 26
Integridade de restrições complexasIntegridade de restrições complexas
Algumas aplicações possuem restrições Algumas aplicações possuem restrições complexas que devem ser respeitadascomplexas que devem ser respeitadas
Dúvida comum: “tratar restrições complexas no Dúvida comum: “tratar restrições complexas no banco de dados ou na aplicação?”banco de dados ou na aplicação?”
Prof. Daniel dos Santos Kaster © 2010 27
Integridade de restrições complexasIntegridade de restrições complexas
Algumas aplicações possuem restrições Algumas aplicações possuem restrições complexas que devem ser respeitadascomplexas que devem ser respeitadas
Dúvida comum: “tratar restrições complexas no Dúvida comum: “tratar restrições complexas no banco de dados ou na aplicação?”banco de dados ou na aplicação?”
Boas práticasBoas práticas
– Uso de Uso de assertionsassertions ou triggers ou triggers
Prof. Daniel dos Santos Kaster © 2010 28
Uso adequado de transaçõesUso adequado de transações
Transação: é a unidade lógica de processamento Transação: é a unidade lógica de processamento em bancos de dados que engloba uma ou mais em bancos de dados que engloba uma ou mais operações de acesso ao banco de dados operações de acesso ao banco de dados (consulta ou atualização)(consulta ou atualização)
Prof. Daniel dos Santos Kaster © 2010 29
Uso adequado de transaçõesUso adequado de transações
Transação: é a unidade lógica de processamento Transação: é a unidade lógica de processamento em bancos de dados que engloba uma ou mais em bancos de dados que engloba uma ou mais operações de acesso ao banco de dados operações de acesso ao banco de dados (consulta ou atualização)(consulta ou atualização)
Propriedades ACID:Propriedades ACID:
Atomicidade: ou tudo é executado, ou nada;Atomicidade: ou tudo é executado, ou nada;
Consistência: leva o banco de dados de um estado Consistência: leva o banco de dados de um estado consistente a outro estado consistente;consistente a outro estado consistente;
Isolamento: a execução de uma transação não é afetada pela Isolamento: a execução de uma transação não é afetada pela execução de outras transações;execução de outras transações;
Durabilidade: as alterações feitas por uma transação comitada Durabilidade: as alterações feitas por uma transação comitada são armazenadas no banco de dados.são armazenadas no banco de dados.
Prof. Daniel dos Santos Kaster © 2010 30
Boas práticas no uso de transaçõesBoas práticas no uso de transações
Prof. Daniel dos Santos Kaster © 2010 31
Boas práticas no uso de transaçõesBoas práticas no uso de transações
Usá-las!!!Usá-las!!!
Prof. Daniel dos Santos Kaster © 2010 32
Boas práticas no uso de transaçõesBoas práticas no uso de transações
Usá-las!!!Usá-las!!!
Atenção ao armazenar informações de objetos Atenção ao armazenar informações de objetos fragmentadas em vários objetos do banco de fragmentadas em vários objetos do banco de dadosdados
Prof. Daniel dos Santos Kaster © 2010 33
Boas práticas no uso de transaçõesBoas práticas no uso de transações
Usá-las!!!Usá-las!!!
Atenção ao armazenar informações de objetos Atenção ao armazenar informações de objetos fragmentadas em vários objetos do banco de fragmentadas em vários objetos do banco de dadosdados
Definir adequadamente o nível de isolamentoDefinir adequadamente o nível de isolamento
Prof. Daniel dos Santos Kaster © 2010 34
Níveis de isolamentoNíveis de isolamento
O padrão SQL define níveis de isolamento, O padrão SQL define níveis de isolamento, considerando três fenômenos que devem ser considerando três fenômenos que devem ser evitados em transações concorrentes:evitados em transações concorrentes:
dirty read: uma transação lê um dado de uma transação dirty read: uma transação lê um dado de uma transação concorrente não comitada;concorrente não comitada;
nonrepeatable read: uma transação faz uma nova leitura em nonrepeatable read: uma transação faz uma nova leitura em um dado e obtém um valor diferente, modificado por outra um dado e obtém um valor diferente, modificado por outra transação que comitou após a leitura inicial;transação que comitou após a leitura inicial;
phantom read: uma transação re-executa uma consulta phantom read: uma transação re-executa uma consulta retornando um conjunto de tuplas e obtém um conjunto retornando um conjunto de tuplas e obtém um conjunto diferente, afetado por uma transação comitada após a diferente, afetado por uma transação comitada após a consulta inicial.consulta inicial.
Prof. Daniel dos Santos Kaster © 2010 35
Níveis de isolamentoNíveis de isolamento
Os 4 níveis de isolamento definidos no padrão Os 4 níveis de isolamento definidos no padrão SQL e seus comportamentos são os seguintes:SQL e seus comportamentos são os seguintes:
Dirty Nonrepeatable PhantomDirty Nonrepeatable Phantom
readread readread read read
Read uncommittedRead uncommitted Sim Sim SimSim Sim Sim
Read committedRead committed Não Não SimSim Sim Sim
Repeatable readRepeatable read Não Não NãoNão Sim Sim
SerializableSerializable Não Não NãoNão Não Não
Prof. Daniel dos Santos Kaster © 2010 36
Boas práticas no uso de transaçõesBoas práticas no uso de transações
Usá-las!!!Usá-las!!!
Atenção ao armazenar informações de objetos Atenção ao armazenar informações de objetos fragmentadas em vários objetos do banco de fragmentadas em vários objetos do banco de dadosdados
Definir adequadamente o nível de isolamentoDefinir adequadamente o nível de isolamento
Usar savepoints em muitos casos facilitaUsar savepoints em muitos casos facilita
Prof. Daniel dos Santos Kaster © 2010 37
Boas práticas no uso de transaçõesBoas práticas no uso de transações
Usá-las!!!Usá-las!!!
Atenção ao armazenar informações de objetos Atenção ao armazenar informações de objetos fragmentadas em vários objetos do banco de fragmentadas em vários objetos do banco de dadosdados
Definir adequadamente o nível de isolamentoDefinir adequadamente o nível de isolamento
Usar savepoints em muitos casos facilitaUsar savepoints em muitos casos facilita
Usar bloqueios explícitos quando for o casoUsar bloqueios explícitos quando for o caso
LOCK TABLE; SELECT FOR UPDATE/SHARELOCK TABLE; SELECT FOR UPDATE/SHARE
Prof. Daniel dos Santos Kaster © 2010 38
““To denormalize, or not to To denormalize, or not to denormalize: that is the question”denormalize: that is the question”Um banco de dados normalizado minimiza Um banco de dados normalizado minimiza problemas de integridade e otimiza atualizaçõesproblemas de integridade e otimiza atualizações– As alterações são feitas em relações simples e As alterações são feitas em relações simples e
tipicamente pequenas.tipicamente pequenas.
Porém, afeta o desempenho de consultasPorém, afeta o desempenho de consultas– Para retornar um conjunto de dados associados é Para retornar um conjunto de dados associados é
preciso realizar mais junçõespreciso realizar mais junções
A pergunta é: quando desnormalizar?A pergunta é: quando desnormalizar?
Prof. Daniel dos Santos Kaster © 2010 39
Tipos comuns de desnormalizaçãoTipos comuns de desnormalização
Tabelas Tabelas prejoinedprejoined
Tabelas de relatóriosTabelas de relatórios
Tabelas particionadas ou replicadasTabelas particionadas ou replicadas
Replicação de atributos frequentemente Replicação de atributos frequentemente consultadosconsultados
Prof. Daniel dos Santos Kaster © 2010 40
Existem boas práticas para Existem boas práticas para desnormalização? :-)desnormalização? :-)
Um banco de dados só deve ser Um banco de dados só deve ser desnormalizado quando a necessidade de desnormalizado quando a necessidade de desempenho é determinante na aplicação.desempenho é determinante na aplicação.
Deve-se refletir sobre as seguintes questões:Deve-se refletir sobre as seguintes questões:– O sistema pode alcançar um desempenho aceitável O sistema pode alcançar um desempenho aceitável
sem ser desnormalizado?sem ser desnormalizado?– O desempenho do sistema depois da O desempenho do sistema depois da
desnormalização ainda será inaceitável?desnormalização ainda será inaceitável?– O sistema será menos confiável após a O sistema será menos confiável após a
desnormalização?desnormalização?
Prof. Daniel dos Santos Kaster © 2010 41
Se for realmente necessário Se for realmente necessário desnormalizar, documente!desnormalizar, documente!
Toda decisão de desnormalização deve ser Toda decisão de desnormalização deve ser documentada.documentada.
Não tente criar um modelo conceitual Não tente criar um modelo conceitual desnormalizado. O modelo conceitual deve ser desnormalizado. O modelo conceitual deve ser normalizado, com documentação sobre as normalizado, com documentação sobre as decisões de desnormalização no modelo físico.decisões de desnormalização no modelo físico.
Prof. Daniel dos Santos Kaster © 2010 42
Boa prática: usar visões Boa prática: usar visões materializadasmaterializadas
Uma visão é uma tabela computada a partir de Uma visão é uma tabela computada a partir de tabelas armazenadas de acordo com uma tabelas armazenadas de acordo com uma instrução de seleçãoinstrução de seleção
– Uma visão computada é gerada a cada acessoUma visão computada é gerada a cada acesso
– Uma visão materializada é gerada e armazenada no Uma visão materializada é gerada e armazenada no bancobanco
Exige atualização mediante atualizações nas tabelas baseExige atualização mediante atualizações nas tabelas baseRápido acesso aos resultados, pois já estão computadosRápido acesso aos resultados, pois já estão computados
Prof. Daniel dos Santos Kaster © 2010 43
Visões materializadas são suas Visões materializadas são suas amigas!amigas!
O seu SGBD suporta visões materializadas?O seu SGBD suporta visões materializadas?
Prof. Daniel dos Santos Kaster © 2010 44
Visões materializadas são suas Visões materializadas são suas amigas!amigas!
O seu SGBD suporta visões materializadas?O seu SGBD suporta visões materializadas?
– O otimizador de consultas pode usar a visão O otimizador de consultas pode usar a visão materializada para reescrever consultasmaterializada para reescrever consultas
Prof. Daniel dos Santos Kaster © 2010 45
Visões materializadas são suas Visões materializadas são suas amigas!amigas!
O seu SGBD suporta visões materializadas?O seu SGBD suporta visões materializadas?
– O otimizador de consultas pode usar a visão O otimizador de consultas pode usar a visão materializada para reescrever consultasmaterializada para reescrever consultas
– As aplicações podem estar em produçãoAs aplicações podem estar em produção
Prof. Daniel dos Santos Kaster © 2010 46
Visões materializadas são suas Visões materializadas são suas amigas!amigas!
O seu SGBD suporta visões materializadas?O seu SGBD suporta visões materializadas?
– O otimizador de consultas pode usar a visão O otimizador de consultas pode usar a visão materializada para reescrever consultasmaterializada para reescrever consultas
– As aplicações podem estar em produçãoAs aplicações podem estar em produção
O seu SGBD não suporta?O seu SGBD não suporta?
Prof. Daniel dos Santos Kaster © 2010 47
Visões materializadas são suas Visões materializadas são suas amigas!amigas!
O seu SGBD suporta visões materializadas?O seu SGBD suporta visões materializadas?
– O otimizador de consultas pode usar a visão O otimizador de consultas pode usar a visão materializada para reescrever consultasmaterializada para reescrever consultas
– As aplicações podem estar em produçãoAs aplicações podem estar em produção
O seu SGBD não suporta?O seu SGBD não suporta?
– Que tal ajudar a desenvolver? ;-)Que tal ajudar a desenvolver? ;-)
Prof. Daniel dos Santos Kaster © 2010 48
ConteúdoConteúdo
Introdução Introdução ✓✓
integridade e consistência de dados integridade e consistência de dados ✓✓
Segurança de dadosSegurança de dados
Disponibilidade de dadosDisponibilidade de dados
Prof. Daniel dos Santos Kaster © 2010 49
Gerência de usuáriosGerência de usuários
Tem que estar de acordo com a política de Tem que estar de acordo com a política de segurança da organização.segurança da organização.
É preciso definir padrões de acesso e de É preciso definir padrões de acesso e de recursos que garantam a integridade dos dados recursos que garantam a integridade dos dados e a segurança de dados confidenciais.e a segurança de dados confidenciais.
Prof. Daniel dos Santos Kaster © 2010 50
Mecanismos de controle de acessoMecanismos de controle de acesso
Há dois tipos básicos de mecanismos de Há dois tipos básicos de mecanismos de controle de acesso:controle de acesso:
– Discricionário: concessão de privilégios a usuários Discricionário: concessão de privilégios a usuários sobre objetos do banco de dadossobre objetos do banco de dados
– Mandatório: definição de níveis de segurança para Mandatório: definição de níveis de segurança para usuários e objetos para implementar a política de usuários e objetos para implementar a política de segurança da organizaçãosegurança da organização
Prof. Daniel dos Santos Kaster © 2010 51
Controle de acesso discricionárioControle de acesso discricionário
Concessão de privilégios em nível de:Concessão de privilégios em nível de:Conta (ou sistema): create, alter, dropConta (ou sistema): create, alter, drop
Objetos: select, insert, delete, update, executeObjetos: select, insert, delete, update, execute
Conjuntos de privilégios são agrupados em Conjuntos de privilégios são agrupados em atribuições para facilitar a administraçãoatribuições para facilitar a administração
CREATE ROLECREATE ROLE
Prof. Daniel dos Santos Kaster © 2010 52
Concessão/revogação de Concessão/revogação de privilégiosprivilégios
Privilégios de sistemaPrivilégios de sistema
Grant <privilegio_sist>|<role> to <user>|<role> [with admin Grant <privilegio_sist>|<role> to <user>|<role> [with admin option];option];
Revoke <privilegio_sist>|<role> from <user>;Revoke <privilegio_sist>|<role> from <user>;
GRANT create table TO jward;GRANT connect TO jward WITH ADMIN OPTION;
Prof. Daniel dos Santos Kaster © 2010 53
Concessão/revogação de Concessão/revogação de privilégiosprivilégios
Privilégios de objetos
Grant <privilegio_obj> (<atributo>) on <esquema>.<objeto> to Grant <privilegio_obj> (<atributo>) on <esquema>.<objeto> to <user>|<role> [with grant option];<user>|<role> [with grant option];
Revoke <privilegio_sist> on <esquema>.<objeto> from <user>;Revoke <privilegio_sist> on <esquema>.<objeto> from <user>;
GRANT select,insert ON jward.projetos TO public;GRANT select, update(nome) ON jward.empregado TO willy WITH GRANT OPTION;
Prof. Daniel dos Santos Kaster © 2010 54
Controle de acesso mandatórioControle de acesso mandatório
Cada usuário ou objeto está classificado em um Cada usuário ou objeto está classificado em um nívelnível
Modelo Bell-LaPadulaModelo Bell-LaPadula
Níveis: Top Secret (TS), Secret (S), Confidential (C) e Níveis: Top Secret (TS), Secret (S), Confidential (C) e Unclassified (U)Unclassified (U)
Raras aplicações comerciaisRaras aplicações comerciais
– Oracle Label SecurityOracle Label Security
Prof. Daniel dos Santos Kaster © 2010 55
Fluxo de informações no controle Fluxo de informações no controle de acesso mandatóriode acesso mandatório
Um usuário U pode ler um objeto O somente se Um usuário U pode ler um objeto O somente se classe(S) >= classe(O)classe(S) >= classe(O)
Prof. Daniel dos Santos Kaster © 2010 56
Fluxo de informações no controle Fluxo de informações no controle de acesso mandatóriode acesso mandatório
Um usuário U pode ler um objeto O somente se Um usuário U pode ler um objeto O somente se classe(S) >= classe(O)classe(S) >= classe(O)
Um usuário U pode escrever um objeto O Um usuário U pode escrever um objeto O somente se classe(S) <= classe(O)somente se classe(S) <= classe(O)
Evita fluxo de informações de níveis de segurança Evita fluxo de informações de níveis de segurança superiores para níveis inferioressuperiores para níveis inferiores
Prof. Daniel dos Santos Kaster © 2010 57
Fluxo de informações no controle Fluxo de informações no controle de acesso mandatóriode acesso mandatório
Um usuário U pode ler um objeto O somente se Um usuário U pode ler um objeto O somente se classe(S) >= classe(O)classe(S) >= classe(O)
Um usuário U pode escrever um objeto O Um usuário U pode escrever um objeto O somente se classe(S) <= classe(O)somente se classe(S) <= classe(O)
Evita fluxo de informações de níveis de segurança Evita fluxo de informações de níveis de segurança superiores para níveis inferioressuperiores para níveis inferiores
– Atributos/tuplas sem permissão podem aparecer com Atributos/tuplas sem permissão podem aparecer com null ou “poli-instanciados”null ou “poli-instanciados”
Prof. Daniel dos Santos Kaster © 2010 58
Segurança de dadosSegurança de dados
A segurança de um sistema só é efetiva se está A segurança de um sistema só é efetiva se está implantada em todos os seus níveisimplantada em todos os seus níveis– Segurança físicaSegurança física
– Segurança de sistema operacionalSegurança de sistema operacional
– Segurança do SGBDSegurança do SGBD
– Segurança da redeSegurança da rede
– Segurança da aplicaçãoSegurança da aplicação
Prof. Daniel dos Santos Kaster © 2010 59
Segurança físicaSegurança física
O nível mais básico de segurança é a O nível mais básico de segurança é a segurança física do servidor de banco de dadossegurança física do servidor de banco de dados
Acessos ao console devem ser restritosAcessos ao console devem ser restritos
A informação está nos dispositivos físicos que A informação está nos dispositivos físicos que devem ser resguardadosdevem ser resguardados– Cuidado com as mídias de backup!Cuidado com as mídias de backup!
Prof. Daniel dos Santos Kaster © 2010 60
Segurança de sistema operacionalSegurança de sistema operacional
Aplicar atualizações e patches do sistema Aplicar atualizações e patches do sistema operacionaloperacional
Executar os processos do banco de dados com Executar os processos do banco de dados com uma conta própriauma conta própria– Restrição de acesso à conta que possui os arquivos Restrição de acesso à conta que possui os arquivos
do bancodo banco
– Proteção dos arquivos do bancoProteção dos arquivos do bancoAuditoria de logsAuditoria de logs
– Utilizar um servidor de logUtilizar um servidor de log
Prof. Daniel dos Santos Kaster © 2010 61
Segurança de SGBDSegurança de SGBD
AutenticaçãoAutenticação
Definição de privilégiosDefinição de privilégios
CriptografiaCriptografia
AuditoriaAuditoria
Prof. Daniel dos Santos Kaster © 2010 62
Mecanismos de autenticaçãoMecanismos de autenticação
Mecanismos de autenticaçãoMecanismos de autenticação
– Autenticação Interna: um usuário do banco por usuário Autenticação Interna: um usuário do banco por usuário da aplicação;da aplicação;
– Autenticação Externa: um usuário do banco por Autenticação Externa: um usuário do banco por usuário da aplicação com autenticação externa;usuário da aplicação com autenticação externa;
– Autenticação via Aplicação: um usuário do banco para Autenticação via Aplicação: um usuário do banco para todos os usuários da aplicação;todos os usuários da aplicação;
Prof. Daniel dos Santos Kaster © 2010 63
Mecanismos de autenticaçãoMecanismos de autenticação
Autenticação InternaAutenticação Interna
– PrósPrós
Distinção de que usuários estão conectadosDistinção de que usuários estão conectados
Auditoria consistenteAuditoria consistente
– ContrasContras
DBA tem que criar os usuáriosDBA tem que criar os usuários
Usuários podem conectar diretamente ao bancoUsuários podem conectar diretamente ao banco
Prof. Daniel dos Santos Kaster © 2010 64
Mecanismos de autenticaçãoMecanismos de autenticação
Autenticação ExternaAutenticação Externa
– PrósPrós
Os mesmos da autenticação interna Os mesmos da autenticação interna
Criação de usuários fica a cargo do administrador de sistemasCriação de usuários fica a cargo do administrador de sistemas
Os usuários utilizam uma única conta para usar vários Os usuários utilizam uma única conta para usar vários sistemassistemas
– ContrasContras
É mais difícil de configurarÉ mais difícil de configurar
Violações de contas de rede comprometem a segurança do Violações de contas de rede comprometem a segurança do bancobanco
Prof. Daniel dos Santos Kaster © 2010 65
Mecanismos de autenticaçãoMecanismos de autenticação
Autenticação via AplicaçãoAutenticação via Aplicação
– PrósPrós
Bom para muitos usuários em operações não críticasBom para muitos usuários em operações não críticas
– ContrasContras
O controle de acesso tem que ser garantido pela aplicaçãoO controle de acesso tem que ser garantido pela aplicação
Auditoria tem que ser implementada na aplicaçãoAuditoria tem que ser implementada na aplicação
Prof. Daniel dos Santos Kaster © 2010 66
Boas práticas para autenticação de Boas práticas para autenticação de usuáriosusuários
Utilizar Utilizar senhas criptografadassenhas criptografadas
Utilizar funções de reforço de senhaUtilizar funções de reforço de senha
Desabilitar contas desnecessárias e/ou sem senhaDesabilitar contas desnecessárias e/ou sem senha
Definir adequadamente os privilégios de sistema e de Definir adequadamente os privilégios de sistema e de acesso ao catálogo do bancoacesso ao catálogo do banco
Prof. Daniel dos Santos Kaster © 2010 67
Segurança de redeSegurança de rede
Utilizar tráfego criptografado de senhasUtilizar tráfego criptografado de senhas
Desabilitar serviços e compartilhamentos que não forem Desabilitar serviços e compartilhamentos que não forem estritamente necessáriosestritamente necessários
Não colocar arquivos do banco em compartilhamentos Não colocar arquivos do banco em compartilhamentos publicadospublicados
Colocar o servidor de banco de dados atrás de um Colocar o servidor de banco de dados atrás de um firewallfirewall
Utilizar VPN (Virtual Private Networks) quando um canal Utilizar VPN (Virtual Private Networks) quando um canal seguro for necessárioseguro for necessário
Controlar o acesso dos usuários internos da organizaçãoControlar o acesso dos usuários internos da organização
Prof. Daniel dos Santos Kaster © 2010 68
Segurança de aplicaçãoSegurança de aplicação
Validar as entradas dos usuários para evitar a Validar as entradas dos usuários para evitar a injeção de SQLinjeção de SQL
Toda entrada de dados é suspeita!Toda entrada de dados é suspeita!
Boas práticasBoas práticas
– Usar funções de Usar funções de scapescape de caracteres especiais de caracteres especiais
– Fornecer dados por meio de parâmetros para as Fornecer dados por meio de parâmetros para as instruções SQL (binding)instruções SQL (binding)
Prof. Daniel dos Santos Kaster © 2010 69
Mais boas práticas de segurança Mais boas práticas de segurança de aplicaçãode aplicação
Utilizar usuários com privilégios distintos para conexão Utilizar usuários com privilégios distintos para conexão com o banco de dados de acordo com o nível de acesso com o banco de dados de acordo com o nível de acesso na aplicaçãona aplicação
Nunca fazer conexão da aplicação como usuário Nunca fazer conexão da aplicação como usuário privilegiadoprivilegiado
Utilizar tráfego criptografado de informaçõesUtilizar tráfego criptografado de informações
Tratar adequadamente erros e warnings emitidos pelo Tratar adequadamente erros e warnings emitidos pelo bancobanco
Prof. Daniel dos Santos Kaster © 2010 70
Auditoria de acesso aos dadosAuditoria de acesso aos dados
É fundamental adotar uma política adequada de É fundamental adotar uma política adequada de monitoramento dos acessos aos dadosmonitoramento dos acessos aos dados
– Identificar situações atípicas.Identificar situações atípicas.
– Detectar ações mal intencionadas.Detectar ações mal intencionadas.
– Detectar falhas de segurança.Detectar falhas de segurança.
Prof. Daniel dos Santos Kaster © 2010 71
Esquemas de auditoriaEsquemas de auditoria
Alguns SGBDs fornecem pacotes de Alguns SGBDs fornecem pacotes de funcionalidades para auditoriafuncionalidades para auditoria
Ex: instrução AUDIT no OracleEx: instrução AUDIT no Oracle
Implementar triggers de auditoriaImplementar triggers de auditoria
Implementar scripts de verificação periódica de Implementar scripts de verificação periódica de consistênciaconsistência
Prof. Daniel dos Santos Kaster © 2010 72
Auditar é chato, mas necessário!Auditar é chato, mas necessário!
Há também outras fontes fundamentais para a Há também outras fontes fundamentais para a auditoriaauditoria– Arquivos de log do SGBDArquivos de log do SGBD
– Arquivos de log do SOArquivos de log do SO
As aplicações também devem gerar As aplicações também devem gerar informações de auditoria e suporte!informações de auditoria e suporte!
Auditoria em excesso pode causar degradação Auditoria em excesso pode causar degradação desnecessária de desempenho do SGBD e desnecessária de desempenho do SGBD e dificuldade de interpretação dos resultadosdificuldade de interpretação dos resultados
Prof. Daniel dos Santos Kaster © 2010 73
ConteúdoConteúdo
Introdução Introdução ✓✓
integridade e consistência de dados integridade e consistência de dados ✓✓
Segurança de dados Segurança de dados ✓✓
Disponibilidade de dadosDisponibilidade de dados
Prof. Daniel dos Santos Kaster © 2010 74
Garantir a disponibilidade do Garantir a disponibilidade do sistemasistema
Disponibilidade é a condição em que um recurso Disponibilidade é a condição em que um recurso pode ser acessado pelos seus consumidorespode ser acessado pelos seus consumidores
Disponibilidade e desempenho são diferentes e Disponibilidade e desempenho são diferentes e devem ser tratadas pelo DBA como assuntos devem ser tratadas pelo DBA como assuntos distintosdistintos
Disponibilidade compreende gerenciabilidade, Disponibilidade compreende gerenciabilidade, recuperabilidade e confiabilidaderecuperabilidade e confiabilidade
Prof. Daniel dos Santos Kaster © 2010 75
Garantir a disponibilidade do Garantir a disponibilidade do sistema (cont.)sistema (cont.)
QuestõesQuestões– Qual é o custo de Qual é o custo de downtime downtime da organização?da organização?– ““Quanto” de disponibilidade é o suficiente?Quanto” de disponibilidade é o suficiente?
Com o advento da internet, o Com o advento da internet, o uptimeuptime de muitas organizações de muitas organizações tornou-se contínuotornou-se contínuo
Eventuais problemas são possíveis e Eventuais problemas são possíveis e não não acontecem somente com os outrosacontecem somente com os outros– Falhas de instância, hardware, energia, ...Falhas de instância, hardware, energia, ...– Falhas catastróficasFalhas catastróficas– Falhas humanasFalhas humanas
Prof. Daniel dos Santos Kaster © 2010 76
Redundância é importante!Redundância é importante!
Redundância é importante!Redundância é importante!– redundância é importante!redundância é importante!
redundância é importante!redundância é importante!
– redundância é importante!redundância é importante!
redundância é importante!redundância é importante!
redundância é importante!redundância é importante!
Prof. Daniel dos Santos Kaster © 2010 77
Disponibilidade de armazenamentoDisponibilidade de armazenamento
Há várias alternativasHá várias alternativas
– Discos isoladosDiscos isolados
– RAIDRAID
– StoragesStorages
É preciso encontrar a melhor relação custo-É preciso encontrar a melhor relação custo-benefíciobenefício
Prof. Daniel dos Santos Kaster © 2010 78
RAIDRAID
A taxa de aumento da performance dos discos A taxa de aumento da performance dos discos rígidos tem sido consideravelmente inferior ao rígidos tem sido consideravelmente inferior ao das memórias e dos microprocessadores das memórias e dos microprocessadores (limitações mecânicas).(limitações mecânicas).
O conceito de RAID (Redundant Array of O conceito de RAID (Redundant Array of Inexpensive/Independent Disks) consiste em Inexpensive/Independent Disks) consiste em organizar conjuntos de discos para uso em organizar conjuntos de discos para uso em paralelo para reduzir esta lacuna de paralelo para reduzir esta lacuna de desempenho.desempenho.
Desempenho (stripping)Desempenho (stripping)
Redundância (espelhamento/paridade)Redundância (espelhamento/paridade)
Prof. Daniel dos Santos Kaster © 2010 79
StoragesStorages
Uma Storage Area Network (SAN) é uma Uma Storage Area Network (SAN) é uma arquitetura para conectar dispositivos de arquitetura para conectar dispositivos de armazenamento, tais como arrays de discos e armazenamento, tais como arrays de discos e jukeboxes, de forma que para o sistema jukeboxes, de forma que para o sistema operacional apareçam como se estivessem operacional apareçam como se estivessem localmente conectados.localmente conectados.
– Protocolos mais utilizadosProtocolos mais utilizados
SCSI paralelo (tradicional)SCSI paralelo (tradicional)
Fibre channel (rede gigabit sobre cabos óticos ou par Fibre channel (rede gigabit sobre cabos óticos ou par trançado)trançado)
iSCSI – SCSI serial sobre TCP/IPiSCSI – SCSI serial sobre TCP/IP
Prof. Daniel dos Santos Kaster © 2010 80
StoragesStorages
Exemplo: Dell CX4-960 SANExemplo: Dell CX4-960 SAN
Prof. Daniel dos Santos Kaster © 2010 81
StoragesStorages
Novas portas podem ser adicionadas ao arrayNovas portas podem ser adicionadas ao array
Portas 4Gbit Fibre Channel e 1Gbit iSCSI em um único arrayPortas 4Gbit Fibre Channel e 1Gbit iSCSI em um único array
Capacidade de conexão de até 512 servidoresCapacidade de conexão de até 512 servidores
Fibre Channel iSCSI
Prof. Daniel dos Santos Kaster © 2010 82
StoragesStorages
5 a 960 drives (até 950TB!!!)5 a 960 drives (até 950TB!!!)
1 drive flash, com desempenho 1 drive flash, com desempenho equivalente a 30 Fibre Channelequivalente a 30 Fibre Channel
Prof. Daniel dos Santos Kaster © 2010 83
Só Jesus salva! Então faça backup!Só Jesus salva! Então faça backup!
Algumas vezes a única forma de recuperar o Algumas vezes a única forma de recuperar o sistema de uma falha é restabelecer o backup sistema de uma falha é restabelecer o backup do sistemado sistema
É tarefa do DBA definir e implementar uma É tarefa do DBA definir e implementar uma política adequada de backuppolítica adequada de backup– Backup completoBackup completo
– Backup incrementalBackup incremental
– Arquivamento dos arquivos de log de Arquivamento dos arquivos de log de transaçõestransações
Prof. Daniel dos Santos Kaster © 2010 84
Procedimentos de backupProcedimentos de backup
Definir a periodicidade do backup e agendarDefinir a periodicidade do backup e agendar
Definir estratégia de verificação da integridade do Definir estratégia de verificação da integridade do backupbackup
Definir a metodologia de recuperação do backupDefinir a metodologia de recuperação do backup
Tempo de recuperação faz parte do contrato! ;-)Tempo de recuperação faz parte do contrato! ;-)
Definir a estratégia de descarte, quando usadaDefinir a estratégia de descarte, quando usada
Testar regularmente o sistema e arquivos de backupTestar regularmente o sistema e arquivos de backup
Prof. Daniel dos Santos Kaster © 2010 85
Até que enAté que enFim!Fim! :-) :-)
Perguntas? Perguntas?
Prof. Daniel dos Santos KasterProf. Daniel dos Santos KasterDept. Computação – Universidade Estadual de Londrina (UEL)Dept. Computação – Universidade Estadual de Londrina (UEL)
dskaster@uel.brdskaster@uel.br
Semana da Computação
UFSCar
31/05 a 02/jun de 2010
top related