terça-feira, 6 de agosto de 2013

LDAP



O LDAP (Lightweight Directory Access Protocol) é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP. Ele foi criado como uma alternativa ao DAP (Directory Access Protocol) para navegar em diretórios no formato X.500. O LDAP permite manipular informações sobre pessoas, senhas, impressoras, recursos e serviços, unidades organizacionais, entre outros, e define as formas como essas informações podem ser consultadas, inseridas, removidas ou atualizadas. Uma versão segura desse protocolo, o LDAPS, também está disponível.
O LDAP:
·         Centraliza, em um único local da rede, informações acerca de usuários, senhas e diretórios.
·         Permite acesso aos dados de forma segura usando SSL.
·         É independente de plataforma, podendo ser usado tanto no Active Directory do Windows como no Open LDAP do Linux.
·         Armazena as informações de forma hierárquica em uma estrutura de árvore.
·         Sofre mais consultas que atualizações.
·         Suporta tanto a autenticação por meio de certificados quanto o uso de TLS.
Um cliente começa uma sessão de LDAP ligando-se a um servidor LDAP normalmente pela porta padrão TCP 389. Este envia requisições para o servidor, que devolve respostas das consultas e alterações. As operações básicas são divididas em três categorias, conforme a seguir:
Categoria
Operação
Descrição
Autenticação e controle
Bind
Autentica e especifica a versão do protocolo LDAP.
Autenticação e controle
Abandon
Aborta uma requisição prévia.
Autenticação e controle
Unbind
Fecha a conexão, não o inverso de Bind.
Pesquisa e comparação
Search
Procura por e/ou recupera entradas dos diretórios.
Pesquisa e comparação
Compare
Testa se uma entrada tem determinado valor como atributo.
Atualização
Add
Adiciona uma nova entrada.
Atualização
Delete
Apaga uma entrada.
Atualização
Modify
Modifica uma entrada.
Atualização
Modify DN
Move ou renomeia uma entrada.

Start TLS
Protege a conexão com a Transport Layer Security (TLS).

Extended Operation
Operação genérica para definir outras operações.

A estrutura básica das informações LDAP é baseada em uma árvore conceitual, chamada de DIT (Directory Information Tree). Cada folha dessa árvore é um objeto identificado por um DN (Distinguished Name), que representa um endereço na estrutura LDAP sendo considerada. Os identificadores DN possuem uma utilização parecida com os sistemas de arquivo, com a diferença de que a parte mais significativa no LDAP aparece primeiro (ex: cn=Henrique,o=funcionário,ou=administrativo), enquanto nos endereços de arquivo acontece o contrário (ex: /home/user/arquivo). A identificação de elementos do LDAP é semelhante à estrutura utilizada no DNS, com a parte mais significativa aparecendo primeiro (mais à esquerda).
Para cada objeto (folha da árvore) são definidos atributos. Alguns dos atributos que podem ser associados aos objetos são:
Atributo
Descrição
c
country (País)
cn
common name
dc
domainComponent
dn
distinguished name (define uma entrada sem ambigüidades. É o caminho de registros que fica entre o registro a ser especificado e a raiz)
Givenname
Primeiro nome
ou
organizationalUnitName
rdn
relative distinguished name (identifica um registro em seu nível)
sn
surname (sobrenome)
uid
user ID

Registro: contém informações sobre o objeto armazenado (usuário, impressora, etc.).
Object class: define quais atributos são obrigatórios e quais são opcionais em um registro. Um registro tem uma ou mais object class.
Schema: conjunto de regras que define os tipos de dados possíveis (int, string, etc.) e organização desses dados. Busca manter a consistência dos dados no diretório LDAP.

Modelos de abordagem do LDAP
Modelo de informações: define o tipo de informação que pode ser armazenada em um diretório LDAP. Trata dos atributos, das object class, dos schemas, etc.
Modelo de nomes: define como a informação no diretório LDAP pode ser organizada e referenciada. Trata da organização da DIT, como os RDNs e o DNs.
Modelo funcional: define o que pode ser feito com a informação no diretório LDAP e como ela pode ser acessada e alterada. Descreve o que fazer com o diretório e através de quais ferramentas, como por exemplo, fazer autenticação, buscar no diretório, modificar dados, etc.
Modelo de segurança: define como a informação no diretório LDAP pode ser protegida de acessos ou modificações não autorizadas. No LDAP, podemos ter vários usuários além do administrador. Na verdade, caso você deseje, o LDAP pode tratar cada registro da DIT como um usuário. Para dizer o que cada usuário terá permissão de fazer (ler ou modificar) e em quais registros ele poderá fazer isso (registros próprios dele ou dos outros), existem as ACLs (Access Control Lists). O modelo de segurança utiliza o TLS (criptografa a comunicação entre cliente e servidor) e a SASL – Simple Authentication and Secutiry Layer (método de negociação seguro de autenticação entre cliente e servidor para provar ao serviço que um cliente é válido).

domingo, 7 de julho de 2013

Conceitos de engenharia de software



Segundo Pressman, a engenharia de software possui três elementos fundamentais: métodos, ferramentas e procedimentos.
·         Métodos: descrevem os detalhes que definem como o software será construído. Envolvem as etapas de planejamento do projeto, análise de requisitos, projeto, codificação, teste e manutenção.
·         Ferramentas: são os recursos que dão suporte aos métodos. As ferramentas dão apoio automatizado aos métodos. Elas são chamadas de ferramentas CASE (Computer-Aided Software Engineering).
·         Procedimentos: interligam os métodos e as ferramentas. Definem a seqüência em que os métodos serão aplicados, os produtos que devem ser entregues (documentos, formulários, relatórios) e realizam o controle de mudanças.
Portanto, a engenharia de software é uma disciplina que integra métodos, ferramentas e procedimentos para o desenvolvimento de software de computadores.
Pressman define quatro paradigmas da engenharia de software:
1.       Ciclo de vida clássico (cascata): Engenharia de sistemas, Análise, Projeto, Codificação, Teste, Manutenção;
2.       Prototipação: protótipo descartável, protótipo evolutivo;
3.       Modelo Espiral: Planejamento, Análise de Riscos, Engenharia, Avaliação feita pelo cliente;
4.       Técnicas de quarta geração: A partir de uma especificação de alto nível do desenvolvedor, a ferramenta gera, automaticamente, o código-fonte, tendo como base a especificação do desenvolvedor.
Conceitos básicos
Termo
Definição
Software
Programas de computador e documentação associada (manuais, arquivos de configuração, documentação do sistema, etc.).
Engenharia de software
Disciplina de engenharia relacionada a todos os aspectos de produção de software.
Processo de software
Um conjunto de atividades cujo objetivo é o desenvolvimento ou a evolução de software.
Modelo de processo de software
Uma representação simplificada de um processo de software, apresentado sob perspectiva específica.
Modelo de ciclo de vida
É um encadeamento específico das fases (uma forma de organizar as fases) para a construção do sistema. As fases são: Levantamento de Requisitos, Análise de Requisitos, Projeto, Implementação, Testes, Implantação. Conforme Sommerville, as fases são: Definição de requisitos, Projeto de sistema e software, Implementação e teste de unidade, Integração e teste de sistema, Operação e manutenção.
Métodos de engenharia de software
Abordagens estruturadas para desenvolvimento do software que incluem modelos de sistema, notações, regras, recomendações de projeto e guias de processo.
CASE (Computer-Aided Software Engineering)
Sistemas de software que fornecem apoio automatizado para atividades de processo de software. Sistemas CASE são freqüentemente usados para apoio ao método.
Atributos de um bom software
O software deve fornecer a funcionalidade e o desempenho exigidos pelo usuário e deve ser fácil de manter, confiável e usável.

Frame Relay



Frame Relay é uma rede orientada a conexões sem controle de erros e nenhum controle de fluxo. Por se tratar de uma rede orientada a conexões, os pacotes são entregues em ordem (quando são entregues). Essas características tornam o Frame Relay semelhante a uma LAN de área externa. Sua principal aplicação é a interconexão de LANs instaladas em vários escritórios de uma empresa.
O Frame Relay se baseia em um conceito chamado circuito virtual, caminho bidirecional através da rede definido em software. Isso permite criar muitos caminhos virtuais por meio de uma única conexão física. Da camada 3 para cima, os circuitos virtuais são completamente transparentes de maneira que, do ponto de vista dos hosts, é como se realmente houvesse um circuito físico para cada conexão. O Frame Relay realiza essa tarefa utilizando Identificadores de Conexão de Enlace de Dados (DLCI – Data Link Connection Identifiers).
Cabeçalho Frame Relay
Campos:
·         A primeira parte do DLCI.
·         O bit de Comando/Resposta (CR – Command/Response) indica se esse é um comando ou uma resposta.
·         O Bit de Extensão (Ext. Bit – Extension Bit) permite um cabeçalho de três ou quatro bytes para expansão do espaço de endereços se requerido.
·         A segunda parte do DLCI.
·         O bit de Notificação Antecipada de Congestionamento Explícito (FENC – Forward Explicit Congestion Notification) indica ao dispositivo que está recebendo esse quadro a ocorrência de um congestionamento.
·         O bit de Notificação Retroativa de Congestionamento Explícito (BENC – Backward Explicit Congestion Notification) é fixado por um comutador na rede Frame Relay para fazer com que o dispositivo do receptor saiba que os quadros que o receptor está transmitindo estão causando congestionamento.
·         O bit Elegível para Descarte (DE – Discard Eligible) indica que esse quadro deveria ser descartado primeiro, no caso de um congestionamento.
·         O bit de Extensão (EA - Extesion) permite um cabeçalho de três ou quatro bytes.
Os circuitos virtuais são de dois tipos:
·         Circuito Virtual Permanente (PVC): é um circuito configurado manualmente.
·         Circuito Virtual Comutado (SVC): quando um nó tem dados a serem enviados, um SVC é criado para funcionar e depois os dados são transmitidos através dele. Após isso, depois de um período de inatividade, ele é desligado ou removido. Isso garante a flexibilidade da rede, pois os dispositivos podem ser movidos sem que os caminhos virtuais precisem ser reconfigurados manualmente.