Baixe o app para aproveitar ainda mais
Prévia do material em texto
RE VI SÃ O: T CP /I P APLICAÇÃO TRANSPORTE INTERNET ACESSO À REDE Infraestrutura para Sistemas de Software SEMANA 1 Identificar as principais características que envolvem o universo de uma rede de computadores, sendo a Internet uma dessas redes. Compreender que a comunicação entre computadores somente é possível por meio de um modelo baseado em camadas, com a utilização de diversos protocolos padronizados. Reconhecer que, na Internet, há protocolos de comunicação adequados para transportar informações com a garantia de que elas cheguem ao destino intactas e na ordem em que foram enviadas. Compreender que outros protocolos não se preocupam com a confiabilidade e perdas de dados, mas sim em enviar os dados pela rede da melhor maneira possível. Entender por que a Web se fundamenta em pelo menos dois protocolos de comunicação, que são o TCP e o HTTP. Processo de rede para aplicações Representação das mensagens Formatação das mensagens Conexão ponto a ponto entre processos/ aplicações que executa em hosts diferentes Endereçamento lógico dos hosts Roteamento Acesso ao meio físico Transmissão binária Codificação/Decodificação de sinais Uma arquitetura de camadas nos permite discutir uma parcela específica e bem definida de um sistema grande e complexo. Essa simplificação tem considerável valor intrínseco, pois provê modularidade, tornando muito mais fácil modificar a execução do serviço prestado pela camada. Contanto que a camada forneça o mesmo serviço para a que está acima e use os mesmos serviços da que vem abaixo dela, o restante do sistema permanece inalterado quando a sua realização é modificada. A divisão em camadas proporciona um modo estruturado de discutir componentes de sistemas. A modularidade facilita a atualização de componentes de sistema. CAMADA DE APLICAÇÃO A camada de aplicação é onde residem aplicações de rede e seus protocolos. CAMADA DE TRANSPORTE A camada de transporte da Internet carrega mensagens da camada de aplicação entre os lados do cliente e servidor de uma aplicação. Há dois protocolos de transporte na Internet: TCP e UDP* (do inglês User Datagram Protocol – Protocolo de Datagrama de Usuário), e qualquer um pode levar mensagens da camada de aplicação. O TCP provê serviços orientados à conexão para suas aplicações. Alguns desses serviços são a entrega garantida de mensagens da camada de aplicação ao destino e controle de fluxo (i.e., adequação das velocidades do remetente e do receptor). O TCP também fragmenta mensagens longas em segmentos mais curtos e provê mecanismo de controle de congestionamento, de modo que uma origem reduz sua velocidade de transmissão quando a rede está congestionada. O protocolo UDP provê serviço não orientado à conexão para suas aplicações. É um serviço econômico que não oferece confiabilidade, nem controle de fluxo ou de congestionamento. Neste livro, chamaremos de segmento um pacote da camada de transporte. https://ava.univesp.br/webapps/blackboard/execute/courseMain?course_id=_8296_1 CAMADA DE REDE DA INTERNET A camada de rede da Internet é responsável pela movimentação, de um hospedeiro para outro, de pacotes da camada de rede, conhecidos como datagramas. O protocolo de camada de transporte da Internet (TCP ou UDP) em um hospedeiro de origem passa um segmento da camada de transporte e um endereço de destino à camada de rede, exatamente como você passaria ao serviço de correios uma carta com um endereço de destinatário. A camada de rede então provê o serviço de entrega do segmento à camada de transporte no hospedeiro de destino. ssa camada inclui o famoso protocolo IP, que define os campos no datagrama e o modo como os sistemas finais e os roteadores agem nesses campos. Existe apenas um único protocolo IP, e todos os componentes da Internet que têm uma camada de rede devem executá-lo. A camada de rede da Internet também contém protocolos de roteamento que determinam as rotas que os datagramas seguem entre origens e destinos. A Internet tem muitos protocolos de roteamento. Como vimos na Seção 1.3, a Internet é uma rede de redes e, dentro de uma delas, o administrador pode executar qualquer protocolo de roteamento. Embora a camada de rede contenha o protocolo IP e também numerosos outros de roteamento, ela quase sempre é denominada apenas camada IP, refletindo o fato de que ele é o elemento fundamental que mantém a integridade da Internet. Para levar um pacote de um nó (hospedeiro ou roteador) ao nó seguinte na rota, a camada de rede depende dos serviços da camada de enlace. Em especial, em cada nó, a camada de rede passa o datagrama para a camada de enlace, que o entrega, ao longo da rota, ao nó seguinte, no qual o datagrama é passado da camada de enlace para a de rede. Os serviços prestados pela camada de enlace dependem do protocolo específico empregado no enlace. Por exemplo, alguns desses protocolos proveem entrega garantida entre enlaces, isto é, desde o nó transmissor, passando por um único enlace, até o nó receptor. Note que esse serviço confiável de entrega é diferente do de entrega garantida do TCP, que provê serviço de entrega garantida de um sistema final a outro. Exemplos de protocolos de camadas de enlace são Ethernet, WiFi e o protocolo DOCSIS da rede de acesso por cabo. Uma analogia útil que podemos usar aqui é o envio de um memorando entre escritórios de uma empresa pelo correio de uma filial a outra. Suponha que Alice, que está em uma filial, queira enviar um memorando a Bob, que está na outra filial. O memorando representa a mensagem da camada de aplicação. Alice coloca o memorando em um envelope de correspondência interna em cuja face são escritos o nome e o departamento de Bob. O envelope de correspondência interna representa o segmento da camada de transporte – contém as informações de cabeçalho (o nome de Bob e seu departamento) e encapsula a mensagem de camada de aplicação (o memorando). Quando a central de correspondência do escritório emissor recebe o envelope, ele é colocado dentro de outro, adequado para envio pelo correio. A central de correspondência emissora também escreve o endereço postal do remetente e do destinatário no envelope postal. Nesse ponto, o envelope postal é análogo ao datagrama – encapsula o segmento de camada de transporte (o envelope de correspondência interna), que, por sua vez, encapsula a mensagem original (o memorando). O correio entrega o envelope postal à central de correspondência do escritório destinatário. Nesse local, o processo de desencapsulamento se inicia. A central de correspondência retira o memorando e o encaminha a Bob. Este, por fim, abre o envelope e retira o memorando. Camada física é movimentar os bits individuais que estão dentro do quadro de um nó para o seguinte. Os protocolos nessa camada de novo dependem do enlace e, além disso, do próprio meio de transmissão do enlace (p. ex., fios de cobre trançado ou fibra ótica monomodo). ENDEREÇAMENTO IPV4 Version: informa a versão do protocolo (4 bits) IHL: informa o tamanho do cabeçalho em palavras de 32 bits (4bits) Type of service: informa as classes de serviço (necessidades em termos de atraso, confiabilidade) (8 bits) Total length: informa o tamanho do datagrama (16 bits) Identification: identifica o datagrama (todos os fragmentos de um datagrama possuem o mesmo ID) (16 bits) Fragmentação (MTU de tamanho diferentes) DF (1bit): não fragmentar o datagrama MF (1bit): indica se há mais fragmentos de um datagrama – Último: bit 0 Fragment offset: localização do fragmento no datagrama. Múltiplos de 8 bytes - máximo de 8196 fragmentos Time to live: contador usado para limitar o tempo de vida útil de um datagrama (em segundos, até 255). Decrementado a cada roteador (salto ou hop) Protocol: identifica o protocolo de transporte (6 para TCP e 17 para UDP) Header Checksum: verifica a integridade do cabeçalho (recalculado a cada hop) Source and Destination Addresses: endereços de origem e destino CLASSES IPV4 Endereçamento Classfull Uso ineficiente do espaço de endereçamento, exaustão doespaço de endereços CIDR: classless interdomain routing (roteamento interdomínio sem classe) (RFC 1519) A porção de endereço de rede tem tamanho arbitrário Formato do endereço: a.b.c.d/x, onde x é o número de bits na parte de rede do endereço Classe A: 126 redes com 16 milhões de hosts cada Classe B: 16.384 redes com 65.536 de hosts cada Classe C: dois milhões de redes com 254 hosts cada Classe D: multicast Classe E: reservado para testes e novas implementações de TCP/IP MÁSCARA DE REDE Utilizada para definir a rede à qual o host pertence A rede é obtida a partir de um AND (bit a bit) entre o endereço do host e a máscara SUB-REDES A estrutura de endereçamento IP pode ser modificada localmente (a critério do administrador de rede), usando-se bits de endereçamento de máquina como um adicional para endereçamento de rede. ROTEAMENTO Determinar se ele tem suíte de protocolos ativa; Conhecer a rede de destino; Qual interface de saída é o melhor caminho para o destino. É um processo de retransmissão no qual os itens são encaminhados de uma localidade para outra. O aprendizado e manutenção do conhecimento da topologia de rede são as funções de roteamento. Comutação: tráfego transiente por meio do roteador, da interface de entrada para uma interface de saída Exigências para o roteamento: 1. 2. 3. Distância Administrativa: usada como medida de confiança da origem das informações de roteamento do IP. Ela é importante só quando roteador aprende sobre uma rota de destino de mais de uma origem. PROTOCOLOS TCP são padronizações que definem como se dá a comunicação e a utilização do meio físico na infraestrutura de comunicação (rede). Consideram semântica (regras) e sintaxe (formato). é um protocolo representante da camada de rede do modelo TCP/IP. A Camada de rede tem como funções principais: Ele é um protocolo que não garante que os dados chegaram intactos e sem erros ao destino. Dizemos que o IP oferece um serviço de melhor esforço aos protocolos da camada de transporte, como o TCP e o UDP. Endereçamento Determinação de caminhos: rota escolhida pelos pacotes entre a origem e o destino. Algoritmos de roteamento determinam os valores para a comutação Comutação (ou repasse): mover pacotes entre as portas de entrada e de saída dos roteadores HOST-HOST faz parte da camada de transporte do modelo TCP/IP. A camada de transporte é uma camada fim a fim, que liga a origem ao destino A origem aceita dados da camada de aplicação, e os divide em unidades menores em caso de necessidade. Em seguida passa-os para a camada de rede e garante que todas essas unidades cheguem corretamente à outra extremidade (no destino). Tudo deve ser feito com eficiência de forma que as camadas superiores fiquem isoladas das mudanças na tecnologia de hardware. UDP protocolo simplificado e de melhor esforço porque os segmentos UDP podem ser: perdidos/ entregues fora de ordem para a aplicação de destino. não há estabelecimento de conexão não há estado de conexão nem no transmissor, nem no receptor cabeçalho de segmento reduzido Considere, por exemplo, uma fábrica que precise transportar uma quantidade de carga muito grande a algum depósito localizado a milhares de quilômetros. Na fábrica, a carga é dividida e carregada em uma frota de caminhões. Cada caminhão viaja, de modo independente, pela rede de rodovias, estradas e cruzamentos ao depósito de destino. No depósito, a carga é descarregada e agrupada com o resto da carga pertencente à mesma remessa. Deste modo, os pacotes se assemelham aos caminhões, os enlaces de comunicação representam rodovias e estradas, os nós de comutação seriam os cruzamentos, e cada sistema final se assemelha aos depósitos. Assim como o caminhão faz o percurso pela rede de transporte, o pacote utiliza uma rede de computadores. Os sistemas finais, os nós de comutação e outras peças da Internet executam protocolos que controlam o envio e o recebimento de informações. Os sistemas finais ligados à Internet oferecem uma interface socket que especifica como o programa que é executado no sistema final solicita à infraestrutura da Internet que envie dados a um programa de destino específico, executado em outro sistema final. Essa interface socket da Internet é um conjunto de regras que o software emissor deve cumprir para que a Internet seja capaz de enviar os dados ao programa de destino. CAMADA DE TRANSPORTE Desempenha o papel fundamental de fornecer serviços de comunicação diretamente aos processos de aplicação que rodam em hospedeiros diferentes. Um protocolo da camada de transporte fornece comunicação lógica entre processos de aplicação que rodam em hospedeiros diferentes. Comunicação lógica nesse contexto significa que, do ponto de vista de uma aplicação, tudo se passa como se os hospedeiros que rodam os processos estivessem conectados diretamente; na verdade, eles poderão estar em lados opostos do planeta, conectados por diversos roteadores e uma ampla variedade de tipos de enlace. Processos de aplicação usam a comunicação lógica fornecida pela camada de transporte para enviar mensagens entre si, livres da preocupação dos detalhes da infraestrutura física utilizada para transportá-las. Protocolos da camada de transporte são implementados nos sistemas finais, mas não em roteadores de rede. No lado remetente, a camada de transporte converte as mensagens que recebe de um processo de aplicação remetente em pacotes de camada de transporte, denominados segmentos de camada de transporte na terminologia da Internet. Isso é (possivelmente) feito fragmentando-se as mensagens da aplicação em pedaços menores e adicionando-se um cabeçalho de camada de transporte a cada pedaço para criar o segmento de camada de transporte. Essa camada, então, passa o segmento para a de rede no sistema final remetente, onde ele é encapsulado em um pacote de camada de rede (um datagrama) e enviado ao destinatário. É importante notar que roteadores de rede agem somente nos campos de camada de rede do datagrama; isto é, não examinam os campos do segmento de camada de transporte encapsulado com o datagrama. No lado destinatário, a camada de rede extrai do datagrama o segmento de camada de transporte e passa-o para a camada de transporte, que, em seguida, processa o segmento recebido, disponibilizando os dados para a aplicação destinatária. Na internet são dois: TCP e UDP. UDP definido no (RFC 768), faz apenas o mínimo que um protocolo de transporte pode fazer. À parte sua função de multiplexação/demultiplexação e de alguma verificação de erros simples, ele nada adiciona ao IP. Na verdade, se o desenvolvedor de aplicação escolher o UDP, em vez do TCP, a aplicação estará “falando” quase diretamente com o IP. O UDP pega as mensagens do processo da aplicação, anexa os campos de número da porta de origem e de destino para o serviço de multiplexação/demultiplexação, adiciona dois outros pequenos campos e passa o segmento resultante à camada de rede, que encapsula o segmento dentro de um datagrama IP e, em seguida, faz a melhor tentativa para entregar o segmento ao hospedeiro receptor. Se o segmento chegar ao hospedeiro receptor, o UDP usará o número de porta de destino para entregar os dados do segmento ao processo de aplicação correto. Note que, com o UDP, não há apresentação entre as entidades remetente e destinatária da camada de transporte antes de enviar um segmento. Por essa razão, dizemos que o UDP é não orientado para conexão. Razões para algumas aplicações se adaptarem melhor ao UDP: Exemplo: DNS Melhor controle no nível da aplicação sobre quais dados são enviados e quando Não há estabelecimento de conexão Não há estados de conexão Pequeno cabeçalho de pacote. definido no (RFC 768), faz apenas o mínimo que um protocolo de transporte pode fazer. À parte sua função de multiplexação/demultiplexação e de alguma verificação de erros simples, ele nada adiciona ao IP. Na verdade, se o desenvolvedor de aplicação escolher o UDP, em vez do TCP, a aplicação estará “falando”quase diretamente com o IP. O UDP pega as mensagens do processo da aplicação, anexa os campos de número da porta de origem e de destino para o serviço de multiplexação/demultiplexação, adiciona dois outros pequenos campos e passa o segmento resultante à camada de rede, que encapsula o segmento dentro de um datagrama IP e, em seguida, faz a melhor tentativa para entregar o segmento ao hospedeiro receptor. Se o segmento chegar ao hospedeiro receptor, o UDP usará o número de porta de destino para entregar os dados do segmento ao processo de aplicação correto. Note que, com o UDP, não há apresentação entre as entidades remetente e destinatária da camada de transporte antes de enviar um segmento. Por essa razão, dizemos que o UDP é não orientado para conexão. Razões para algumas aplicações se adaptarem melhor ao UDP: 1. 2. 3. 4. TCP é orientado para conexão porque, antes que um processo de aplicação possa começar a enviar dados a outro, os dois processos precisam primeiro se “apresentar” ( handshake ) – isto é, devem enviar alguns segmentos preliminares um ao outro para estabelecer os parâmetros da transferência de dados. Trata-se de uma “conexão” lógica, com o estado comum residindo apenas nos TCPs nos dois sistemas finais em comunicação. Lembre-se de que, como o protocolo TCP roda apenas nos sistemas finais e não nos elementos intermediários da rede (roteadores e switches ), os elementos intermediários não mantêm o estado de conexão TCP. Uma conexão TCP provê um serviço full- duplex : se houver uma conexão TCP entre o processo A em um hospedeiro e o processo B em outro hospedeiro, os dados da camada de aplicação poderão fluir de A para B ao mesmo tempo em que os dados da camada de aplicação fluem de B para A. A conexão TCP é sempre ponto a ponto , isto é, entre um único remetente e um único destinatário. O multicast não é possível. Segmento TCP, que consiste em campos de cabeçalho e um campo de dados. O campo de dados contém uma quantidade de dados de aplicação O TCP vê os dados como uma cadeia de bytes não estruturada, mas ordenada. O uso que o TCP faz dos números de sequência reflete essa visão, pois esses números são aplicados sobre a cadeia de bytes transmitidos, e não sobre a série de segmentos transmitidos. Dois dos mais importantes campos do cabeçalho do segmento TCP são o de número de sequência, é o número do primeiro byte do segmento. e o de número de reconhecimento, O número de reconhecimento que o hospedeiro A atribui a seu segmento é o número de sequência do próximo byte que ele estiver aguardando do hospedeiro B. Esses campos são parte fundamental do serviço de transferência confiável de dados do TCP. CAMADA DE REDE - PLANO DE DADOS O papel primordial dos roteadores no plano de dados é repassar datagramas de enlaces de entrada para enlaces de saída; o papel primordial do plano de controle da rede é coordenar essas ações locais de repasse por roteador de modo que os datagramas sejam transferidos fim a fim, seguindo caminhos de roteadores entre os hospedeiros de origem e de destino. O transporte de pacotes de remetente para um destinatária ocorre através de: Repasse refere-se à ação local realizada por um roteador para transferir um pacote da interface de um enlace de entrada para a interface de enlace de saída apropriada. O repasse ocorre em escalas temporais muito curtas (em geral, alguns poucos nanossegundos) e, logo, normalmente é implementado no hardware . Roteamento refere-se ao processo de âmbito geral da rede que determina os caminhos fim a fim que os pacotes percorrem desde a origem até o destino. o repasse baseado em destino como dois passos: pesquisar um endereço IP de destino (“combinação”) e depois enviar o pacote para o elemento de comutação e à porta de saída especificada (“ação”) transportar pacotes de um hospedeiro remetente a um hospedeiro destinatário. O repasse é a função-chave realizada pela funcionalidade de plano de dados da camada de rede. SEMANA 2 Conhecer noções fundamentais sobre a modelagem da infraestrutura computacional para a implantação de aplicações em larga escala. Configurar um firewall baseado em filtro de pacotes e entender que, em função do alto índice de ataques a redes, um firewall é primordial em qualquer organização. Compreender que é necessário controlar tráfego de entrada e saída de dados de redes de computadores, garantindo a integridade aos serviços disponíveis aos usuários. Entender como o conteúdo da Web pode ser filtrado pelo Servidores Proxies. Compreender como as regras de filtragem são geradas. Entender a Relação dos Proxies com Firewalls (filtros de pacotes/datagramas). Conhecer os mecanismos de autenticação mais utilizados atualmente, em especial o OpenLDAP. Assimilar a importância de conhecer o funcionamento dos Web Servers, pois eles são os serviços/processos responsáveis por fornecer conteúdo aos usuários em toda a Internet. Compreender a complexidade de armazenar e disponibilizar os mais variados tipos de conteúdo para usuários que navegam na Internet. CAMADA DE APLICAÇÃO O núcleo do desenvolvimento de aplicação de rede é escrever programas que rodem em sistemas finais diferentes e se comuniquem entre si. a arquitetura da aplicação é projetada pelo programador e determina como a aplicação é organizada nos vários sistemas finais. Ao escolher a arquitetura da aplicação, é provável que o programador aproveite uma das duas arquiteturas mais utilizadas em aplicações modernas de rede: cliente-servidor ou P2P. Em uma arquitetura cliente-servidor , há um hospedeiro sempre em funcionamento, denominado servidor , que atende a requisições de muitos outros hospedeiros, denominados clientes . Observe que, na arquitetura cliente-servidor, os clientes não se comunicam diretamente uns com os outros; por exemplo, na aplicação Web, dois navegadores não se comunicam de modo direto. Outra característica dessa arquitetura é que o servidor tem um endereço fixo, bem conhecido, denominado endereço IP (que discutiremos em breve). Em razão dessa característica do servidor e pelo fato de ele estar sempre em funcionamento, um cliente sempre pode contatá-lo, enviando um pacote ao endereço do servidor. Algumas das aplicações mais conhecidas que empregam a arquitetura cliente-servidor são Web, FTP, Telnet e e-mail. Em aplicações cliente-servidor, muitas vezes acontece de um único hospedeiro servidor ser incapaz de atender a todas as requisições de seus clientes. Por exemplo, um site popular de redes sociais pode ficar logo saturado se tiver apenas um servidor para atender a todas as solicitações. Por essa razão, um datacenter , acomodando um grande número de hospedeiros, é usado com frequência para criar um servidor virtual poderoso. Em uma arquitetura P2P , há uma dependência mínima (ou nenhuma) nos servidores dedicados nos datacenters . Uma das características mais marcantes da arquitetura P2P é sua autoescalabilidade . Por exemplo, em uma aplicação de compartilhamento de arquivos P2P, embora cada par gere uma carga de trabalho solicitando arquivos, também acrescenta capacidade de serviço ao sistema distribuindo arquivos a outros pares. As arquiteturas P2P também possuem uma boa relação custo- benefício, visto que, em geral, não requerem infraestrutura e largura de banda de servidor significativas (ao contrário de projetos cliente-servidor com datacenters ). Entretanto, devido à sua estrutura altamente descentralizada, as aplicações P2P enfrentam desafios de segurança, desempenho e confiabilidade. O HTTP é o protocolo que faz com que a World Wide Web realmente funcione e, para a alegria de muitos, ele é um protocolo cliente/servidor sem informações de estado e extremamente elementar. No paradigma HTTP, o iniciador de uma conexão sempre é um cliente (normalmente um navegador). O cliente requisita ao servidor o “conteúdo” de um determinado URL. O servidor responde com um fluxo de dados ou com algum tipo de mensagem de erro. O cliente então pode continuar requisitandooutro objeto. O HTTP é o protocolo que faz com que a World Wide Web realmente funcione e, para a alegria de muitos, ele é um protocolo cliente/servidor sem informações de estado e extremamente elementar. No paradigma HTTP, o iniciador de uma conexão sempre é um cliente (normalmente um navegador). O cliente requisita ao servidor o “conteúdo” de um determinado URL. O servidor responde com um fluxo de dados ou com algum tipo de mensagem de erro. O cliente então pode continuar requisitando outro objeto. Como o HTTP é tão simples, você pode facilmente se transformar em um navegador Web rudimentar utilizando telnet. Como a porta padrão para o serviço HTTP é a porta 80, basta enviar um telnet diretamente a essa porta no servidor Web de sua preferência. Assim que estiver conectado, você pode emitir comandos HTTP. O comando mais comum é GET, que requisita o conteúdo de um documento. Normalmente, GET / é o que você deseja, já que ele solicita o documento-raiz (normalmente a home page) de qualquer que seja o servidor a que você se conectou. O HTTP diferencia letras maiúsculas de minúsculas; portanto, você deve se certificar de que digitou os comandos em letras maiúsculas. FIREWALL Regula tráfego entre redes existentes Impede a propagação de dados nocivosque digitou os comandos em letras maiúsculas. É um ponto de partida para a política de segurança Limita a exposição da rede O que faz: o recebimento de dados baseados em uma fonte ou destino o acesso a dados baseados em uma fonte ou destino dados baseados em conteúdo O próprio Firewall deve ser imune à penetração, permite conexões com uma rede interna e reporta o tráfego na rede e as atividades do Firewall. Além disso pode bloquear: Toda solicitação chega ao Firewall Somente tráfego autorizado passa pelo Firewall Proteger uma rede contra usuários internos Proteger uma rede contra conexões que não passam por ele Proteger contra ameaças completamente novas O que não faz: Filtragem de pacotes Network Address Translation (NAT) Proxy de Aplicação Monitoramento e RegistroF U N ÇÕ ES FILTRO DE PACOTES SERVIDORES PROXY DE CI SÃ O DE SE M PE N H O Controle do tráfego que entra e sai Incrementa a segurança Transparente aos usuários Grande variedade no mercado Endereço IP de origem Endereço IP de destino Protocolos TCP, UDP, ICMP Portas TCP ou UDP origem Portas TCP ou UDP destino Tipo de mensagem ICMP Não tratam protocolos da camada de aplicação Dependem de soluções complementares Causam atraso no roteamento O que faz: Como (métodos): O que não fazem: Problemas: Spoofing é um ataque cibernético moderno em que o hacker se passa por uma pessoa ou organização de confiança. Assim, leva o usuário a executar as ações que ele necessita para enganá-lo ou enganar uma rede inteira. O objetivo é disfarçar a origem da comunicação, fazendo com que a vítima acredite que está conversando com outra pessoa ou organização Assumem requisições de usuários de uma rede Atuam em nome do cliente de uma forma transparente Não permitem que pacotes passem diretamente entre cliente e servidor Método da Conexão Direta Método do Cliente Modificado Método do Proxy Invisível Permite ao usuário acesso direto aos serviços na Internet Possui bons mecanismos de log Provê uma ótima separação entre as redes Cada serviço possui o seu servidor proxy Deve ser desenvolvida uma nova aplicação para cada novo serviço Existem alguns serviços inviáveis O que faz: Como (métodos): Vantagens: Desvantagens: utiliza o cabeçalho do pacote baseado em informações fornecidas pelo serviço melhor que o proxy por estar em nível mais baixo AU DI TO RI A melhor por permitir auditoria sobre o controle do tráfego OUTROS TIPOS Filtragem de pacotes por ACL - Controle de Acesso O método mais usado para configurar filtros de pacotes, implementando um servidor proxy com o Squid (que permite compartilhar a conexão entre vários nós, servindo como intermediário entre eles e a Internet). Padrão – filtram baseadas no endereço IP Estendidas- procuram ‘mais dentro’ do cabeçalho do pacote Firewalls Bastion Hosts Hosts fortemente protegidos Único computador da rede que pode ser acessado pelo lado de fora do firewall Pode ser projetado para ser um servidor Web, servidor FTP, dentre outros Chamariz para crackers Função de coletar dados de tentativas de invasão Ferramentas de registros de logs são mantidas o mais seguro possível Honey Pot EXEMPLOS: Arquitetura de FIREWALL Screened Host Sem sub-rede de proteção Bastion host realiza o papel de procurador – só ele passa pelo roteador Screened subnet Proteger, peneirar e investigar É a mais segura. DMZ Sub-rede entre a rede externa e a protegida Somente a rede interna tem acesso ao Bastion Host Somente a sub-rede DMZ é conhecida pela Internet SOLUÇÕES COMPLEMENTARES FIREWALL Softwares capazes de detectar atividades suspeitas Utiliza-se de padrões conhecidos de comportamento de intrusos Podem analisar o tráfego interno, externo e entre eles PRINCÍPIOS: ANÁLISE DE TRÁFEGO CONTROLE DE ACESSO PREMISSAS HOSTS SISTEMAS REDE ATORES ENVOLVIDOS NO PROCESSO Procura de padrões específicos. ASSINATURA: porém, há necessidade de conhecimento prévio do padrão Cada rede tem determinada característica (estatística) e procura-se por alterações nestas característica (pico) COMPORTAMENTO: porém, não é muito eficaz. método ou conjunto deles, cujo objetivo é restringir a utilização de determinados recursos a um sistema por certos usuários ou grupos de usuários PARA ESPECIFICAR: Quais recursos podem ser acessados Quais operações podem ser realizadas sobre os recursos Quais os componentes estão autorizados a desempenhar determinadas operações Ter certeza de que os dados estão acessíveis quando forem necessários e onde forem necessários DISPONIBILIDADE Ter certeza de que os dados não foram modificados intencionalmente ou acidentalmente INTEGRIDADE Somente os indivíduos autorizados a acessar os dados podem fazê-lo CONFIDENCIALIDADE Backup Redundância Assinatura Digital Criptografia Controle de Acesso CLASSIFICAÇÃO DO CONTROLE DE ACESSO Controle de acesso aos recursos do sistema operacional Proteção de arquivos e objetos Controla recursos via rede Atuam dentro de hosts (composto por uma interface e um banco de dados) Com mecanismos próprios de controle Implementados por meio de firewalls: filtros de pacotes e proxies Roteadores, switches Aquele que solicita acesso a algum tipo de informação. SUJEITO O que é acessado pelo sujeito OBJETO Usado para mediar um acesso;Ter controle que garanta a integridade do seu funcionamento. MONITOR DE REFERÊNCIA PROCESSO DE ACESSO MECANISMO DE CONTROLE DE ACESSO DAC RBAC CENTRALIZADO GERÊNCIA DE IDENTIDADES LDAP Identificar um sujeito junto a um objeto Responsabilizar individualmente por ações no sistema IDENTIFICAÇÃO Confirma a identidade Utiliza algo que o usuário sabe e/ou tem e/ou com característica do indivíduo. AUTENTICAÇÃO Determina se o sujeito está autorizado a acessar um recurso particular Faz parte de qualquer sistema operacional e é desejável em aplicações AUTORIZAÇÃO MECANISMOS DE AUTENTICAÇÃO: Senhas Estáticas Senhas Dinâmicas Chaves Criptográficas Smartcard Biometria Normatizações de como o sujeito/usuário acessa os objetos O proprietário do recurso é responsável por atribuir permissões. Exemplo: ACL Todas as permissões são atribuídas a papéis. Os papeis representam funções e usuários são atribuídos aos papéis. Mais usado em autenticação simples. Encripta somente a senha. Autenticação baseada EAP, PAP, CHAP. O objetivo é automatizar as tecnologias de identificação, autenticação e autorização DIRETÓRIO: É um catálogo que possui informações centralizadas de usuários e recursos. O formato de dados é hierárquico. Protocolo de acesso: LDAP (nele os usuários requisitam informações de recursos e as aplicações requisitam informações dos usuários). Centralizar as informações do usuários. A base é um serviço de diretórios, queé um banco de dados, otimizado para leitura e que suporta sofisticados métodos de busca. É ajustado para dar respostas rápidas a grandes volumes de dados Ex. OpenLDAP (As informações são organizadas em um estrutura hierárquica em árvore). SERVIDORES WEB São programas de computador responsáveis por aceitar requisições HTTP HyperText Transport Protocol é um protocolo no nível de aplicação para sistemas distribuídos, colaborativos, que trocam informações por hipermídia (HTML, Links, etc) Uma das características dos servidores web é a troca de informações (request e response) entre o cliente e o servidor. O servidor web espera, trata e responde as requisições. FORMATO DE UMA REQUISIÇÃO: L1: Linha inicial (request-line ou status-line) L2: Cabeçalho da mensagem (opcional) L3: Linha vazia (CRFL) L4: Corpo da mensagem MÉTODOS GET POST PUT solicita um recurso no servidor envia dados para serem processados no servidor Substitui todas as atuais representações de recursos de destino pela carga de dados da requisição DELETE Usado para excluir o recurso da requisição PROTOCOLO SERVIDOR ARQUIVO Reconhecer os conceitos e características da computação em nuvem, os modelos de serviço, atores, exemplos de provedores e modelos de implantação; Reconhecer as principais ferramentas/middlewares para IaaS, SaaS e PaaS no contexto atual e suas características. Compreender os principais conceitos sobre data centers, os quais consistem em ambientes especializados para hospedagem de recursos computacionais. EXEMPLO: https://www.univesp.br/cursos/ HTTP/HTTPS nome do servidor: www.univesp.br nome do arquivo: /cursos/ Navegador quebra a URL em 3 partes Navegador se comunica com servidor de nomes: Traduz o nome do servidor www.univesp.br para um IP (104.24.124.188) É criada então uma conexão entre o navegador e o servidor na porta 80 De acordo com o protocolo HTTP, o navegador envia uma solicitação para obter o arquivo desejado O servidor então envia o texto da página para o navegador O navegador lê o arquivo e formata a página na tela Porta 80 é padrão para os Servidores Web Todos os sites da Web, sejam eles estáticos ou dinâmicos (conteúdo multimídia), fornecem conteúdo aos clientes por meio dos servidores Web + utilizado/ + comum WEB SERVER Possibilita o acesso aos servidores de compartilhamento de arquivos, emails, jogos online, etc. SEMANA 3 O paradigma de computação em nuvem só é possível em razão dos recursos computacionais serem transformados em serviços, os quais podem ser acessados via rede de comunicação. COMPUTAÇÃO EM NUVEM: É uma tecnologia de computação que utiliza a Internet e servidores remotos interligados via uma estrutura de comunicação para armazenar dados e hospedar aplicações que podem ser acessíveis, utilizando protocolos e padrão da WWW (World Wide Web) Faz uso de APIs (Application Programming Interfaces) • Independente de localização e de dispositivos • Faz uso de tecnologias de virtualização • Confiabilidade • Manutenção • Segurança • Desempenho • Agilidade para propor novas soluções • Serviço sob demanda • Pagamento pelo serviço utilizado (recursos alocados) Principais Características • Aumento da capacidade de processamento dos processadores modernos • Tecnologia de virtualização • Armazenamento distribuído de dados • Gerenciamento automatizado de aplicações e da infraestrutura • Acesso mais barato à conexão de Internet • Servidores mais baratos e acessíveis para serem utilizados para executar aplicações Fatores que estimulam a adesão à nuvem: Na visão do desenvolvedor: É uma extensão de modelos distribuídos de desenvolvimento de software O software é composto de componentes de terceiros, que se ligam por meio de APIs. A execução do software ocorre de maneira distribuída em diversos hosts/computadores/servidores. A propriedade é distribuída entre diversas organizações. Geralmente, o código fonte não está disponível para componentes de terceiros Implantação: Pública Privada Comunitária Híbrida Permite que os sistemas e os serviços sejam acessados pelo público em geral, o que tende a deixá-la menos segura por conta da abertura ao público Permite que os sistemas e os serviços sejam acessados dentro de uma organização, o que faz dela, a princípio, um ambiente mais seguro para executar e acessar os serviços Permite que os sistemas e os serviços sejam acessados por um grupo de organizações É um misto de nuvem pública e privada. No entanto, as atividades críticas são feitas utilizando a nuvem privada enquanto as não críticas são realizadas utilizando a nuvem pública Modelo de Serviços: IaaS Provisão em geral de rede de comunicação e hardware para processamento e armazenamento de dados Computação em Grade Computação Utilitária Computação como Serviço Evolução Histórica: Componentes: Clientes Servidores Distribuídos Data Centers Dispositivos que são usados pelos usuários para interagir com os servidores presentes do Data Center São os hardwares (compostos de CPU, Memória, Discos) que em geral estão geograficamente distribuídos para permitir escalar aplicações para diferentes clientes e países. Coleção de servidores distribuídos, em que a aplicação é armazenada e pode ser acessada por meio de protocolos padronizados da WWW Rackspace Amazon EC2 Utilizar uma infraestrutura segura por um período de tempo. Sem custo de manutenção de hardware. Possibilidade de escalar o hardware para mais ou menos recursos desejáveis. A Infraestrutura como Serviço (IaaS) é a mais simples das três categorias, já que funciona praticamente da mesma forma, independentemente do fornecedor de nuvem escolhido. De forma geral, a IaaS oferece uma infraestrutura de TI automatizada e escalonável de: armazenamento, hospedagem, redes de seus próprios servidores globais, cobrando apenas pelo que o usuário consome. • Em vez de adquirir licenças de software, ou servidores próprios, as empresas podem simplesmente alocar recursos de forma flexível a partir das suas necessidades. SaaS De uma forma transparente, o software/aplicação que o usuário utiliza ou deseja implantar, faz uso dos sistemas operacionais virtualizados e de toda a infraestrutura de comunicação e de processamento PaaS Middlewares e sistemas operacionais, em conjunto com a infraestrutura de comunicação Google App Engine Microsoft Azure Utilizar um software específico sem se preocupar com manutenção de servidores e custos de desenvolvimento Utilizar uma plataforma de nuvem segura e executar sua aplicação sem o custo e a complexidade de comprar e gerenciar hardware e software A Plataforma como Serviço (PaaS) é o modelo de maior dificuldade para ser definido. A ideia é fornecer todos os conceitos básicos da IaaS, assim como as ferramentas e recursos necessários para desenvolver e gerenciar aplicativos com segurança sem precisar se preocupar com a infraestrutura. Os servidores que hospedam sites são exemplos de PaaS. O Software como Serviço (SaaS) é o local onde um software é hospedado por terceiros e pode ser acessado pela web, geralmente bastando um login. • Neste caso, a empresa ou usuário contrata um plano de assinatura e utiliza os programas necessários para os negócios. • Assim, o SaaS é muito mais interessante para o uso de aplicativos específicos, como os de gestão de relacionamento com o cliente (CRM). TOTAL CONTROLE ECONOMIA DE ESCALA Economia de escala ocorre quando uma empresa aumenta a quantidade total de produtos fabricados e alcança a redução do custo médio de produção. MIDDLEWARE O que justifica a existência: As aplicações modernas são desenvolvidas para serem executadas em escala, seja em ambientes on-premises (locais) ou em nuvem pública. O middleware é o elemento- chave para montar o ambiente de aplicações com recursos fundamentais unificados necessário para essas aplicações. Também pode ser utilizado para processamento distribuído e paralelo com ações que ocorrem em tempo real. Todos os tipos de middleware executam funções de comunicação mas podem incluir também: Autenticação; Gerenciamentode transações; Consulta de mensagens; Servidores de Aplicativos; Servidores Web. OpenStack e CloudStack são exemplos de middleware Permite a comunicação e o gerenciamento de dados para aplicações distribuídas. pode ser usado para: Otimizar aplicações: Desenvolver novas aplicações Integração: Interfaces: Transmissão de dados: Automação Inteligente; Melhora o desempenho e também a portabilidade de aplicações Trabalhar com plataformas considerando a padronização da execução, linguagens de programação e framework. Permite integrar sistemas internos aos sistemas externos. permite conectar serviços distintos utilizando uma camada comum acessados por meio de uma API. Possibilidade de trocar informações de forma assíncrona com um intermediador de dados, em que estes podem ser compartilhados entre várias aplicações. São softwares de código aberto para criar nuvens de infraestrutura como serviço (IaaS). Ambos têm como objetivo fornecer um conjunto de componentes de código aberto que, juntos, oferecem as funções necessárias para gerenciar nuvens que possuem até milhares de servidores individuais. São voltados para provedores de serviços que criam nuvens públicas e para empresas que consolidam seus recursos em nuvens privadas. Facilitam desenvolver novas soluções Ocultam a complexidade relacionada à comunicação com dispositivos e protocolos Fornecem APIs para integrar aplicações de terceiros Ajudam a criar soluções de forma mais rápida e escalável. OpenStack e CloudStack podem: alocar máquinas virtuais para servidores individuais gerenciar switches criar e gerenciar redes virtuais, sistemas de armazenamento de objetos e blocos uma interface de gerenciamento de computação em nuvem para dar suporte a todos esses componentes Arquitetura Modular com 11 componentes: keystone nova horizon swift cinder glance neutron heat ceilometer trove sahara Identity Dashboard Compute Object Storage Block Storage Image Service Networking Orchestration Telemetry Database Service Data Processing Compreender os principais conceitos sobre virtualização, os quais consistem em ambientes especializados para hospedagem de recursos computacionais; Identificar tecnologias de virtualização, as quais permitem abstrair um conjunto de recursos (por exemplo, computacionais ou de comunicação); Compreender os fundamentos, tipos e capacidades da virtualização; Entender as diferenças entre emulação x virtualização/li> Compreender os conceitos básicos sobre containers; Conhecer e executar atividades práticas com ferramentas disponíveis para virtualização. SEMANA 4 VIRTUALIZAÇÃO O conceito de virtualização surgiu na década de 60, quando a IBM introduziu no mercado o mainframe S/370 no qual era possível a criação de máquinas virtuais logicamente separadas, dando ao usuário a ilusão de que estaria acessando diretamente uma máquina física. Esta solução permitiu que os usuários deste tipo de equipamento, que era de alto custo, utilizassem a totalidade dos recursos da máquina, trazendo um melhor retorno de investimento para o usuário. partições virtuais, também chamadas de máquinas virtuais (MVs) permitem a execução várias tarefas, ou seja, vários aplicativos e processos ao mesmo tempo e de forma concorrente sobre os mesmos recursos. Desta forma uma máquina virtual consiste em um ambiente operacional auto-suficiente que abstrai as características de hardware e software da máquina física na qual ela está sendo executada. Possível em razão do Monitor de Máquina Virtual (Virtual Machine Monitor - VMM, também conhecido por hypervisor). Integridade: Tudo que é requisitado para acessar o hardware deve ser alocado de forma explícita pelo monitor. Eficiência: Que muitas instruções do processador virtual possam ser executadas diretamente pelo processador real. Equivalência: O comportamento de execução deve ser semelhante ao da máquina real Processamento (aplicações e sistema operacional ) é realizado diretamente sobre o processador físico Instruções privilegiadas: são tratadas pelo sistema de virtualização Acesso a dispositivos: intermediado pelo sistema de virtualização Monitor de Máquina Virtual: é um componente de software responsável pela criação, isolamento e preservação do estado da máquina virtual. É responsável pela orquestração de acesso aos recursos do sistema que hospeda as máquinas virtuais, mantendo controle sobre os recursos compartilhados por estas, tais como, processadores, dispositivos de entrada e saída, memória e armazenamento. Também é função do VMM escalonar qual máquina virtual vai executar a cada momento, semelhante ao escalonador de processos do sistema operacional. Devem possuir três características: Os MMV lidam ainda com: A virtualização é a capacidade de se executar simultaneamente, mais de um sistema operacional em um único servidor físico Organizar vários servidores virtuais em um conjunto reduzido de servidores físicos. Consolidação de aplicações Ambientes de teste e homologação de sistemas Execução de aplicações que utilizam diferentes SO´s Migração de sistemas Provisionamento de servidores Recuperação de desastres MOTIVAÇÃO PELA VIRTUALIZAÇÃO: Diminuir custos com TI (hardware e software) .Diminuir custos com energia elétrica. Diminuir lixo tecnológico. Flexibilidade e agilidade para criação de ambientes. Administrar e gerenciar melhor os ambientes de testes ou produção MOTIVAÇÃO: A virtualização pode ocorrer no: Nível da linguagem de programação Nível de biblioteca Nível do sistema operacional Nível de abstração de hardware Nível do conjunto de instruções TIPOS DE VIRTUALIZAÇÃO Total: interpretada por emulação de hardware por prover uma máquina virtual com emulação completa do hardware subjacente. Neste caso, um sistema operacional não modificado é executado utilizando um VMM para receber e traduzir as instruções em tempo real para as máquinas virtuais. Esta técnica requer que cada característica do hardware seja devidamente refletida na máquina virtual, incluindo todo o conjunto de instruções de E/S, acesso à memória e todos os demais elementos utilizados por um software que fosse executado em uma máquina real. Ocorre sem a inclusão de otimizações ao SO para virtualização. Perdas significativas de desempenho porque presenta sobrecarga, pois o Monitor de Máquina virtual deve oferecer à Máquina Virtual uma imagem semelhante a um sistema real, com: BIOS virtual; Espaço de memória virtual; Gerenciamento de memória virtual; Dispositivos virtuais Permite a execução de sistemas operacionais não modificados, o que é ideal principalmente quando os códigos fonte do sistema não estão disponíveis (Microsoft) Paravirtualização: é a possibilidade de modificar a interface entre o VMM e os sistemas convidados, oferecendo a estes um hardware virtual que é similar mas não idêntico ao hardware real. Na paravirtualização o sistema operacional da máquina virtual tem conhecimento de que está operando em um ambiente virtualizado, tendo o seu código modificado, removendo todas as instruções que poderiam fazer acesso direto aos recursos físicos e que venham a comprometer a integridade das máquinas virtuais, substituindo-as por chamadas explícitas ao VMM [LP10]. O VMM, por sua vez, provê interfaces de comunicação para operações críticas de kernel, como gerenciamento de memória, controle de interrupções e time keeping. Técnica de virtualização em que o SO hóspede é modificado para otimizar o desempenho. O SO pode chama o monitor de máquinas virtuais para executar uma instrução específica (recursos usados de forma apropriada) A desvantagem está na necessidade de modificar o sistema operacional. Isso acarreta implicações para os sistemas operacionais sem código fonte disponível, tais como Windows 2000/XP/Vista/8, tendo assim, desvantagens de compatibilidade e portabilidade A vantagem dessa arquitetura é que suas máquinas virtuais geralmente superam em nível de desempenho as máquinas virtuais implementadas utilizando a arquitetura de VirtualizaçãoTotal. Virtualização Assistida por Hardware: utiliza suporte de hardware para virtualização, com intuito de auxiliar na redução do impacto da camada de virtualização utilizando novas features, diretamente no processador. Estes aprimoramentos, como por exemplo as tecnologias de virtualização da Intel (VT-x) e AMD (AMD-v) privilegiam a execução de instruções de CPU, através de uma tecnologia que permite que o VMM seja executado em um modo que privilegia as chamadas que são automaticamente capturadas pelo VMM, removendo a necessidade de tradução binária ou paravirtualização. Nessa técnica, o estado da máquina virtual é armazenado no Virtual Machine Control Structures (VT-x) para família de processadores Intel ou Virtual Machine Control Blocks (AMD-V) para processadores AMD Esta arquitetura também permite que múltiplos sistemas operacionais não modificados sejam executados em paralelo. Assim, todos os sistemas operacionais são capazes de rodar sobre o mesmo processador, realizando acessos diretamente ao hardware, ou seja, sem a emulação de um processador Hardware Partitioning: técnica usual quando temos que configurar um servidor físico, um desktop, ou notebook, etc Hosted: virtualização é realizada com o auxílio de um sistema operacional hospedeiro Stand alone/Bare Metal: A virtualização é realizada sem auxílio de um sistema operacional hospedeiro Tipos de Sistema de Virtualização: EMULAÇÃO Todas as instruções são executadas via software O desempenho tende a cair VIRTUALIZAÇÃO As instruções do sistema operacional em uma VM são repassadas para uma máquina real executar O desempenho tende a ser melhor A implementação da virtualização normalmente acontece por meio da: O ambiente que é virtualizado e que corresponde ao sistema operacional e aplicações deste SO. A máquina virtual de processo somente existirá enquanto o processo correspondente a ela estiver em execução Máquina Virtual Hypervisor Gerenciamento dos recursos da máquina virtual, trata-se de uma aplicação que implementa uma camada de virtualização, o que permite que diversos SOs funcionem sobre um mesmo hardware de forma simultânea. Sempre esta presente enquanto o host/computador estiver ligado. CONTAINERS é um ambiente isolado. Docker: é uma plataforma open source escrita na linguagem de programação Go que agrupa partes de softwares de um sistema de arquivo completo e que abrange todos os recursos necessários para a sua execução. É uma plataforma de containers. DIFERENTEMENTE DOS AMBIENTES VIRTUALIZADOS: Container fica mais leve se comparado a VM São mais rápidos no boot Economiza recursos Economia de recursos Maior disponibilidade dos sistemas Facilita o gerenciamento Replicação e padronização Tudo pode ser instalado no servidor e é armazenado nos containers. Dessa forma, os mesmos softwares e as suas versões podem ter uma execução facilitada em qualquer ambiente de desenvolvimento. O avanço tecnológico na área de comunicação de dados, com o aumento da capacidade de banda passante e da capilaridade da rede, e da redução de custos e de latência. No entanto, o avanço tecnológico mais importante se deu na área da virtualização. Esses fatores lançaram os pilares do que hoje conhecemos como computação em nuvem (cloud computing). A virtualização do hardware, dos ambientes de desenvolvimento e da execução de serviços - capacidade de prover uma infraestrutura de computação como serviço foi beneficiada pela evolução e amadurecimento do conceito de virtualização. virtualização proporciona um alto grau de portabilidade e de flexibilidade permitindo que várias aplicações, de sistemas operacionais diferentes, executem em um mesmo hardware. A tecnologia de base da computação em nuvem é a virtualização. Assim, o componente fundamental é a noção de máquina virtual que permite a definição de servidores para executar aplicações em geral. Os servidores virtuais são criados com base em uma capacidade de processamento (número de processadores), memória, armazenamento, interfaces de rede e o software que executam. O software a ser executado forma a imagem da máquina virtual e possui todos os aplicativos e programas necessários, incluindo o próprio sistema operacional. O emprego da virtualização o uso de recursos por demanda permitindo que um usuário, se necessário, solicite, e pague, por mais recursos. Da mesma forma, um usuário pode devolver os recursos em excesso e não pagar mais pelo seu uso. Essa flexibilidade é denominada de elasticidade e representa uma resiliência às aplicações computacionais, isso é, uma capacidade de adaptação às modificações de carga computacional. A tecnologia de base da computação em nuvem é a virtualização. Assim, o componente fundamental é a noção de máquina virtual que permite a definição de servidores para executar aplicações em geral. Os servidores virtuais são criados com base em uma capacidade de processamento (número de processadores), memória, armazenamento, interfaces de rede e o software que executam. O software a ser executado forma a imagem da máquina virtual e possui todos os aplicativos e programas necessários, incluindo o próprio sistema operacional. A computação em nuvem é, basicamente, a utilização massiva da virtualização para a criação de um modelo de negócio. A computação em nuvem é a implantação do conceito de computação como um serviço público e, em relação às grades computacionais, ela apresenta duas novidades. Inicialmente, a computação em nuvem é um modelo de negócio onde um usuário paga apenas pelo o que consome de recursos (modelo pay-as-you-go) e o provedor do serviço mantém uma infraestrutura física (data center) que ele amortiza os custos de manutenção e investimentos compartilhando e alugando seus recursos a diferentes usuários. Esse é o berço da computação em nuvem: oferecer acesso a software (aplicações), a plataformas e a hardware como serviços disponíveis na Internet. A definição do NIST elencou cinco características essenciais, denominados de atributos de serviços, que a computação em nuvem deve ter: serviços por demanda na forma selfservice, acesso universal (ubíquo), conjunto de recursos (pool), contabilização de recursos e elasticidade. O modelo SaaS provê serviços de computação para o usuário final. Ele consiste basicamente no aluguel de uma aplicação já operacional sem a necessidade que os usuários passem por fases de aquisição, configuração e manutenção dessa aplicação. No SaaS, o software está pronto para a ser usado. Os serviços oferecidos executam em plataformas computacionais concebidas para serem utilizadas por um grande número de usuários, das mais diferentes organizações e localizações geográficas. A forma de acesso ao serviço é através da Internet, usualmente a partir de um navegador. São exemplos desses serviços o Google Drive, o Gmail, Hotmail, Dropbox, SQL Azure e Oracle on Demand. Além disso, existem softwares disponíveis para e-Science onde cientistas, a partir de navegados web, submetem seus dados a simulações e análise de serviços. Nesse modelo, o usuário enxerga apenas o software que precisa usar e não tem conhecimento de onde, realmente, estão localizados os recursos empregados, nem quais linguagens de programação foram usadas no desenvolvimento do serviço, nem o sistema operacional e o hardware sobre o qual a aplicação executa. SaaS PaaS No modelo PaaS, o cliente final são os desenvolvedores de aplicações em software. Esse modelo fornece a seus clientes um ambiente completo composto por todos os recursos necessários para o desenvolvimento de software em uma ou mais linguagens de programação tais como compiladores, depuradores, bibliotecas e um sistema operacional. É importante salientar que o ambiente de desenvolvimento pode ter limitações quanto às linguagens de programação, gerenciadores de banco de dados, sistema operacional, etc, ou seja, ele não é uma plataforma completa genérica, mas sim uma plataforma completa para uma determinada finalidade. Além do desenvolvimento de aplicações, no modeloPaaS, a plataforma pode ser “alugada” para hospedar sites web ou para prover serviços do tipo SaaS. São exemplos de PaaS, o Windows Azure Platform, Force.com, Google AppEngine, entre outros. O IaaS, que é um modelo de provimento de serviços destinado a uma equipe de tecnologia da informação (TI). Aqui é feito o fornecimento de um sistema computacional composto por processadores, memória e armazenamento. Nesse caso, é necessário instalar e configurar, por conta própria, todos os recursos necessários a utilização desse sistema, tais como, compiladores, banco de dados e, inclusive, o próprio sistema operacional. Em relação aos modelos de serviços anteriores, a tarifação no IaaS considera a quantidade de recurso que é destinado ao cliente, durante um certo período de tempo, sem considerar se está ou não sendo efetivamente empregado. Alguns exemplos de provedores IaaS são o Windows Azure, Amazon Elastic Compute Cloud (EC2), Citrix, Eucalyptus, e o Rackspace Cloud. IaaS Dos modelos de implantação: Nuvens públicas: são aquelas que seguem o conceito tradicional da computação em nuvem, isso é, fornecer acesso aos recursos computacionais por demanda. Dessa forma, nas nuvens públicas, os recursos são provisionados através da Internet e com uma granularidade fina, ou seja, se aloca e usa apenas o necessário. Tipicamente, os recursos são externos a infraestrutura do usuário e a tarifação é feita em função da utilização dos recursos. É importante salientar que o termo “público” não significa acesso gratuito aos recursos da nuvem, mas sim que qualquer público pode usá-la mediante o respeito às suas regras de utilização e tarifação. Normalmente, as nuvens públicas oferecem os três modelos de serviços (SaaS, PaaS e IaaS). Os recursos computacionais, como processadores, memória e armazenamento, são localizados dentro de um ou mais data centers, pertencentes a uma única organização que fornece o serviço de computação em nuvem. Os provedores de computação em nuvem, como o Google, Windows Azure, seguem esse modelo de implantação. Nuvens privadas: possuem uma infraestrutura que é operacionalizada e utilizada por uma única organização. A gestão e a localização dos recursos computacionais podem ser tanto da própria organização como terceirizado. Na realidade, esse tipo de nuvem é bastante polêmico, já que não se beneficia do modelo de negócio clássico onde o usuário da nuvem paga por utilização. Aqui a organização arca com o custo total da plataforma, incluindo a infraestrutura física de energia, refrigeração, etc, e de sua manutenção e gerenciamento, ou se, for o caso, o custo de terceirização de todos esses elementos. Nuvens comunitárias: possuem uma infraestrutura física, isso é, seus recursos, compartilhadas por organismos que possuem um mesmo objetivo comum e que, normalmente, estão sujeitas a um mesmo tipo de restrição legal ou de segurança. Um exemplo desse tipo de nuvem são as iniciativas governamentais onde os recursos computacionais pertencentes a órgãos como ministérios, ou autarquias, podem ser compartilhados para prover serviços de governança e cidadania. Nesse caso, os recursos podem pertencer a esses organismos, ou serem locados de terceiros, usando provedores de serviços de hospedagem ou de computação em nuvem (PaaS ou IaaS). Dessa forma, a localização física dos recursos pode ser interna ou externa as organizações e os custos podem ser compartilhados entre os membros da comunidade. O modelo de serviço mais comumente encontrado nas nuvens comunitárias é o SaaS, na forma de portais web. Nuvens Híbridas: são as nuvens compostas por duas ou mais nuvens de outros tipos. As nuvens híbridas nada mais são que múltiplas nuvens conectadas entre si. EXEMPLO DE VIRTUALIZADORES Solução multiplataforma (Windows, Linux) ● Atualmente desenvolvida e mantida pela Oracle ● Fácil de utilizar e instalar ● É gratuita! ● Fornece um pacote de device drivers denominado "Guest Additions" para melhorar o desempenho KVM (Kernel-Based Virtual Machine) QEMU (Machine Emulator) DOCKER Middleware IaaS: É essa camada que prove as capacidades básicas de virtualização e de gerenciamento dos recursos da nuvem. Middleware de computação de nuvem: responsável por, entre outros, permitir a solicitação dos recursos virtuais, configurá-los, e autenticar usuários. Tecnologia de virtualização open source baseada no Linux®. Com a KVM, você pode transformar o Linux em um hipervisor, permitindo que uma máquina host execute vários ambientes virtuais isolados, chamados máquinas guest ou máquinas virtuais. Bare-metal: Converte o Linux em um hipervisor tipo-1 (bare-metal)Para executar VMs, todos os hipervisores precisam de alguns componentes em nível de sistema operacional, como gerenciador de memória, agendador de processos, stack de entrada/saída (E/S), drivers de dispositivo, etc. Software open source que serve para emular um processador ARQUITETURA ORIENTADA A SERVIÇOS (SOA) Acoplamento fraco: os servicos mantem uma relação que minimiza as dependencias e exige apenas o conhecimento um do outro. Reusabilidade: a lógica é dividida em serviços com a intenção de promover a reutilização. Contrato de Serviço: serviços de adesão a um acordo de comunicações, tal como definidido coletivamente por uma ou mais descrições de serviço relacionadas aos documentos. Autonomia: os serviços tem controle sobre a lógica que encapsulam. Abstração: além do que está descrito no contrato, os serviços permitem esconder a lógica do mundo exterior. Composição: as coleções de serviços podem ser coordenadas e reunidas a partir da composição de serviços. Descoberta: os serviços são projetados para serem externamente bem descritos, encontrados e avaliados através dos mecanismos de descoberta. Sem estado: os serviços minimizam o armazenamento de informações específicas de uma atividade. A infraestrutura se baseia em duas entidade: consumidores e prestadores de serviços e possuem oito princípios fundamentais: Um outro elemento fundamental da arquitetura SOA é o registro de serviços ou diretório central de serviços que interage tanto com o servidor, quanto com o consumidor. Essa interação é estabelecida de forma que um provedor possa registrar/publicar os serviços em um determinado diretório, assim como um consumidor utiliza este registro para consultar e encontrar o serviço requisitado. WEB SERVICES Compreender os principais conceitos de arquiteturas SOA; Reconhecer conceitos de Web Services, compreender por que é importante estudar esses conceitos e como eles darão suporte ao desenvolvimento de aplicações em nuvem; Compreender as vantagens e desvantagens, semelhanças e diferenças entre SOA e REST. SEMANA 5 é um conjunto de funcionalidades bem definidas em forma de serviços disponibilizados na rede. São um sistema de software projetado para apoiar interações máquina-para-máquina interoperáveis pela rede, fornecendo uma interface descrita em um formato processável por máquina (especificamente a WSDL). É composto por duas estruturas: Serviço: O serviço consiste num módulo de software instalado numa plataforma computacional com acesso `a rede e oferecido pelo “provedor de serviços”. Um serviço existe para ser usado por um consumidor, podendo funcionar também como um cliente de outro serviço. Descrição do serviço: contem os detalhes da interface e da implementação de um serviço, o que inclui os tipos de dados, operações, informação de ligação (binding),e localização de rede. Pode ainda incluir metadados e informação de categorização para facilitar as atividades de descoberta e utilização por consumidores do serviço. Fracamente acopladas Transparentes em localização; Independentes de protocolo Tres características: Web Services caracterizam-se por ser uma tecnologia para computação distribuída baseada na Web Independente de linguagem ou platafo Troca de mensagens XML Descreve uma operação a ser executada ou dados a serem trocados Requer que o conteúdo de registros de dados seja confiável. Problemas de desempenho. Custo maior para processardocumentos XML. Padrões para integração de processos de negócio e gerenciamento de transações podem ser complexos em alguns casos A arquitetura orientada a serviço serve para resolver downtime, pois estrutura as apps em serviços distintos e reutilizáveis que se comunicam por meio de um ESB (Enterprise Service Bus). Os WEB SERVICES constituem uma tecnologia emergente do SOA. A grande popularidade delas ocorreu devido à adoção de protocolos e padrões abertos como o HTTP e XML visando solucionar o problema de integrar aplicativos de sistemas heterogêneos => alcançou a interoperalidade. Protocolos dos WEB SERVICES: Cria a descrição do WEB SERVICE (WSDL) Publica o arquivo WSDL no repositório UDDI O ciente faz uma busca no repositório Obtém o WSDL do serviço a partir do qual cria um cliente e finalmente comunica-se com o serviço Passos que o o provedor de serviços responsável percorre para manter o serviço : 1. 2. 3. 4. 5. RESTful Representational State Transfer ou Transferência de Estado Representacional) Estilo Arquitetural* Um estilo arquitetural para definição de sistemas fracamente acoplados (a WEB é uma instância). A Web usada corretamente (ou seja, não como um protocolo de transporte) - HTTP Qualquer coisa que use HTTP e XML (que não seja SOAP) São operações que possuem três características: são autocontidas, as respostas incluem hyperlinks que permitem descobrir novos recursos RESTful e “uma descrição post hoc (depois do fato) das funcionalidades que fizeram a Web ser tão bem sucedida”. Possuem, ainda, três definições: 1. 2. 3. *princípios gerais que guiam a criação de uma arquitetura que, por sua vez, refere-se a projeto com a solução para um determinado problema dado um conjunto de restrições RESTRIÇÕES DA ARQUITETURA Identificação de recursos Interface uniforme Mensagens autodescritivas Estado de aplicação determinado pela hipermídia Interações sem estado (stateless) 1. 2. 3. 4. 5. escalabilidade, usabilidade, acessibilidade, facilidade de composição que visam: a ideia de RESTful é evitar transações longas nas aplicações Surgiram como uma forma de simplificar o desenvolvimento de serviços web O elemento fundamental da arquitetura RESTful é o recurso. Um recurso pode ser uma página web, figura, imagem ou vídeo. Para localizar os recursos envolvidos em uma interação entre os componentes da arquitetura RESTful é utilizado o chamado Identificador de Recurso. IDENTIFICAÇÃO DE RECURSOS: Dê nome a tudo aquilo que você quiser mencionar. O estado de uma aplicação é representado também como um recurso. I. Um serviço web RESTful expõe um conjunto de recursos que permitam identificar os alvos da interação com seus clientes. Os recursos são identificados por URIs, que proporcionam um espaço de endereçamento global para a descoberta de recursos e serviços 1. INTERFACE UNIFORME: Um mesmo conjunto pequeno de operações se aplica a tudo. Um pequeno conjunto de verbos se aplica a um grande conjunto de substantivos. Identifica as operações que são candidatas à serem otimizadas (GET e HEAD, seguras; PUT e DELETE, pode ser utilizado várias vezes sem alteração no resultado - idempotência; POST; efeitos colaterais). Constrói funcionalidades baseadas nas propriedades úteis dessas operações. Os recursos são manipulados através de um conjunto fixo de quatro operações: PUT, GET, POST e DELETE. O método PUT cria um novo recurso, que pode então ser apagado usando o método DELETE. O método GET recupera o estado atual de um recurso em alguma representação. O método POST transfere um novo estado para um recurso. MENSAGENS AUTODESCRITIVAS: Recursos são entidades abstratas que são acessados via representações de recursos podendo se basear em restrições diferentes. Como explicado anteriormente os recursos são dissociados de sua representação, para que seu conteúdo possa ser acessado em uma variedade de formatos. Os metadados sobre o recurso são utilizados, por exemplo, para controlar o cache, detectar erros de transmissão, negociar o formato de uma representação adequada e realizar controle de autenticação ou acesso ESTADO DE APLICAÇÃO DETERMINADO PELA HIPERMÍDIA: Representação de recursos possuem links navegáveis para recursos identificados e aplicações RESTful navegam ao invés de chamar. INTERAÇÃO SEM ESTADO - STATELESS: significa mover o estado para os clientes ou recursos - consequência mais importante: evitar manter o estado da aplicação no lado do servidor, o estado do recurso é gerenciado no servidor e do cliente, gerenciado no cliente (problemas com segurança se tornam mais importantes aqui). Entre cada interação com um recurso as mensagens de solicitação são autossuficientes. Interações stateful são baseadas nos conceitos de transferência de estado explícito. Existem várias técnicas para trocar de estado, por exemplo, URI reescrita, cookies e campos de formulário ocultos. O estado pode ser incorporado em mensagens de resposta para apontar para os futuros estados válidos da interação. 1. 2. 3. 4. 5. WEB = URL + HTTP + (HTML | XML) URL: são um esquema de identificação universal legível para identificar “coisas” É importante fazer com que todas as coisas possam ser identificadas unicamente. HTTP: é essencial para a implementação de Interfaces Uniformes. Define um conjunto pequeno de métodos para interagir com recursos identificados com uma URI. é um protocolo que utiliza o formato XML para realizar chamadas remotas. As requisições são codificadas e enviadas via HTTP utilizando o método POST. As respostas XML são embutidas no corpo da resposta HTTP. Não utiliza o HTTP GET, somente o POST. PADRÕES WEB SERVICES são essencialmente baseados em três padrões fundamentais: XML-RPC é um mecanismo de codificação/decodificação de valores para intercâmbio de dados. Possui uma sintaxe de alto nível, fácil de ser entendida, facilitando o trabalho dos programadores e dos computadores. É o formato ideal para transmissão de dados orientada a objetos através da rede. O formato JSON é um modelo de formato para intercâmbio de dados, não é um documento. JSON O protocolo SOAP é um dos principais componentes da tecnologia web services. Além de definir a sintaxe, a semântica e a ordem das mensagens que serão trocadas entre aplicações servidores, o SOAP é um protocolo de comunicação de dados extensível para troca de informações em ambientes descentralizados e distribuídos. Para permitir a comunicação entre duas aplicações de forma interoperável, este protocolo estabelece um formato de mensagem padrão baseado em XML. SOAP O protocolo (como nos comunicamos) O host / porta (onde está na rede) O caminho do recurso (com que recurso estamos nos comunicando) De um URI, sabemos: Outras linguagens proveem funcionalidades similares ao SOAP, como CORBA, Java RMI e DCOM, mas é importante destacar que o protocolo SOAP é escrito completamente em XML e independente de plataforma e linguagem. WSDL uma especificação que provê recursos para descrever web services utilizando o formato XML. Esta especificação permite estabelecer a comunicação entre os web services provendo descrições para as localizações e descoberta de serviços (endpoints) padronizados, fornecendo as informações necessárias para estabelecer a integração com outros serviços e aplicações. A especificação WSDL define uma linguagem que permite que os web services possam publicar uma interface dos seus serviços com informações baseada no formato das mensagens de requisição e resposta. Sendo assim, a WSDL descreve um web service basicamente em duas partes: uma abstrata e outra concreta. A parte abstrata descreve a interface do serviço propriamente dita, ou seja, descreve como o serviço pode ser invocado por seus clientes. Assim como, quais são as operações disponíveis, quais são os parâmetros de entrada e saída que uma determinada operação utiliza para enviar e receber mensagens, e como as mensagens envolvidas são descritas. A parte concreta define os protocolos, formatos de dados e o endereço onde o serviço estará disponibilizado.A descrição das informações concretas pode ser definida através dos seguintes componentes: service, endpoint, binding, types e documentation. UDDI é uma especificação tecnica para descrever, descobrir e integrar os web services. Em seu núcleo, UDDI consiste de duas partes. Primeiro, UDDI é uma especificação tecnica para a construção de um diretório distribuído de negócios e serviços web. Os dados são armazenados em um formato XML específicos, e a especificação UDDI inclui detalhes da API para pesquisa de dados existentes e publicação de novos dados. Segundo, o UDDI Business Registry é uma implementação operacional completa da especificação UDDI e são divididos em três categorias principais: Páginas Brancas: Inclui informações gerais sobre uma empresa específica. Por exemplo, nome da empresa, descrição do negócio, informações de contato, endereço e numeros de telefone. Pode também incluir identificadores de negócio único. Páginas Amarelas: Inclui os dados de classificação geral da empresa ou do servi¸co oferecido. Por exemplo, esses dados podem incluir a indústria, produto, ou códigos geográficos com base em taxonomias padrão. Páginas Verdes: Esta categoria contém informações técnicas sobre um serviço web. Geralmente, isso inclui um ponteiro para uma especificação externa e um endereço para invocar o serviço web. O UDDI não é restrito para descrever serviços web baseados em SOAP. Pelo contrário, UDDI pode ser usado para descrever qualquer serviço, a partir de uma única página da web, e-mail ou todo o caminho até o SOAP, CORBA e Java RMI. Entender o funcionamento da arquitetura de microsserviços e do ambiente operacional para executar os pacotes de software em contêineres; Aprender sobre um conjunto de produtos de plataforma como serviço que utiliza virtualização no nível do sistema operacional: os chamados dockers. SEMANA 6 ARQUITETURA DE MICROSSERVIÇOS (MSA) Microsserviços são uma abordagem de arquitetura para a criação de aplicações. Utilizado para projetar um aplicativo que seja multilíngue, facilmente escalável, fácil de manter e implantar, altamente disponível e com minimização de falhas. Em uma arquitetura de microservices, cada microservice possui uma tarefa simples e se comunica com os clientes ou com outros microservices usando mecanismos de comunicação leves, como solicitações de API REST. Os microsserviços seguem o modelo share-nothing e são executados como processos sem estado. Normalmente, cada microsserviço é executado em um contêiner que fornece um ambiente de tempo de execução leve. Devem ser consideradas para aplicativos que exigem altos níveis de escalabilidade, flexibilidade e confiabilidade. Você pode usar uma linguagem de programação e estrutura diferentes para desenvolver cada componente. Os microsserviços (ou microservices, em inglês) são uma arquitetura e uma abordagem para escrever programas de software. Com eles, as aplicações são desmembradas em componentes mínimos e independentes. Diferentemente da abordagem tradicional monolítica em que toda a aplicação é criada como um único bloco, os microsserviços são componentes separados que trabalham juntos para realizar as mesmas tarefas. Cada um dos componentes ou processos é um microsserviço. Essa abordagem de desenvolvimento de software valoriza a granularidade, a leveza e a capacidade de compartilhar processos semelhantes entre várias aplicações. Trata-se de um componente indispensável para a otimização do desenvolvimento de aplicações para um modelo nativo em nuvem. Os microsserviços são pequenos, independentes e fracamente acoplados. Uma única equipe pequena de desenvolvedores pode escrever e manter um serviço. Cada serviço é uma base de código separado, que pode ser gerenciado por uma equipe de desenvolvimento pequena. Os serviços podem ser implantados de maneira independente. Uma equipe pode atualizar um serviço existente sem recompilar e reimplantar o aplicativo inteiro. DIFERENÇAS COM SOA: Os microsserviços podem se comunicar entre si, normalmente de maneira stateless. Dessa forma, as apps assim criadas podem ser mais tolerantes a falhas e depender menos de um único ESB. Além disso, as equipes de desenvolvimento podem escolher as ferramentas que desejarem, pois os microsserviços conseguem se comunicar usando APIs independentes de linguagem. CARACTERÍSTICAS DO MSA: https://www.redhat.com/pt-br/topics/cloud-native-apps/what-is-an-application-architecture https://www.redhat.com/pt-br/topics/integration https://www.redhat.com/pt-br/topics/cloud-native-apps https://www.redhat.com/pt-br/topics/cloud-native-apps https://www.redhat.com/pt-br/topics/cloud-native-apps Todo o aplicativo é construído como uma única unidade que contém toda a lógica de negócios. construções monolíticas. Nelas, todas as partes implantáveis ficam contidas na própria aplicação. Essa abordagem tem algumas desvantagens: quanto maior for a aplicação, maior será a dificuldade para solucionar problemas e adicionar novas funcionalidades rapidamente. Na arquitetura de microsserviços, a lógica de negócios é organizada como vários serviços acoplados livremente. Em uma arquitetura de microsserviços, os serviços são executados em vários servidores. Os serviços são responsáveis por manter seus próprios dados ou o estado externo. Isso é diferente do modelo tradicional, em que uma camada de dados separada lida com a persistência de dados. Os serviços comunicam-se entre si por meio de APIs bem definidas. Detalhes da implementação interna de cada serviço ficam ocultos de outros serviços. Suporte à programação poliglota. Por exemplo, os serviços não precisam compartilhar a mesma pilha de tecnologia, bibliotecas ou estruturas. DOCKER CONTAINER Criar, executar, testar e implantar aplicações distribuídas dentro de containers de software Empacotar uma aplicação de forma padronizada para o desenvolvimento de software, contendo: código, runtime, ferramentas, bibliotecas, etc. Possibilita a implantação de aplicações de forma mais ágil, confiável e estável, em qualquer ambiente É uma tecnologia Open Source que permite: Principais componentes: Utiliza uma arquitetura cliente-servidor Cliente conversa com o daemon docker Cliente e daemon docker podem executar no mesmo sistema Cliente docker pode ser conectar a um daemon remoto Cliente docker e daemon docker se comunicam por meio de REST API, sockets, etc. Elementos: Isolamento Simplicidade Leve Ampla utilização pela comunidade Definição de fluxos de trabalho OFERECE Maneira de virtualizar recursos em nível do SO que permite executar uma aplicação e suas dependências em processos com recursos isolados. Códigos, configurações de uma aplicação podem ser empacotados em elementos que oferecem mais produtividade para os desenvolvedores e controle de versões. Tem como base uma imagem docker: imagem é uma classe java e container é uma instância desta classe Confiabilidade Consistência de implantação Controle mais granular dos recursos -- > Melhora aumentando a eficiência da infraestrutura. OFERECE Execução e distribuição de containers e imagens Controle dos recursos executados Constrói imagens Executa e gerencia containers Interage via REST API Gerencia o consumo dos recursos Previne de violação externa Isolamento de processos Portabilidade de aplicações IMAGEM Templates para criação de containers São imutáveis, pois para executá-las é necessário criar uma instância da mesma (container) São construídas em camadas e facilita a reutilização e manutenção É um ambiente encapsulado pronto para ser replicado DOCKER REGISTRY Uma espécie de repositório Git Imagens podem ser versionadas DOCKERFILE Scripts com comandos para: •Criar imagens •Executar comandos •Criar variáveis de ambiente •Copiar arquivos e pastas do host para a imagem PLATAFORMA DOCKER docker build: constrói uma imagem a partir do dockerfile docker images: lista todas as imagens de um docker hosts docker run: Executa uma imagem docker os: lista todas as instâncias paradas e em execução DOCKER CLI: Docker Engine
Compartilhar