Integridade de dados e administração de segurança em SGBDs

85
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 SGBDs em SGBDs Prof. Daniel dos Santos Kaster Prof. Daniel dos Santos Kaster Dept. Computação – Universidade Estadual de Londrina (UEL) Dept. Computação – Universidade Estadual de Londrina (UEL) [email protected] [email protected] Semana da Computação UFSCar 31/05 a 02/jun de 2010

Transcript of Integridade de dados e administração de segurança em SGBDs

Page 1: Integridade de dados e administração de segurança em SGBDs

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)

[email protected]@uel.br

Semana da Computação

UFSCar

31/05 a 02/jun de 2010

Page 2: Integridade de dados e administração de segurança em SGBDs

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

Page 3: Integridade de dados e administração de segurança em SGBDs

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.

Page 4: Integridade de dados e administração de segurança em SGBDs

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.”

Page 5: Integridade de dados e administração de segurança em SGBDs

Prof. Daniel dos Santos Kaster © 2010 5

Existe diferença entre desenvolver e Existe diferença entre desenvolver e desenvolver!desenvolver!

Page 6: Integridade de dados e administração de segurança em SGBDs

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

Page 7: Integridade de dados e administração de segurança em SGBDs

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

Page 8: Integridade de dados e administração de segurança em SGBDs

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

Page 9: Integridade de dados e administração de segurança em SGBDs

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

Page 10: Integridade de dados e administração de segurança em SGBDs

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

Page 11: Integridade de dados e administração de segurança em SGBDs

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

Page 12: Integridade de dados e administração de segurança em SGBDs

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

Page 13: Integridade de dados e administração de segurança em SGBDs

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

Page 14: Integridade de dados e administração de segurança em SGBDs

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

Page 15: Integridade de dados e administração de segurança em SGBDs

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

Page 16: Integridade de dados e administração de segurança em SGBDs

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

Page 17: Integridade de dados e administração de segurança em SGBDs

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)

Page 18: Integridade de dados e administração de segurança em SGBDs

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)

Page 19: Integridade de dados e administração de segurança em SGBDs

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.

Page 20: Integridade de dados e administração de segurança em SGBDs

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?”

Page 21: Integridade de dados e administração de segurança em SGBDs

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

Page 22: Integridade de dados e administração de segurança em SGBDs

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

Page 23: Integridade de dados e administração de segurança em SGBDs

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

Page 24: Integridade de dados e administração de segurança em SGBDs

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

Page 25: Integridade de dados e administração de segurança em SGBDs

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

Page 26: Integridade de dados e administração de segurança em SGBDs

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?”

Page 27: Integridade de dados e administração de segurança em SGBDs

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

Page 28: Integridade de dados e administração de segurança em SGBDs

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)

Page 29: Integridade de dados e administração de segurança em SGBDs

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.

Page 30: Integridade de dados e administração de segurança em SGBDs

Prof. Daniel dos Santos Kaster © 2010 30

Boas práticas no uso de transaçõesBoas práticas no uso de transações

Page 31: Integridade de dados e administração de segurança em SGBDs

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!!!

Page 32: Integridade de dados e administração de segurança em SGBDs

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

Page 33: Integridade de dados e administração de segurança em SGBDs

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

Page 34: Integridade de dados e administração de segurança em SGBDs

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.

Page 35: Integridade de dados e administração de segurança em SGBDs

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

Page 36: Integridade de dados e administração de segurança em SGBDs

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

Page 37: Integridade de dados e administração de segurança em SGBDs

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

Page 38: Integridade de dados e administração de segurança em SGBDs

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?

Page 39: Integridade de dados e administração de segurança em SGBDs

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

Page 40: Integridade de dados e administração de segurança em SGBDs

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?

Page 41: Integridade de dados e administração de segurança em SGBDs

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.

Page 42: Integridade de dados e administração de segurança em SGBDs

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

Page 43: Integridade de dados e administração de segurança em SGBDs

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?

Page 44: Integridade de dados e administração de segurança em SGBDs

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

Page 45: Integridade de dados e administração de segurança em SGBDs

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

Page 46: Integridade de dados e administração de segurança em SGBDs

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?

Page 47: Integridade de dados e administração de segurança em SGBDs

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? ;-)

Page 48: Integridade de dados e administração de segurança em SGBDs

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

Page 49: Integridade de dados e administração de segurança em SGBDs

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.

Page 50: Integridade de dados e administração de segurança em SGBDs

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

Page 51: Integridade de dados e administração de segurança em SGBDs

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

Page 52: Integridade de dados e administração de segurança em SGBDs

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;

Page 53: Integridade de dados e administração de segurança em SGBDs

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;

Page 54: Integridade de dados e administração de segurança em SGBDs

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

Page 55: Integridade de dados e administração de segurança em SGBDs

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)

Page 56: Integridade de dados e administração de segurança em SGBDs

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

Page 57: Integridade de dados e administração de segurança em SGBDs

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”

Page 58: Integridade de dados e administração de segurança em SGBDs

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

Page 59: Integridade de dados e administração de segurança em SGBDs

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!

Page 60: Integridade de dados e administração de segurança em SGBDs

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

Page 61: Integridade de dados e administração de segurança em SGBDs

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

Page 62: Integridade de dados e administração de segurança em SGBDs

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;

Page 63: Integridade de dados e administração de segurança em SGBDs

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

Page 64: Integridade de dados e administração de segurança em SGBDs

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

Page 65: Integridade de dados e administração de segurança em SGBDs

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

Page 66: Integridade de dados e administração de segurança em SGBDs

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

Page 67: Integridade de dados e administração de segurança em SGBDs

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

Page 68: Integridade de dados e administração de segurança em SGBDs

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)

Page 69: Integridade de dados e administração de segurança em SGBDs

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

Page 70: Integridade de dados e administração de segurança em SGBDs

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.

Page 71: Integridade de dados e administração de segurança em SGBDs

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

Page 72: Integridade de dados e administração de segurança em SGBDs

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

Page 73: Integridade de dados e administração de segurança em SGBDs

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

Page 74: Integridade de dados e administração de segurança em SGBDs

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

Page 75: Integridade de dados e administração de segurança em SGBDs

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

Page 76: Integridade de dados e administração de segurança em SGBDs

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!

Page 77: Integridade de dados e administração de segurança em SGBDs

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

Page 78: Integridade de dados e administração de segurança em SGBDs

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)

Page 79: Integridade de dados e administração de segurança em SGBDs

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

Page 80: Integridade de dados e administração de segurança em SGBDs

Prof. Daniel dos Santos Kaster © 2010 80

StoragesStorages

Exemplo: Dell CX4-960 SANExemplo: Dell CX4-960 SAN

Page 81: Integridade de dados e administração de segurança em SGBDs

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

Page 82: Integridade de dados e administração de segurança em SGBDs

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

Page 83: Integridade de dados e administração de segurança em SGBDs

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

Page 84: Integridade de dados e administração de segurança em SGBDs

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

Page 85: Integridade de dados e administração de segurança em SGBDs

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)

[email protected]@uel.br

Semana da Computação

UFSCar

31/05 a 02/jun de 2010