Universidade Presbiteriana Mackenzie
Sistemas Distribuídos
Aula 02
Visão Geral de Segurança, Tolerância a Falhas e Comunicação em Grupo
Prof. Rogério Augusto Rondini
Faculdade de Computação e Informática São Paulo, 14 de Fevereiro de 2011
•
Segurança em Sistemas Distribuídos
(Visão Geral)
•
Falhas em Sistemas Distribuídos
•Eleição
•
Comunicação em grupo com JGroups
Introdução a Sistemas Distribuídos 2
Segurança – Visão Geral
Segurança – Visão Geral
●
Segurança está fortemente
relacionada com a noção de
Sistemas Confiáveis
●Requisitos
● Disponibilidade ● Confiabilidade ● Segurança ● Capacidade de manutençãoSegurança – Visão Geral
●
Disponibilidade
● Propriedade de um sistema estar pronto para
ser utilizado imediatamente
● Probabilidade de o sistema estar funcionando
corretamente em qualquer momento determinado
● Sistemas de de Alta Disponibilidade ou H.A
(High Availability), maior probabilidade de o
sistema estar funcionando em dado instante do tempo!!
Segurança – Visão Geral
●
Confiabilidade
● Probabilidade de um sistema funcionar
continuamente sem falhas
● Contrário à disponibilidade, um sistema
confiável é definido em termos de intervalo de tempo em vez de instante no tempo
● Sistema Confiável é aquele que mais
provavelmente permanecerá em
Segurança – Visão Geral
Confiabilidade e Disponibilidade apresentam
diferenças sutis
Qual o impacto se compararmos as duas
propriedades ?
Segurança – Visão Geral
●
Confiabilidade X Disponibilidade
● Supondo...
● Um sistema que fica fora do ar por um
milissegundo a cada hora, tem uma disponibilidade de 99,9999%, mas é confiável ?!
● Por outro lado, um sistema que nunca cai, mas
é desligado por algum motivo durante duas semanas todo mês de agosto tem alta
confiabilidade, mas somente 96% de disponibilidade...
Segurança – Visão Geral
●
Capacidade de Manutenção
● Grau de facilidade de recuperação de um
sistema que falhou (ex. Correção de um bug ou
troca de um servidor...)
● Sistemas com alta capacidade de manutenção
também demonstram alto grau de
disponibilidade, visto que falhas podem ser detectadas e reparadas mais facilmente
– Obs.: muito bonito na teoria, mas não é tão simples
Segurança – Visão Geral
●
Segurança (propriamente dito)
● Segurança em relação aos efeitos causados por
uma mau funcionamento
– Ex. Sistema de controle de aeronaves.. O que
acontece se o sistema que controla o trem de pouso da aeronave ficar indisponível no momento do
pouso ?
● Segurança de Serviços e Dados
– Comunicação entre usuários e processos – Controle de acesso a recursos
Segurança de Serviços e Dados
Segurança requer uma descrição dos
“requisitos de segurança” e quais
mecanismos suportam tais requisitos
O que é política de Segurança ?
Quais os mecanismos de segurança
disponíveis?
Política de Segurança
Descreve com exatidão quais ações as
entidades (usuários, serviços, dados,
máquinas...) de um sistema tem permissão
de realizar e quais são proibidas
Mecanismos de Segurança
● Criptografia● Transforma dados em algo que um atacante não possa
entender
● Autenticação
● Verificação da identidade declarada de uma entidade (usuário,
servidor, serviço...)
● Autorização
● Verificação pós autenticação para permitir ou não acesso a um
recurso
● Auditoria
● Rastrear acessos. Não proporciona proteção, mas auxiliam na
Mecanismos de Segurança
https://www.google.com/accounts request username/password Base Usuários (2) autenticação Permissões (3) autorização Usuário/senha (1) Criptografia Usuário/Senha Trilhas de Auditoria Registro de acessos (4) auditoria Acesso permitidoFoco de Controle
●
Foco na proteção dos dados
● Proteção de acesso e integridade a itens de dados
●
Foco na proteção de serviços
● Controle de acesso a “operações” específicas, exemplo,
um acesso a métodos de um Objeto
●
Foco na definição de papéis
● Controle baseado no papel que o usuário desempenha ● Ex. GERENTE tem acesso a recursos que o ATENDENTE
Canal Seguro
Independente do foco de controle utilizado, a
questão fundamental da segurança é
estabelecer um canal de comunicação
seguro
Em linhas gerais, um canal seguro é obtido
através de autenticação, integridade e
Autenticação
●
Visa garantir a identidade de quem
enviar uma mensagem e/ou tenta
acessar um recurso protegido
● Baseada em usuário e senha
● Chaves secretas compartilhadas ● Central de distribuição de chaves ● Serviço de Token Seguro (STS)
Integridade e Confidencialidade
●
Mensagens são protegidas contra
modificações
●
Garantia que mensagens não possam
ser interceptadas e lidas
Controle de Acesso
●
Algumas definições
● Sujeito – entidade em um sistema de
computação que pode iniciar requisições para realizar operações
● Objeto – entidade em um sistema de
computação na qual uma operação pode ser iniciada
● Monitor de referência – registra as permissões
de um sujeito e decide se o sujeito pode ou não realizar um determinada operação
Matriz de Controle de Acesso
●
Modelo conceitual que especifica os
direitos que cada sujeito possui para
cada objeto
● Exemplo:
Sujeito \ Objeto Objeto 1 Objeto 2 Gerente ler, escrever ler
De difícil implementação em sistemas
distribuídos
Veremos alguns detalhes em segurança
Web, Web Services e Bancos de Dados
Tolerância a Falhas
●
Conjunto de técnicas utilizadas para
tornar sistemas distribuídos “mais
tolerantes a falhas”
● Consequentemente..
– Maior disponibilidade – Maior confiabilidade – Maior segurança...
●
Um sistema “Tolerante a Falhas” pode
prover seus serviços mesmo na
presença de falhas
Falhas Transientes
●
Falha tipo Gasparzinho...
Falhas Intermitentes
●
Falhas tipo Assombroso
● Ocorre e desaparece por sua própria vontade ● Quando você menos espera, está de volta!!!
Falhas Permanentes
●
Falha continua a existir até que o
componente faltoso seja substituído
● Melhor dos casos, a identificação da falha é
Tipos de Falha
Falha por queda Falha por omissão
Falha de temporização Resposta fora do intervalo de tempo Falha de resposta
Falha arbitrária
Servidor pára de funcionar, mas estava funcionando corretamente até parar
Servidor não consegue receber mensagens ou responder mensagens que recebeu ou enviar mensagens
A resposta do servidor está incorreta ou o valor da resposta está errado
Servidor produz respostas arbitrárias em momentos arbitrários
Um problema típico...
●
Aplicações cliente não conseguem
distinguir entre um sistema que
falhou por queda e um sistema
demasiado lento...
● A falha é de temporização ou omissão ?
Resiliência
Um mecanismo simples de proteção é
replicar e distribuir a computação através de
grupo
Resiliência
●
Simples – simétrico e sem ponto
único de falha, porém, tomada de
decisão é mais complexa
●
Hierárquico – perda do coordenador
provoca parada repentina (ou até que
seja eleito outro coordenador), mas
decisões são tomadas sem incomodar
nenhum outro Host
Resiliência
Grupos
●
Duas abordagens
● Utilizar servidor de grupo responsável por
gerenciar os participantes
– Problema: ponto único de falha
● Utilizar multicast
– “estranho” envia mensagem anunciando que deseja
entrar
– Em caso de grupo hierárquico, deve-se utilizar
Detecção de Falhas
Como detectar falhas em sistemas
distribuídos ?
Detecção de Falhas
●
Algumas abordagens
● PING – processos enviam mensagens uns aos outros
“você está vivo?”
● GOSSIPING – cada nó anuncia periodicamente a seus
vizinhos que ainda está vivo
● Uso de Heartbeat - semelhante a PING
●
Todas acabam utilizando timeout
● Problema: atrasos configuram queda ??
●
Pode-se complementar a solução com um
protocolo para “verificar suspeitos”
Algoritmos Distribuídos de Eleição
●
Em sistemas distribuídos, muitas
atividades exigem a existência de um
coordenador que resolva alguns
problemas de consenso
● Exemplos
– Coordenador de Exclusão mútua com controle
centralizado
Algoritmos Distribuídos de Eleição
●
Algoritmos de eleição tentam definir
quem será o líder, seja na
inicialização do sistema ou quando
ocorrer uma falha com o líder atual
●
Ao final, todos devem concordar com
Algoritmo Bully (valentão)
●
Premissas
● Todos os processos tem prioridade única
● Assume que um processo sabe a prioridade de
todos os outros
● Quando ocorre a eleição, o processo de maior
Algoritmo Bully (valentão)
●
Algoritmo
● Quando um processo Pi detecta que o coordenador
não está respondendo, ele inicia a eleição da seguinte forma:
– Envia mensagem ELEIÇÂO p/ processos com prioridade
maior que a sua
– SE nenhum processo responde
● Pi se intitula COORDENADOR
● Envia mensagem avisando os outros processos
– SE processo Pj responde (msg ALIVE)
● Pi não faz mais nada, Pj assume controle ● Pj retorna ao início agindo como Pi
Algoritmo de Bully (valentão)
●
Exercício
● Supondo uma rede com 5 processadores
{P1,P2,P3,P4,P5}, onde o seu índice corresponde à sua prioridade...
– O coordenador atual é o processador P5
– Em um dado momento, o processador P2 detecta que
o coordenador está fora do ar.
● Represente graficamente a execução do
Comunicação em Grupo com Jgroups
Estudo de Caso
Jgroups é uma ferramenta para comunicação
multicast confiável, o qual permite a criação
de grupos de processos cujos membros
podem enviar mensagens aos demais.
Características
●
Comunicação Multicast Confiável
● Mensagens perdidas são retransmitidas
● IMPORTANTE: Comunicação Multicast não
significa apenas IP Multicast. O Jgroups
possibilita o uso de TCP como protocolo de transporte
Arquitetura
Canal (Channel)
●
O canal funciona como um identificador de
grupo
● Canais com mesmo nome formam um grupo
● Lista de membros podem ser obtidas de um Canal, e são
chamadas de Visão (view)
● Cliente pode selecionar um endereço e enviar mensagem
unicast ou enviar mensagem multicast a todos os membros
●
Canais são “primitivos” em termos de
funcionalidades. Comunicação mais complexa
precisa ser escrita por programadores
Blocos de Construção
●
Blocos de construção oferecem uma
API mais sofisticada no topo de um
canal.
●
Esta API abstrai a complexidade de
implementação de mecanismos de
comunicação específicos
Pilha de Protocolos
●
O Jgroups oferece uma variedade de
protocolos, que são configurados
como uma PILHA.
●
Todas as mensagens enviadas e
recebidas passa pela pilha
●
Cada camada pode modificar,
reordenar, repassar e descartar a
mensagem
Pilha de Protocolos
●
A composição da pilha é determinada
através de configuração
●
Dependendo da necessidade e
característica do sistema, é possível
adicionar ou remover protocolos
Pilha de Protocolos
● Transporte
● UDP, TCP, TUNNEL
● Descoberta de Membros
● PING, TCPPING, TCPGOSSIP, MPING...
● Junção de Grupos
● MERGE2
● Detecção de Falha
● FD, FD_ALL, FD_PING, FD_SOCK, VERIFY_SUSPECT
● Adesão a grupos
● GMS
● Segurança
Configuração
<config ...> <UDP mcast_port="${jgroups.udp.mcast_port:45588}"/> <PING timeout="2000" num_initial_members="3"/> <MERGE2 max_interval="30000" min_interval="10000"/> <FD_SOCK/> <VERIFY_SUSPECT timeout="1500" /> <pbcast.NAKACK use_stats_for_retransmission="false" exponential_backoff="0" use_mcast_xmit="true" gc_lag="0" retransmit_timeout="300,600,1200" discard_delivered_msgs="true"/><pbcast.GMS print_local_addr="true" join_timeout="3000" view_bundling="true"/>
Flexibilidade
●
O Jgroups oferece mecanismos para
implementação de canais, blocos e
protocolos específicos
● Exemplo: Você pode implementar seu próprio