Leandro Luis Pauro Auditoria e Monitoramento de Eventos Inconsistentes em Instâncias de Máquinas Virtuais em IaaS no Orquestrador Apache CloudStack SÃO JOSÉ DO RIO PRETO 2016 Campus de São José do Rio Preto Leandro Luis Pauro Auditoria e Monitoramento de Eventos Inconsistentes em Instâncias de Máquinas Virtuais em IaaS no Orquestrador Apache CloudStack Orientador: Profa. Dra. Roberta Spolon Dissertação de Mestrado elaborada junto ao Programa de Pós-Graduação em Ciência da Computação - Área de Concentração em Arquitetura de Computadores e Sistemas Distribuídos, como parte dos requisitos para a obtenção do título de Mestre em Ciência da Computação. SÃO JOSÉ DO RIO PRETO 2016 Leandro Luis Pauro Auditoria e Monitoramento de Eventos Inconsistentes em Instâncias de Máquinas Virtuais em IaaS no Orquestrador Apache CloudStack Dissertação de Mestrado elaborada junto ao Programa de Pós-Graduação em Ciência da Computação – Área de Concentração em Arquitetura de Computadores e Sistemas Distribuídos, como parte dos requisitos para a obtenção do título de Mestre em Ciência da Computação, do Instituto de Biociências, Letras e Ciências Exatas da Universidade Estadual Paulista “Júlio de Mesquita Filho”, Campus de São José do Rio Preto. Orientador: Profª. Drª. Roberta Spolon Comissão Examinadora Profª. Drª. Roberta Spolon Universidade Estadual Paulista - Bauru Orientador Prof. Dr. Marcos A. Cavenaghi HumberInstitute of Technology and AdvancedLearning, The Business School - Toronto - Canadá Prof. Dr. Ronaldo Augusto de Lara Gonçalves Universidade Estadual de Maringá Bauru, 06 de dezembro de 2016 Agradecimentos Primeiramente а Deus que permitiu que tudo isso acontecesse, ao longo de minha vida. Em segundo lugar, agradeço aos meus pais Evaristo Pauro e Ester Maria da Cruz Pauro, pela formação que me proporcionaram e sem eles não estaria aqui. À minha noiva Micheli Fabiana Salina, por toda paciência e compreensão. Em especial, a minha professora orientadora Dr a . Roberta Spolon, por ter acreditado, pelo auxílio, disponibilidade de tempo, material e dedicação a me conduzir nesta pesquisa. Meu amigo e colega de mestrado Gustavo Cesar Bruschi que muito me ajuda nas dificuldades de conhecimento técnico, para o meu maior incentivador e amigo Henrique Pachioni Martins, pessoa que fez muito por mim não apenas em relação a minha carreira profissional, mas também em minha vida como pessoa. Aos colegas de trabalho, em especial aos amigos Alessandro Martinez de Camargo e Miguel Neves, por entenderem e em dar o suporte necessário para dar andamento na realização desse trabalho. Resumo Cada vez mais a Computação em Nuvem é incorporada pelas empresas como forma econômica e viável de se disponibilizar recursos e serviços. No entanto, a confiabilidade operacional e a disponibilidade de recurso ainda causam preocupação em virtude de ocorrer a inatividade de algum serviço fornecido pela nuvem, o que pode gerar a perda de receitas e desconfiança do cliente. Assim, é crucial que se disponibilize ferramentas a este ambiente para realizar auditoria e monitoramento, a fim de prover a prevenção e a eliminação de inconsistências que possam provocar a indisponibilidade do serviço oferecido. Este trabalho apresenta a ferramenta de Auditoria e Monitoramento em Nuvem Orquestrador Apache CloudStack AMFC, que através do sincronismo das informações do estado atual com dados persistentes do orquestrador, realiza a eliminação de dados sem utilização e inconsistências, diminui o alertas de falso positivo e falso negativo e também proporciona menor custo para armazenamento de dados persistentes da nuvem. Sua eficácia foi evidenciada através da realização de validação manual comparada com o resultado obtido da execução da ferramenta a partir de casos de uso gerados no ambiente de teste controlado. Os resultados obtidos após a realização de 1.320 rotinas administrativas para instância de máquina virtual mostraram a identificação e eliminação das inconsistências na base de dados persistente, a redução do custo de armazenamento e consequentemente, uma base de dados íntegra, que oferece ao administrador da nuvem uma tomada de decisão com maior precisão para averiguar um problema que esteja ocorrendo no ambiente. . Palavras-chave: Computação em Nuvem, opensource, CloudStack, auditoria, monitoramento, inconsistência, instância, infraestrutura. Abstract Cloud Computing has been increasingly incorporated by companies as an economic and feasible mean to provide resources and services. However, operational reliability and resource availability are still cause for concern since there's the possibility of a cloud service going down, which can lead to loss of revenue and customer distrust. Thus, it is crucial to provide tools for performing auditing and monitoring in order to prevent and eliminate inconsistencies that may cause the unavailability of the service offered. This paper presents the Cloud Orchestrator Auditing and Monitoring Tool Apache CloudStack AMFC, which by synching information current status with the orchestrator persistent data deletes any unused data and inconsistencies, decreases the false positive and negative alerts and also provides lower cost for cloud persistent data storage. Its effectiveness has been demonstrated through manual validation compared to results obtained from running the tool in a controlled test environment. The results obtained after performing 1.320 administrative tasks for a virtual machine were the identification and elimination of inconsistencies in the persistent database, reducing storage costs and, consequently, resulting in an intact database. This enables the cloud administrator to make more accurate decisions when investigating a possible malfunction in the environment. Keywords: Cloud computing, open source, CloudStack, auditing, monitoring, inconsistency, instance, and infrastructure. Lista de Figuras Figura 1 - Ambiente Computacional com Base na Computação em Nuvem ................. 13 Figura 2 - Virtualização de Servidores ........................................................................... 14 Figura 3 - Características de Computação em Nuvem ................................................... 15 Figura 4 - Arquitetura da Computação em Nuvem......................................................... 18 Figura 5 - Arquitetura do Orquestrador Eucalyptus ....................................................... 25 Figura 6 - Arquitetura do Orquestrador OpenNebula ..................................................... 26 Figura 7 - Plataforma Windows Azure ........................................................................... 28 Figura 8 - Arquitetura do Orquestrador OpenStack ........................................................ 31 Figura 9 - Arquitetura do Orquestrador Vmware VCloud ............................................... 34 Figura 10 - Arquitetura do Apache CloudStack .............................................................. 35 Figura 11 - Principais Características dos Orquestradores de Computação em Nuvem 39 Figura 12 - Diagrama da Metodologia para Auditoria e Monitoramento ....................... 52 Figura 13 - Utilização da ferramenta AMFC na nuvem ................................................. 57 Figura 14 - Camada de Nível de Serviço de configuração da ferramenta AMFC .......... 59 Figura 15 - Etapas do Monitoramento da Nuvem pela Ferramenta AMFC ................... 60 Figura 16 - Fluxograma Módulo de Redundância não Controlada ................................ 62 Figura 17 - Gerenciamento de Instância de Máquina Virtual no Orquestrador .............. 66 Figura 18 - Informações de Instância de Máquina Virtual em Dados Persistentes ........ 67 Figura 19 - Atividades de Eventos no Orquestrador ...................................................... 67 Figura 20 - Dados Persistentes das Atividades de Eventos ............................................ 67 Figura 21 - Gerenciamento de Instâncias de Máquinas Virtuais no Orquestrador ......... 68 Figura 22 - Status de Instância de Máquina Virtual de Dados Persistentes .................... 69 Figura 23 - Atividades de Eventos no Orquestrador ...................................................... 69 Figura 24 - Atividades de Eventos do Orquestrador em Dados Persistentes ................. 69 Figura 25 - Ferramenta AMFC: Informações de Máquina Virtual e Atividades dos Eventos ........................................................................................................................... 72 Figura 26 - Modelo de Redundância de Dados no Orquestrador Apache CloudStack ... 73 Figura 27 - Gerenciamento de Armazenamento de Volumes ......................................... 74 Figura 28 - Informação dos Volumes em Dados Persistentes ......................................... 74 Figura 29 - Gerenciamento de Instâncias de Máquinas Virtuais .................................... 75 Figura 30 - Informações Inconsistentes de Volumes em Dados Persistentes ................. 76 Figura 31 - Inconsistências de informações de volumes ferramenta AMFC .................. 77 Figura 32 - Resultado do Modelo de Recurso Pequeno ................................................. 78 Figura 33 - Resultado do Modelo de Recurso Médio ..................................................... 79 Figura 34 - Resultado do Modelo de Recurso Grande ................................................... 79 Figura 35 - Comparativo de Inconsistências entre Recursos .......................................... 80 Figura 36 - Layout de instalação do CloudStack ............................................................ 92 Figura 37 - SGBD MySql do arquestrador CloudStack .................................................. 97 Figura 38 - Hypervisior XenServer instalado no orquestrador Apache CloudStack ... 100 Figura 39 - Interface web de gerenciamento do orquestrador Apache CloudStack ...... 102 Lista de Quadros Quadro 1- Definição das Questões de Segurança em Nuvens........................................ 21 Quadro 2 - Configuração dos computadores .................................................................. 50 Quadro 3 - Pseudocódigo da ferramenta AMFC ............................................................ 61 Quadro 4 - Tipos de Oferta de recurso ........................................................................... 64 Quadro 5 - Modelo de testes oferta de recurso ............................................................... 65 Quadro 6 - Eliminação Manual para Validar as Informações sem Utilização no Ambiente de Teste .......................................................................................................... 71 Quadro 7 - Eliminação Manual para Validar Informações de Volumes ......................... 77 Quadro 8 - Ganho de Armazenamento de Dados Persistentes ....................................... 80 Quadro 9 - Equipamentos utilizados para o ambiente de protótipo da computação em nuvem ............................................................................................................................. 91 Lista de Abreviaturas AMFC - Ferramenta de Auditoria e Monitoramento para Eliminar Inconsistências no Apache CloudStack API - Application Performance Interface AWS - Amazon Web Service CLI - Command Line Interface CSP - Cloud Service Providers DDL - Data Definition Language DHCP - Dynamic Host Configuration Protocol DML - Data Manipulation Language EBS - Elastic Block Store EC2 - Elastic Compute Cloud GNU - General Public License GPL - GNU Public Licence IaaS - Infrastructure as a Service IEEE - Institute of Electrical and Electronics Engineers IP - Internet Protocol ISCI - Internet Small Computer System Interface LDAP - Lightweight Directory Access Protocol NASA - United States National Aeronautics and Space Administration NAT - Network Address Translation NFS - Network File System NIST - NationalInstituteof Standards and Technology NoSQL - Not Only SQL PaaS- Platform as a Service S3 - Simple Storage Service SaaS - Software as a Service SAML - Security Assertion Markup Language SDN - Software-Defined Networking SGBD - Sistema de Gerenciamento de Banco de Dados SLA - Service Level Agreement TI - Tecnologia da informação VLAN - Virtual LAN VM - Virtual Machine XACML - Extensible Access Control Markup Language XCP - Xen Cloud Platform Sumário 1 Introdução ...................................................................................................................... 8 1.1 Objetivo ................................................................................................................ 9 1.2 Motivação ........................................................................................................... 10 1.3 Organização do texto .......................................................................................... 10 2 Computação em Nuvem .............................................................................................. 12 2.1 Introdução à computação em nuvem .................................................................. 12 2.2 Arquitetura da computação em nuvem ............................................................... 16 2.3 Modelos de níveis de serviços em computação em nuvem ................................ 17 2.4 Segurança na computação em nuvem ................................................................. 20 2.5 Vantagens e riscos da computação em nuvem .................................................... 22 2.6 Orquestradores de computação em nuvem ......................................................... 24 2.6.1 Eucalyptus ...................................................................................................... 24 2.6.2 OpenNebula .................................................................................................... 26 2.6.3 Xen Cloud Platform ........................................................................................ 27 2.6.4 Microsoft Windows Azure Platform ................................................................ 28 2.6.5 OpenStack ....................................................................................................... 30 2.6.6 Amazon EC2 (Elastic Compute Cloud) .......................................................... 32 2.6.7 Vmware vCloud Suite ..................................................................................... 33 2.6.8 Apache CloudStack......................................................................................... 35 2.7 Considerações Finais .......................................................................................... 38 3 Auditoria e Monitoramento em Computação em Nuvem ............................................ 40 3.1 Introdução à Auditoria e Monitoramento em Nuvem ........................................... 40 3.2 Técnicas e Método para Auditoria e Monitoramento em Nuvem ......................... 40 3.3 Principais Características para uma Ferramenta de Auditoria e Monitoramento . 41 3.4 Normas para Auditoria e Monitoramento em Nuvem........................................... 43 3.4.1 ISO/IEC 17788 ............................................................................................... 44 3.4.2 ISO/IEC 17789 sessão 8.5.12.1 ...................................................................... 44 3.4.3 NIST SP 500-292 ........................................................................................... 45 3.5 Trabalhos Relacionados ........................................................................................ 46 3.6 Considerações Finais ............................................................................................ 48 4 Material e Métodos ...................................................................................................... 49 4.1 Material ................................................................................................................. 49 4.2 Hardware ............................................................................................................... 49 4.3 Software ................................................................................................................ 50 4.4 Métodos ................................................................................................................ 50 Definição dos Parâmetros de Cálculo ..................................................................... 54 4.5 Considerações Finais ............................................................................................ 55 5 Ferramenta de auditoria e monitoramento em nuvem AMFC ..................................... 57 5.1 Arquitetura da ferramenta AMFC ......................................................................... 57 5.2 Implantação na nuvem da ferramenta AMFC ....................................................... 59 5.2 Ambiente da nuvem auditado e monitorado pela ferramenta AMFC ................... 60 5.3 Considerações Finais ............................................................................................ 63 6 Resultados Experimentais............................................................................................ 64 6.1 Realização dos Testes e Resultados ...................................................................... 64 6.2 Casos de uso realizados de auditoria e monitoramento AMFC ............................ 65 6.3 Cenário 1: Ambiente de teste e dados persistentes no gerenciamento de informações ................................................................................................................. 66 6.4 Cenário 2: Monitorar Informação Inconsistente no Ambiente de Nuvem ............ 74 5.5 Avaliação dos Resultados ...................................................................................... 78 6.6 Considerações Finais ............................................................................................ 81 7 Conclusões ................................................................................................................... 82 7.1 Contribuições ........................................................................................................ 83 7.2 Trabalhos Futuros ................................................................................................. 84 Referências Bibliográficas .............................................................................................. 85 Apêndice A - Instalação do Apache CloudStack ............................................................ 91 Apêndice B - Instalação do XenServer ........................................................................... 98 Apêndice C - Instalação do OpenFiler ......................................................................... 101 Apêndice D - Instalação do XenCenter ........................................................................ 102 8 1 Introdução Com o crescente uso computacional, aumenta-se a disponibilização de recursos sob demanda (como sistemas, aplicativos, armazenamento de dados) que podem ser acessados em qualquer lugar independente de plataforma, com alta disponibilidade e escalabilidade, tendo a mesma facilidade de tê-los instalados como em nossos próprios computadores. (HE; HE, 2011) Sabahi (2011) define computação em nuvem como um ambiente de rede baseado no compartilhamento de recursos computacionais. Na verdade, nuvens são baseadas na internet e tentam disfarçar a complexidade para os usuários. Computação em Nuvem refere-se à entrega de serviços através da internet por meio de hardware e software nos 1 datacenters. Assim, empresas que fornecem nuvens se utilizam de tecnologias de virtualização, combinadas com suas habilidades para fornecer recursos de computação através de sua infraestrutura de rede. A computação em nuvem é vista como uma provisão de recursos computacionais, de responsabilidade de empresas especializadas que realizam abstração de recursos em níveis que apenas especialistas venham se preocupar em gerenciá-los e mantê-los, sendo disponibilizados como serviços. (CARR, 2008) É, portanto, um modelo que possibilita o acesso sob demanda a um pool compartilhado de recursos computacionais configuráveis (por exemplo, redes, servidores, armazenamento, aplicações e serviços) de forma simples e eficiente na sua maximização e flexibilização destes recursos. Além disso, uma nuvem computacional é um ambiente redundante, resiliente e de escalabilidade, que mantém sua operabilidade apesar de um mau funcionamento de um ou mais dos seus componentes. (TAURION, 2009) Convém observar que a computação em nuvem consiste em serviços que são comoditizados 2 e entregues de modo semelhante, tais como água, eletricidade, gás e telefonia. Nesse modelo, os usuários acessam os serviços baseados em suas necessidades, independentemente do local onde estes serviços estejam hospedados. (BUYYA et al., 2013) 1 Datacenter - Centro de processamento de dados, é um ambiente projetado para concentrar servidores, equipamentos de processamento e armazenamento de dados, e sistemas de ativos de rede, como switches, roteadores, e outros. 2 Comoditizado - Mercadoria ou serviço que é fornecido por muitos agentes econômicos e, portanto tem seu preço pressionado para baixo pela extrema competição. 9 A computação em nuvem tornou-se economicamente viável para grandes empresas. No entanto, a confiabilidade operacional e disponibilidade de recursos ainda causam preocupação, em virtude de ocorrer a inatividade de algum serviço fornecido pela nuvem, que possam gerar a perda de receitas e a insegurança do cliente. Assim, é crucial que se disponibilize ferramentas a este ambiente, capazes de realizar a auditoria e o monitoramento, a fim de oferecer a prevenção e a eliminação de inconsistências que podem provocar a indisponibilidade do serviço oferecido. (ZHU et al., 2013) Para se interagir com esta infraestrutura de nuvens, os serviços de monitoramento são essenciais, devido a versatilidade de aplicações e recursos que são simultaneamente acessados por vários usuários. Nuvens muitas vezes sofrem vários tipos de situações indesejadas, tais como degradações de desempenho, falhas de componentes ou invasões de segurança. Com isso é importante haver mecanismos de monitoramento e auditoria para nuvens, sendo possível avaliar os eventos apontados e posteriormente oferecer ações de prevenção e recuperação. (MDHAFFAR et al., 2013) A utilização de um serviço de monitoramento de recursos é considerado um dos principais desafios para uma auditoria em nuvem, devido à falta de informações e o controle sobre as customizações dos parâmetros que descrevem os sistemas deste ambiente. É importante observar que as soluções de monitoramento atuais não são totalmente precisas, pois a coleta de informação que se realiza neste ambiente ocorre em áreas distintas e não integradas. (SUCIU et al., 2014) Para que se consiga prover um ambiente confiável e permitir uma auditoria em tempo real, os serviços de monitoramento devem fornecer os resultados a partir da avaliação corrente do desempenho e o estado atual da nuvem. Para garantir esta confiabilidade, deve-se haver uma combinação de mecanismos que possam prover a prevenção, detecção e correção para este ambiente. (MEERA e GEETHAKUMARI, 2015) 1.1 Objetivo Desenvolver uma ferramenta que realize a auditoria e monitoramento das rotinas administrativas em instâncias de máquinas virtuais para o ambiente de nuvem. Isso é obtido com o sincronismo das informações armazenadas na base de dados do orquestrador e as informações de seu estado atual, proporcionando ao administrador da nuvem suporte para tomada de decisão com maior precisão, realizando a eliminação de dados sem utilização e 10 eventos inconsistentes, diminuindo alertas de falso positivo e falso negativo e também oferecendo menor custos para armazenamento de dados persistentes da nuvem. 1.2 Motivação A computação em nuvem se tornou uma alternativa encontrada pelas empresas na busca de redução de custos relacionados à tecnologia, através da diminuição de operações de T.I, normalmente tendo como ação inicial a virtualização de seus servidores. O gerenciamento de todos os elementos de software da computação em nuvem dimensionados sob demanda por meio da internet possibilita que as empresas tenham maior flexibilidade em relação a seus dados e suas informações. Este ambiente deve ser auditado e monitorado no intuito de continuar oferecendo todos os benefícios que o modelo de computação em nuvem proporciona. Um ponto relevante encontrado é a forma como é monitorado, por meio de ferramentas que coletam apenas informações através de logs e em lugares separados na nuvem, podendo ocasionar informações inconsistentes e a geração de alertas de falsos positivos e falsos negativos. Isso induz o administrador do ambiente a cometer falhas no gerenciamento e administração dos recursos, podendo provocar até uma indisponibilidade de serviço. É necessário que este monitoramento de informações na nuvem ocorra de forma sincronizada entre os dados persistentes do orquestrador e informações de estado atual do ambiente de nuvem com o intuito de proporcionar eliminação das informações inconsistentes, prevenção de alertas de falsos positivos e falsos negativos, maior precisão do administrador de infraestrutura sobre qual ação deve-se tomar e também menor custo para armazenamento de dados persistentes da nuvem. 1.3 Organização do texto O texto está organizado em seis capítulos descritos a seguir:  O Capítulo 2 apresenta uma revisão bibliográfica sobre Computação em Nuvem e também uma descrição sucinta sobre os principais orquestradores;  No Capítulo 3 são apresentadas características, normas e trabalhos relacionados com auditoria e monitoramento em ambiente de computação em nuvem; 11  O Capítulo 4 descreve a metodologia seguida nesta dissertação, os materiais e métodos utilizados;  No Capítulo 5 são apresentados e discutidos os resultados dos experimentos realizados, e  No capítulo 6 são apresentadas as conclusões embasadas pelos resultados obtidos, enumeradas as contribuições desta dissertação e as propostas para trabalhos futuros. 12 2 Computação em Nuvem Esse capítulo apresenta detalhes da arquitetura de nuvem, definindo seus modelos, tipos de serviços, segurança, vantagens e riscos e também analisando os principais orquestradores e suas diferenças. 2.1 Introdução à computação em nuvem A computação em nuvem é considerada um modelo de acesso a um pool compartilhado de recursos computacionais configuráveis (por exemplo, redes, servidores, armazenamento, aplicações e serviços) que podem ser rapidamente provisionados e liberados com o mínimo de esforço no gerenciamento ou integração dos serviços pelo provedor, permitindo assim que os usuários acessem por meio da internet estes recursos de computação de acordo com a demanda, conforme necessário. (QAISAR et al., 2012) Uma nuvem é um tipo de sistema paralelo e distribuído que consiste de uma coleção de computadores virtualizados e interconectados, provisionados de forma dinâmica e apresentados como um ou mais recursos computacionais unificados. Estes recursos são disponibilizados e controlados através de acordos relacionados aos serviços, estabelecidos entre um prestador e um consumidor, sendo definidos a partir de negociações entre as partes. Os recursos do computador são heterogêneos e geograficamente dispersos. (BUYYA, 2008) e (NIST, 2014) O conceito de computação em nuvem é oferecer o armazenamento e processamento dos dados fora do ambiente corporativo, dentro da grande rede e em estruturas conhecidas como centro de dados, otimizando o uso dos recursos. Os centros de dados irão fazer o papel de processar aplicações e armazenar os dados da organização que atuam em rede. (VERAS, 2012) Desse modo os arquivos em rede pode ser o mesmo que deixar os aplicativos e arquivos hospedados em uma nuvem que consiste em milhares de computadores e servidores, todos ligados entre si e acessíveis via internet. Com a computação em nuvem, tudo que um usuário faz é baseado na web em vez de ser em área de trabalho local. O aumento da utilização do modelo de computação em nuvem em ambiente corporativo é crescente, pois é financeiramente menos oneroso para seus usuários. Isso ajuda reduzir a economia de recursos computacionais, visto que a promessa da computação em nuvem é prover os recursos de modo virtualizado com maior rapidez, sem ter a despesa de 13 aquisição de uma nova infraestrutura, licenciamento de software e treinamento de pessoal. (HASSAN, 2013) A Figura 1 ilustra como a nuvem torna possível o acesso as suas informações de qualquer lugar e a qualquer momento, enquanto o modelo de computação tradicional obriga que o usuário acesse suas informações em um único local. Figura 1 - Ambiente Computacional com Base na Computação em Nuvem Fonte: Adaptado de Business Innovation Technologies Inc (2013). Um exemplo de como os recursos providos pela computação em nuvem são disponibilizados através da internet é o GoogleApps da empresa Google 3 que permite acessar serviços através do browser em milhões de computadores. Estes recursos são distribuídos e acessíveis a partir de qualquer momento e qualquer lugar em todo o mundo usando a internet, tendo-os como serviços sob demanda combinados para alcançar maior rendimento e ser capaz de resolver problemas de computação em grande escala. (SHAIKH e HAIDER, 2011) A computação em grid e a computação em nuvem compartilham os mesmos objetivos de redução de custos, aumento de flexibilidade e confiabilidade através da utilização de hardware operado por terceiros. O grid é uma coleção de recursos computacionais e de comunicação utilizados para execução de aplicações, através de um tipo especial de middleware 4 que permite o compartilhamento e gerenciamento, baseados nas necessidades dos usuários que utilizam os recursos atribuídos. A maior distinção entre os dois diz respeito a alocação de recursos. No caso do grid, tenta-se fazer uma distribuição uniforme de recursos, e 3 Google - Empresa multinacional de serviços online e software dos Estados Unidos.O Google hospeda e desenvolve uma série de serviços e produtos baseados na internet. 4 Middleware- Camada de software intermediária, utilizada para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional. 14 em um ambiente de computação em nuvem os recursos são alocados sob demanda. Outra diferença é referente a utilização dos recursos, pois a virtualização garante uma separação entre os recursos utilizados pelos vários usuários em ambientes de computação em nuvem. (ZHANG et al., 2010). A virtualização é a maneira prática e rápida utilizada na criação dos recursos computacionais utilizados na computação em nuvem. Suas principais características são utilizar, gerenciar e prover de maneira otimizada a capacidade de dispositivos físicos, evitando assim a sua subutilização. Apesar de muitos acreditarem que ela é aplicada apenas a servidores, esse conceito pode ser estendido para desktops, aplicações e perfis de usuário. (VERAS, 2012). A Figura 2 apresenta o exemplo do VMWare ESX Server, que é uma plataforma de virtualização (hypervisor), tendo este a função de criar e executar máquinas virtuais simultaneamente em uma única máquina física. É capaz de abstrair processador, memória, armazenamento e recursos de rede em várias máquinas virtuais e é usada para a consolidação de servidores, proporcionando altos níveis de desempenho, escalabilidade e robustez. A instalação é realizada diretamente no hardware do servidor, provendo virtualização abaixo do sistema operacional. O servidor físico é particionado em várias máquinas virtuais, que são cópias do sistema completo. Nelas é possível executar sistemas operacionais e aplicações Windows, Linux, Solaris entre outros, sem qualquer modificação. (VMWARE, 2013). Figura 2 - Virtualização de Servidores Fonte: Elaborado pelo autor com base em (VMWARE, 2013). A computação em nuvem requer uma infraestrutura de computação dinâmica, tendo como base a infraestrutura física. Deve haver níveis de redundância para garantir altos níveis de disponibilidade, mas principalmente deve ser simples para estender o crescimento de uso que se exige. Dentre isso, é possível compreender sobre as características essenciais e quais vantagens e soluções são oferecidas pela computação em nuvem. (NIST, 2014) 15 Figura 3 - Características de Computação em Nuvem Fonte: Adaptado de Veras (2012). A Figura 3 ilustra as características essenciais de um ambiente em nuvem, que são apresentadas a seguir. (VERAS, 2012)  Serviço sob demanda: O usuário pode adquirir unilateralmente os recursos computacionais, como tempo de processamento no servidor ou armazenamento na rede na medida em que necessite e sem precisar de interação humana com os provedores de cada serviço;  Amplo acesso à rede: Os recursos computacionais encontram-se disponíveis através da internet e podem ser acessados através de mecanismos padronizados, que possibilitem o uso por plataformas heterogêneas, como por exemplo, telefones móveis, tablets, computadores pessoais ou outras tecnologias;  Pooling de recursos: Os recursos computacionais do provedor (físicos ou virtuais) são organizados em um pool para servir múltiplos usuários, sendo alocados e realocados dinamicamente conforme a demanda do usuário. Como exemplos, recursos que incluem armazenamento, processamento, memória, largura de banda de rede e máquinas virtuais;  Elasticidade: Os recursos podem ser adquiridos de forma rápida e elástica e, em alguns casos, automaticamente, caso haja necessidade de escalar com o aumento da demanda e liberar na retração dessa demanda. Para o usuário tudo deve ser transparente, dando a impressão de que ele possui recursos ilimitados, que COMPUTAÇÃO EM NUVEM SERVIÇO SOB DEMANDA POOL DE RECURSOS AMPLO ACESSO A SERVIÇO DE REDE MEDIÇÃO DE SERVIÇOS ELASTICIDADE RÁPIDA 16 podem ser adquiridos (comprados) em qualquer quantidade e a qualquer momento, e  Medição de serviços: Os sistemas de gestão utilizados para a nuvem, controlam, monitorizam e otimizam automaticamente o uso de recursos em cada tipo de serviço (processamento, armazenamento, largura de banda e ativos). O uso de recursos pode ser monitorado e controlado, possibilitando transparência para o provedor e para o usuário do serviço utilizado. 2.2 Arquitetura da computação em nuvem O modelo de computação em nuvem depende das necessidades das aplicações que serão disponibilizadas. A restrição ou abertura de acesso depende do processo de negócios, do tipo de informação e do nível de visão desejado. Certas organizações não desejam que todos os usuários possam ter permissão para utilizar determinados recursos no seu ambiente de computação em nuvem. Surge assim, a necessidade de ambientes mais restritos, onde somente alguns usuários devidamente autorizados possam utilizar os serviços providos. (NIST, 2014) A arquitetura da nuvem pode ser implantada de quatro formas, dependendo dos requisitos dos usuários e são descritas a seguir: (VAQUERO et al., 2009)  Nuvem Privada: Para este modelo de infraestrutura a nuvem é proprietária ou alugada por uma única organização sendo exclusivamente executada pela mesma. Diferentemente de um datacenter privado virtual, a infraestrutura utilizada pertence ao provedor, e, portanto, ele possui total controle sobre como as aplicações são implementadas na nuvem. Uma nuvem privada é, em geral, construída sobre um datacenter privado;  Nuvem Pública: Compreende uma infraestrutura de uma organização que vende serviços para o público em geral e pode ser acessada por qualquer usuário que conheça a localização do serviço. A implementação de uma nuvem pública considera questões fundamentais como desempenho e segurança. A existência de outras aplicações executadas na mesma nuvem permanece transparente tanto para os prestadores de serviços como para os usuários;  Nuvem Comunitária: A infraestrutura deste modelo de nuvem é compartilhada por diversas organizações ou até uma terceira que normalmente possuem 17 interesses comuns, como requisitos de segurança, políticas, aspectos de flexibilidade e ou compatibilidade, e  Nuvem Híbrida: Sua composição é realizada por pelo menos duas nuvens, que preservam as características originais do seu modelo, porém, estão interligadas por uma tecnologia que possibilita a portabilidade de informações e de aplicações. Cada modelo de implantação requer uma particularidade para migração ou implantação do novo ambiente em nuvem; tudo depende do negócio, informação desejada e da visão comercial. (VERAS, 2012) 2.3 Modelos de níveis de serviços em computação em nuvem A computação em nuvem distribui os recursos na forma de três modelos de níveis de serviços: aplicação como um serviço (Software as a Service - SaaS), plataforma como um serviço (Platform as a Service - PaaS) e infraestrutura como um serviço (Infrastructure as a Service - IaaS), que são descritos a seguir: (NIST, 2014)  SaaS (Software como serviço): O consumidor não administra ou controla a infraestrutura básica, incluindo nuvens de rede, servidores, sistemas operacionais, armazenamento, ou mesmo capacidades de aplicação individual, com a possível exceção de limitada aplicação específica e definições de configuração de utilizadores. De acordo com Veras (2012), aplicações de interesse de uma grande quantidade de usuários passam a ser hospedadas na nuvem como uma alternativa ao processamento local. As aplicações são oferecidas como serviços por provedores e acessadas pelos usuários por aplicações como o browser. Todo o controle e gerenciamento da rede, sistemas operacionais, servidores e armazenamento é feito pelo provedor de serviço;  PaaS (Plataforma como serviço): É a camada intermediária, que oferece serviços à plataforma, além de proporcionar o ambiente para hospedagem de aplicativos do usuário. Neste caso, o usuário programador tem acesso e controle das configurações sobre as aplicações implantadas, ambientes para desenvolvimento, linguagens de programação e algumas configurações do sistema operacional. Para Vaquero et al. (2009) o objetivo é facilitar o 18 desenvolvimento de aplicações destinadas aos usuários de uma nuvem, criando uma plataforma que agiliza esse processo, e  IaaS (Infraestrutura como serviço): A administração da infraestrutura e a localização é de responsabilidade do provedor, também fornece acesso com maior nível de configuração sobre os recursos disponibilizados, tais como servidores, roteadores, sistemas de armazenamento e outros recursos de computação. Para Veras (2012), é definida a capacidade que o provedor tem de oferecer uma infraestrutura de processamento e armazenamento de forma transparente. Neste cenário, o usuário não tem o controle da infraestrutura física, mas, através de mecanismos de virtualização, possui controle sobre os sistemas operacionais, armazenamento, aplicações instaladas e possivelmente um controle limitado dos recursos de rede. Segundo Buyya (2008), a arquitetura de computação em nuvem é baseada em camadas, em que cada camada trata de uma particularidade na disponibilização de recursos. A Figura 4 apresenta cada uma dessas quatro camadas: a camada de hardware/datacenter, a camada de infraestrutura, a camada de plataforma e a camada de aplicação. Para Leimester et al., (2010) cada camada representa um nível de abstração, escondendo do usuário todos os componentes subjacentes e permitindo assim o acesso simplificado aos recursos ou funcionalidade, descritos a seguir. Figura 4 - Arquitetura da Computação em Nuvem Fonte: Elaborado pelo autor com base em (BUYYA, 2008). 19  Camada de hardware: Em sua composição tem-se servidores, roteadores e switches. Está tipicamente implementada em um datacenter, com milhares de servidores organizados em racks e interconectados por roteadores e switches. Nessa camada compreende à configuração de hardware, tolerância a falhas, gerência de tráfego, energia, gerência de refrigeração. Dentro da computação em nuvem, esta é a única camada que não pode ser sublocada, pois não há virtualização dos recursos. Ou seja, a sublocação desta camada equivale ao aluguel físico dos equipamentos, caracterizando assim terceirização dos recursos físicos de computação, como máquinas, servidores e cabeamento, portanto, não se trata de computação em nuvem; (AVILES et al., 2012)  Camada de infraestrutura: Visa o gerenciamento dos servidores físicos e o aproveitamento do potencial computacional. É essa camada que cede recursos para que as outras camadas possam utilizá-las. Quando esta camada é utilizada pelo consumidor, a computação em nuvem caracteriza-se no modelo de infraestrutura como serviço (IaaS). Em seu modelo tem-se um conjunto de recursos computacionais e de armazenamento através do particionamento dos recursos físicos utilizando tecnologias de virtualização (Xen, KVM, VMWare, entre outros). A atribuição dinâmica destes recursos pode ser realizada graças à virtualização;  Camada de plataforma: Oferece a linguagem de programação para os desenvolvedores de aplicação na nuvem. O ambiente de software também oferece um conjunto de interfaces de programação de aplicações, conhecidas como API (Application Performance Interface). Sendo alocada para o usuário, caracteriza-se no modelo de plataforma como serviço (PaaS). Algumas de suas características relacionam-se ao uso do sistema operacional e frameworks de aplicação, que minimizam o ônus de disponibilizar aplicações diretamente sobre as VMs (Máquinas virtuais). Como exemplo, tem-se o Google App Engine, que opera no nível de plataforma para prover APIs (que suportam implementação de armazenamento / bancos de dados e lógica de aplicações web típicas), e  Camada de aplicação: Geralmente é acessada por portais através da internet usando uma interface na qual o usuário interage quando usa a computação em nuvem. Caracteriza-se o modelo de software como serviço (SaaS). É a camada 20 mais visível ao usuário final, portanto a mais comumente usada como serviço. (AVILES et al., 2012) 2.4 Segurança na computação em nuvem É um quesito que deve ser bem analisado para o ambiente da computação em nuvem, uma vez que existe o uso de seus respectivos serviços por terceiros, sendo utilizado para hospedar informações importantes ou executar operações críticas. Neste contexto, há também os quesitos legais que se deve dar atenção, pois quando estes dados são movidos para uma nuvem, os provedores podem optar em armazená-los em qualquer lugar (a localização física dos datacenters implica em estar sujeito a um conjunto de leis do país ou estado, que podem ser aplicadas para o gerenciamento das informações ali armazenadas). As ameaças de segurança podem ocorrer no provisionamento de recursos e durante a execução de aplicativos distribuídos. Serviços de nuvem devem preservar a integridade dos dados e a privacidade do usuário e, ao mesmo tempo, devem aumentar a interoperabilidade entre vários prestadores de serviços em nuvem. Os problemas de segurança são voltados especificamente para fornecedores de nuvem pública, uma vez que as organizações têm um maior controle de cada camada de segurança, quando o modelo de implantação de nuvem privada é usada. (NIST, 2014) O Quadro1 apresenta um resumo das questões de segurança para o ambiente da computação em nuvem. 21 Quadro 1- Definição das Questões de Segurança em Nuvens. Questão Descrição Governança / concordância Concentra-se em políticas e procedimentos necessários para ser seguido pelas unidades organizacionais. Também levanta uma questão dos riscos de segurança da informação, uma vez que o risco empresarial ocorre devido à falta de controle dos serviços oferecidos pela nuvem, e recomenda o uso de ferramentas de auditoria e a implantação de programa de gestão de risco. Confiança Aborda sobre vários tópicos e questões de ameaças internas causadas por multi inquilino, propriedade de manutenção de dados, direitos de propriedade intelectual, risco da gestão, ganho de visibilidade e controle de segurança oferecido pelo CSP (Provedor de Serviços da Nuvem). Arquitetura Discute as questões relativas a software e sistemas utilizados pela plataforma de nuvem. A maior parte das questões discutidas relaciona-se as suas características de plataformas de computação em nuvem, que são completamente diferentes em comparação aos tradicionais datacenter. Para arquitetura são tratadas questões como segurança do hypervisor, proteção de rede virtual, imagens de máquinas virtuais e proteção do lado do usuário. Gerenciamento do acesso e identidade Aborda a verificação da identidade, autenticação e mecanismos de controle de acesso. É também recomendado o uso do Security Assertion Markup Language (SAML) para a troca de dados de autenticação e autorização entre domínios e Extensible Access Control Markup Language (XACML) para definição do controle de acesso. Software de isolamento Adverte sobre as ameaças associadas com multi inquilino, assim como do vetor de ataque. Proteção das informações Verifica a necessidade de privacidade de dados e isolamento, como as informações de diferentes usuários hospedadas em um mesmo datacenter na plataforma de computação em nuvem. Disponibilidade Discute sobre as ameaças que têm um impacto negativo para os recursos organizacionais. Resposta de incidente Foca na reativação de contramedidas para ataques de ameaças em um ambiente de nuvem. Fonte: Adaptado de NIST (2014). 22 2.5 Vantagens e riscos da computação em nuvem A computação em nuvem proporciona uma economia financeira convincente em TI, incluindo menores custos de implementação e manutenção; menos hardware para aquisição e apoio; eliminação do custo de energia, refrigeração, espaço físico e de armazenamento. A administração dos recursos a serem disponibilizados e utilizados para a empresa que adere ao modelo de nuvem fica a cargo do prestador de serviço que foi contratado; com isso, obtém-se uma redução nos custos operacionais e paga-se apenas pelo que é utilizado (serviço medido). A computação em nuvem também permite que as organizações aumentem sua competitividade devido a utilização de plataformas de computação flexíveis e ágeis e prevê escalabilidade e de alto desempenho, aplicativos e dados altamente confiáveis e disponíveis. Segundo Kim (2009) a computação em nuvem oferece quatro importantes benefícios que seus consumidores podem levar em consideração:  Redução de investimento e custeio: Os provedores são os proprietários e gerenciam todos os recursos computacionais, cabendo aos consumidores unicamente conectarem-se às nuvens. Neste contexto, os consumidores não necessitam fazer aquisição de uma grande quantidade de recursos de infraestrutura em computação para dar início a sua operação de TI, tampouco prover espaço físico para instalações ou ter um elevado custo de consumo de eletricidade, manutenção operacional e de remuneração de pessoal especializado;  Escalabilidade dinâmica: Os consumidores podem aumentar ou reduzir o nível de utilização de serviços ou recursos computacionais de modo simples e com flexibilidade;  Menor preço relativo: Em geral, o custo dos serviços na computação em nuvem são inferiores aos dispêndios demandados por uma operação própria, pois os consumidores pagam apenas pelos recursos ou serviços efetivamente utilizados, sem a necessidade de manter uma parcela de capacidade ociosa para fazer frente a situações de pico, e  Facilidade de acesso: Pode-se acessar as nuvens e demandar serviços a qualquer momento e de qualquer lugar. 23 A computação em nuvem não é isenta de riscos ou completamente segura. Para os riscos em computação em nuvem, o problema seria a parada imprevista de algum evento, ou propriamente o objetivo do negócio. A computação em nuvem está em constante evolução, com desafios em relação a confiança, eficiência, segurança, custos e legislação, o que influencia o seu uso a partir da perspectiva do seu usuário final. Alguns riscos devem ser observados: (BUYYA et al., 2013)  Acesso compartilhado: Refere-se à nuvem pública que é o modelo de multi inquilino, uma única instância lógica compartilhada por centenas ou milhares de usuários. Por conta dos riscos que envolvem o compartilhamento de recursos, vulnerabilidades de multi inquilino são muito preocupantes, porque uma falha pode permitir que outro inquilino ou atacante veja todos os outros dados ou assuma a identidade de outros usuários;  Vulnerabilidades virtuais: Os servidores virtuais estão sujeitos aos mesmos ataques que atingem os servidores físicos, assim como novas ameaças estão explorando falhas do hypervisor;  Autenticação, autorização e controle de acesso: A privacidade e a integridade das informações são itens de suma importância, pois, especialmente em nuvens públicas, existe uma grande exposição a ataques. Dentre as capacidades requeridas para evitar a violação das informações estão: a criptografia dos dados, o controle de acesso rigoroso e o sistema eficaz de gerenciamento de cópias de segurança, (KAUFMAN, 2009) e  Disponibilidade: Para quem usa os serviços de nuvem pública, redundância e tolerância a falhas não estão sob seu controle. O usuário não tem a garantia que as medidas cabíveis, como a realização de backups, são realizadas. Uma possível solução para este problema seria implementar micro nuvens privadas, nas quais apenas os aplicativos importantes seriam disponibilizados, retornando à nuvem pública assim que o provedor volta a operar. (ARMBRUST et al., 2009) A computação em nuvem, ainda projeta algumas contradições, no que se refere a seus conceitos, na padronização de comercialização e implementação. Atribuição de preço pelo tipo de serviço oferecido, provisionamento autônomo de serviços, análise e gerência de 24 tráfego, tecnologias para armazenamento e gerência de informações, localização e instanciação automática de máquinas virtuais e gerência de execução de workflows em IaaSs concorrentes, são exemplos citados de contradições em meio ao ambiente de nuvem. (BUYYA, 2008) 2.6 Orquestradores de computação em nuvem Os orquestradores de computação em nuvem são responsáveis por realizar a harmonização e o gerenciamento dos recursos virtuais e componentes de infraestrutura no ambiente de nuvem, permitindo a alocação de servidores, plataformas e aplicações pelo próprio cliente. Nesta seção são descritos alguns orquestradores, apresentadas algumas de suas características básicas e uma visão geral de sua infraestrutura. 2.6.1 Eucalyptus Eucalyptus é uma plataforma de computação em nuvem de código aberto que permite construir sua própria nuvem privada de uma empresa corporativa. (SOUSA et al., 2014) Aproveita a infraestrutura de TI existente para criar uma nuvem privada self-service, ou seja, possibilita ao usuário criar sua própria estrutura de nuvem. Uma Infraestrutura como Serviço (IaaS) pode ser ativada, abstraindo os recursos de computação, rede e armazenamento disponíveis. O Eucalyptus cria um pool de recursos escaláveis que pode dimensionar dinamicamente, dependendo da demanda da aplicação. Através de uma parceria com a Amazon Web Services (AWS) 5 , mantém a compatibilidade da API, possibilitando aos usuários deslocar cargas de trabalho entre ambientes AWS e Eucalyptus. Conforme ilustrado na Figura 5, a arquitetura é composta pelos componentes Node Controller, Cluster Controller, Cloud Controller, Storage Controller e Walrus, descritos a seguir. (EUCALYPTUS, 2014) 5 Amazon Web Services (AWS) oferece um conjunto completo de serviços de aplicativos e infraestrutura que permitem executar praticamente tudo na nuvem desde aplicativos empresariais, armazenamento em banco de dados, jogos sociais e aplicativos móveis. 25 Figura 5 - Arquitetura do Orquestrador Eucalyptus Fonte: Adaptado pelo autor com base em (NURMI et. al., 2009).  Node Controller (NC) é o componente que executa os recursos físicos de uma máquina virtual. Desta forma, pode-se alocar apenas um Node Controller numa máquina física e diversos outros Node Controllers rodando em máquinas virtuais. Cada Node Controller é responsável por controlar a inspeção, execução e o término da respectiva instância;  Cluster Controller (CC) é o componente responsável por realizar o roteamento de pacotes entre as redes virtualizadas externa (pública) com a interna (privada). Desse modo, todas as manipulações realizadas nos recursos físicos alocados nos Node Controllers devem ser, necessariamente, gerenciadas pelo Cluster Controller;  Cloud Controller (CLC) é a entrada para aos administradores, desenvolvedores e usuário final. O Cloud Controller é responsável por consultar o nó de controle para obter informações sobre os recursos físicos, tomar decisões de programação de alto- nível e implementá-las por meio de requisições aos controladores dos clusters;  Storage Controller é o componente que implementa o acesso aos blocos de armazenamento em rede, como por exemplo Amazon Elastic Block Storage (EBS) e é capaz de interagir com sistemas de armazenamento, como o NFS e iSCI. Um bloco elástico pode ser anexado a uma máquina virtual com Linux, porém todo o tráfico de disco é enviado para um local de armazenamento remoto, e 26  Walrus é o módulo que permite aos usuários armazenar dados e organizá-los em buckets 6 . Além disso, no Walrus é possível inserir políticas de acesso aos buckets e aos dados armazenados. (NURMI et. al, 2009). 2.6.2 OpenNebula O OpenNebula é um kit de ferramentas de computação em nuvem para gestão de infraestruturas de datacenters distribuídos. O toolkit OpenNebula gerencia uma infraestrutura virtual de um datacenter para construir implementações privadas, públicas e híbridas de infraestrutura como serviço (IaaS). Este toolkit inclui recursos para integração, gerenciamento, escalabilidade, segurança e contabilidade. Ele também possui padronização, interoperabilidade e portabilidade, oferecendo aos usuários de nuvem e administradores a possibilidade de escolha de várias interfaces em nuvem (Amazon EC2, OGF Open Cloud Computing interface e vCloud) e hypervisors (Xen, KVM e VMware). Oferece uma solução simples, mas com recursos e flexibilidade para construir e gerenciar nuvens empresariais e datacenters virtualizados. Foi projetado para ser simples de instalar, atualizar e operar pelos administradores, e simples de ser utilizado pelos usuários finais. A arquitetura do OpenNebula é composta por três camadas para o gerenciamento da infraestrutura Drivers, Core e Tools, conforme pode ser apresentado na Figura 6. (OPENNEBULA, 2014) Figura 6 - Arquitetura do Orquestrador OpenNebula Fonte: Adaptado de OpenNebula (2014). 6 Buckets - Criação de uma área de armazenamento de dados (container). 27  Drivers: realiza à comunicação com a plataforma de sistema operacional, responsável por funções de criação, inicialização e desligamento de máquinas virtuais (VMs), armazenamento e provisionamento de VMs e monitora o estado operacional de máquinas físicas e virtuais;  Core: gerencia os ciclos de vida das máquinas virtuais e realiza a criação de rede virtual dinamicamente com atribuição de endereço IP dinâmico para uma VM. Com isso, torna-se uma solução de rede transparente para os usuários, e  Tools: são interfaces de linha de comando (CLI) com uso de API's que realizam a comunicação e gerenciamento de informações de usuários e máquinas virtuais. Há possibilidade de realizar interfaceamento direto na camada de core, proporcionando aos usuários externos acesso às funcionalidades de um recurso como, por exemplo, VM's. 2.6.3 Xen Cloud Platform O Xen Cloud Platform é uma solução opensource e gratuita para projeto de virtualização de servidor e plataforma de computação em nuvem. Combina as funcionalidades do hypervisor Xen como segurança, armazenamento, tecnologias de virtualização de rede, e todas as ferramentas necessárias para construção do ambiente em computação em nuvem. Destina-se a apoiar as implantações de nuvem privada e pública, originalmente derivado do XenServer, 7 que é uma solução Xen inventada pela Citrix. (ALMURAYH e SEMWAL, 2013) Segundo Citrix (2014), o XCP inclui o Xen Hypervisor, a funcionalidade de API toolstack Xen com funcionalidades como: capacidade de gerenciar pools de sistemas host, suporte para repositórios de armazenamento avançadas, suporte para multi inquilino, suporte para garantias de SLA, entre outros. Além disso, ele possui integração com outros orquestradores de nuvem, como o Apache CloudStack, OpenNebula e OpenStack. Algumas de suas características são:  Ciclo de vida da VM através de snapshots, ponto de verificação e migração;  Pools de recursos: armazenamento flexível e rede;  Acompanhamento de eventos: progresso e notificação; 7 XenServer é uma distribuição comercial da Citrix para XCP, onde está licenciado sob GNU General Public License (GPL2). 28  Capacidade de atualização automática de pacotes;  Monitoramento de desempenho em tempo real e alerta, e  Suporte integrado e modelos para os usuários Windows e Linux. 2.6.4 Microsoft Windows Azure Platform Suporta aplicativos criados no NET Framework e outras linguagens comuns suportadas em sistemas Windows, como C#, Visual Basic, C++ e outros. Windows Azure suporta programas de uso geral, ao invés de uma única classe de computação. Os desenvolvedores podem criar aplicações web utilizando tecnologias como o ASP.NET e Windows Communication Foundation (WCF). Estes aplicativos são executados como processos em segundo plano independentes, ou aplicações que combinam os dois. Essa tecnologia foi desenvolvida para oferecer suporte a aplicativos que são escalonáveis, confiáveis e cuja operação é de baixo custo. (AZURE, 2014) O orquestrador Windows Azure, conforme apresenta a Figura 7, pode ser usado por aplicativos executados na nuvem e por aplicativos executados em sistemas locais e consiste em três componentes e cada um deles fornece um conjunto específico de serviços para usuários em nuvem. Oferece um ambiente baseado em Windows para execução de aplicativos e armazenamento de dados em servidores e nos datacenters SQL Azure e também fornece serviços de dados na nuvem baseado em SQL Server. Enquanto que o NET Services oferece serviços de infraestrutura distribuídos para aplicativos baseados em nuvem e locais. (ZHANG, 2015) Figura 7 - Plataforma Windows Azure Fonte: Adaptado de Windows Azure (2014). Ainda segundo Azure 2014, algumas de suas principais características são: 29  CDN (Rede de distribuição de conteúdo): solução de cache distribuído ao redor do mundo. O objetivo principal é reduzir a latência de comunicação entre as aplicações;  HPC (High Performance Computing): é um serviço de computação de alto desempenho. Neste modelo é cobrada a hora de computação de acordo com o tipo de servidor escolhido. Exemplos de aplicações comumente encontradas em HPC são aquelas que utilizam código assíncrono e multithreads 8 ;  SQL Azure, Azure Tables e Blogs: recursos para armazenamento de dados disponíveis no Windows Azure. SQL Azure é o modelo relacional de armazenamento de dados. SQL Azure foi desenvolvido com os mesmos recursos do SQL Server tradicional, assim, é possível executar praticamente todas as operações já tradicionalmente realizadas no ambiente on-premises 9 . Disponibiliza também um modelo de armazenamento de dados não estruturados, chamado de Azure Tables. Profissionais acostumados a trabalharem com NoSQL tem suas necessidades atendidas com este modelo;  Service Bus: recurso que possibilita a integração entre diferentes sistemas através de serviços diversos. Service Bus pode ser entendido como um “hub de integração”;  Windows Azure Connect: recurso responsável por garantir a qualidade de conexão entre a nuvem e o(s) ambiente(s) on-premise(s) ao(s) qual(is) ocorrerá esta(s) conexão(es);  Active Directory: ao sofrer consideráveis melhorias em diversos aspectos o Access Control Service (ACS) tornou-se o que hoje, sendo conhecido como Windows Azure Active Directory. Em linhas gerais, WAAD é um hub dedicado a disponibilização de serviços para autenticação de usuários, e  Media Services: recurso dedicado a produção e compartilhamento de recursos de mídia (vídeo e áudio). 8 Multithreads - É a capacidade que o sistema operacional possui de executar várias threads (conjunto de tarefas existentes em um ou mais programas, executadas ao mesmo tempo pelo processador) simultaneamente sem que uma interfira na outra. Estas threads compartilham os recursos do processo, mas são capazes de ser executadas de forma independente. 9 On-premises- Sistemas ou aplicativos instalados em um recurso local, como um computador, sem a necessidade de acesso a internet para manter seu funcionamento. 30 2.6.5 OpenStack O orquestrador de nuvem do OpenStack é um software de código aberto, capaz de gerenciar os componentes de múltiplas infraestruturas virtualizadas, assim como o sistema operacional gerencia os componentes de computadores. O OpenStack é chamado de Sistema Operacional da Nuvem, por cumprir o mesmo papel em maior escala. É considerada uma plataforma de software por fornecer APIs que em conjunto são capazes de controlar todos os recursos disponíveis na oferta dessa infraestrutura, como máquinas virtuais, rede, armazenadores e balanceadores de carga. Até mesmo um painel de controle web está presente no OpenStack, em sua maior parte escrita em linguagem Python 10 . (OPENSTACK, 2014) O OpenStack é uma coleção de projetos de software de código aberto que as empresas ou provedores de nuvem podem utilizar para configurar e executar a sua própria computação em nuvem e infraestrutura de armazenamento. O projeto visa construir uma comunidade opensource com pesquisadores, desenvolvedores e empresas. É uma das maiores comunidades de desenvolvimento de computação em nuvem middleware 11 de código aberto do mundo, suporta virtualização com KVM, XEN, e HyperV, usando o emulador QEMU. Na implementação, o libvirt, biblioteca C / C ++, é usado para se comunicar com o hypervisor 12 da camada de middleware (WEN et al., 2012). Como uma plataforma de infraestrutura virtual, o OpenStack gerencia um grupo de recursos virtuais interdependentes, como máquinas virtuais, redes virtuais e volumes, e define os vários níveis do detalhamento de recurso virtual. A Figura 8 apresenta a arquitetura do OpenStack, dividida em componentes descritos a seguir: (CASTILLO et al., 2013). 10 Python - uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, funcional e de tipagem dinâmica. 11 Middleware - Camada adicional de software situada entre o nível de aplicação e o nível que consiste no sistema operacional, oculta da melhor maneira possível a heterogeneidade das plataformas das aplicações. 12 Kypervisor (Monitor de Máquinas Virtuais) -É uma plataforma de software que permite executar múltiplos sistemas operacionais simultaneamente em uma máquina física (host). 31 Figura 8 - Arquitetura do Orquestrador OpenStack Fonte: Adaptado de WEN et al. (2012).  Swift: Permite armazenar e recuperar arquivos que não estejam montados em um diretório. É um sistema de armazenamento em longo prazo para dados permanentes ou estáticos;  Horizon: Provê uma interface web modular para todos os componentes do OpenStack. Com a interface web visual é possível gerenciar mais facilmente os componentes da nuvem;  Nova (gerenciamento da nuvem): É o software que controla a infraestrutura de IaaS, alocando ou liberando recursos computacionais, como rede e autenticação;  Glance (serviço de imagens): Fornece um catálogo e repositório para imagens de disco virtuais. Estas imagens são mais utilizadas no Nova, que gerencia estas imagens;  Cinder (armazenamento de blocos): Fornece um armazenamento de blocos para as máquinas virtuais;  Neutron (antigo Quantum - serviço de rede): Provisiona serviços de rede para os componentes que são gerenciados pelo Nova. Permite aos usuários criar e anexar sua interface a ele, e  Keystone (serviço de identidade): Fornece autenticação e autorização para todos os serviços do OpenStack. 32 Segundo Hu e Yu (2013), o OpenStack é projetado para fornecer o máximo de flexibilidade sem requisitos de hardware ou de software proprietário, com a capacidade de integração com sistemas legados e tecnologias de terceiros. Além disso, é projetado para gerenciar e automatizar pools de recursos de computação e pode trabalhar com tecnologias amplamente disponíveis de virtualização, como bare metal 13 e computação de alta performance (HPC). Os administradores geralmente implantam o OpenStack usando um dos vários hypervisors suportados em um ambiente virtualizado. O KVM e o XenServer são as escolhas mais populares para tecnologia de hypervisor, além de serem recomendados para a maioria dos casos de uso. 2.6.6 Amazon EC2 (Elastic Compute Cloud) EC2 (Elastic Compute Cloud) é um serviço que permite ao usuário alugar os recursos computacionais da Amazon e executar máquinas virtuais sobre os datacenter da empresa. (Amazon, 2014). Algumas de suas principais características são: Endereços Elastic IP: Refere-se a endereços de IP's estáticos projetados para computação em nuvem dinâmica. Um endereço Elastic IP está associado à uma conta de usuário e não a uma instância específica, sendo que o próprio usuário controla esse endereço até que se decida liberá-lo. Amazon EC2 permite que o usuário gerencie os problemas com sua instância ou software através de remapeamento do seu endereço Elastic IP para uma instância de substituição. Além disso, pode-se opcionalmente configurar o registro de DNS reverso de qualquer um dos seus endereços Elastic IP. Amazon VPC: Permite que as empresas conectem sua infraestrutura existente a um conjunto de recursos computacionais isolados da Amazon, através de uma conexão de rede privada virtual (VPN). Assim, é possível expandir seus recursos de gestão existentes, tais como serviços de segurança, firewalls e sistemas de detecção de intrusão para incluir seus recursos a este orquestrador. Instâncias de armazenamento denso: ideal para clientes que precisam de densidade de armazenamento alta por instância. Possuem E/S sequencial elevada para aplicações com uso intensivo de dados como um armazenamento de dados com processamento paralelo 13 Bare Metal - É um hypervisor de tipo 1, software de virtualização que interage diretamente com a camada de hardware. 33 massivo (MPP 14 ), computação distribuída do MapReduce 15 e do Hadoop 16 e processamento de logs e dados que podem obter benefícios com as instâncias de armazenamento denso. O EC2 fornece a capacidade de colocar ocorrências em vários locais. No EC2 os locais são compostas por regiões e zonas de disponibilidade. Essas regiões consistem de uma ou mais zonas de disponibilidade dispersas geograficamente. Imagens de máquinas EC2 são armazenadas e retiradas da Amazon Simple Storage Service (Amazon S3). S3 armazena dados como "objetos" que são agrupados em "cubos". Cada objeto contém de 1 byte a 5 gigabytes de dados, seus nomes de objetos são essencialmente caminhos URI (Uniform Resource Identifier). Os cubos devem ser criados explicitamente antes de serem utilizados e podem ser armazenados em várias regiões. Os usuários podem escolher uma região para otimizar a latência, minimizar os custos, ou atender às exigências regulamentares (ZHANG, 2015). 2.6.7 Vmware vCloud Suite O VMware vCloud Suite é uma ferramenta comercial de código fonte fechado, para criação e gerenciamento de uma nuvem privada do VMware vSphere, que é a plataforma de virtualização de servidores da empresa, contendo o Hypervisor ESXi, da própria Vmware. É o orquestrador para computação em nuvem da empresa VMware, que permite que os clientes migrem sua carga de trabalho sob demanda a partir de sua nuvem privada de hypervisor da VMware para a nuvem pública também com uso dos hypervisors VMware. (VMWARE, 2014) Conforme ilustrado na Figura 9 é composto de diversos módulos que trabalham de forma integrada, baseado em produtos como o VMware vCenter Operations, VMware vFabric Application Director, VMware vCloud Networking and Security e VMware Recovery Manager. 14 MPP - É o processamento de um programa de forma coordenada em vários processadores. 15 MapReduce - Estrutura que permite escrever aplicativos que processam grandes quantidades de dados estruturados e desestruturados em paralelo, em um cluster de milhares de máquinas, de maneira confiável e tolerante a falhas. 16 Hadoop - É uma estrutura em código aberto para armazenamento e processamento distribuídos de grandes conjuntos de dados em hardware. 34 Figura 9 - Arquitetura do Orquestrador Vmware VCloud Fonte: Adaptado de Vmware (2014).  VMware vCenter Operations: proporciona uma abordagem integrada ao gerenciamento de desempenho do ambiente, através de painéis de controle pré- integrados e configuráveis para realizar a coleta e medições em tempo real;  VMware vFabric Application Director: ferramenta que realiza o desenvolvimento e o provisionamento de soluções ou aplicativos de forma simplificada e padronizada a topologia de uma nuvem IaaS;  VMware vCloud Networking and Security: fornece a entrega de serviços em rede através da criação de dispositivos virtuais como VPN (Rede privada virtual), firewall, balanceamento de carga, endereço de rede (NAT) e DHCP, e  VMware Recovery Manager: evita o ponto de acesso em storage que esteja subutilizado ou superutilizado. Proporciona mecanismos de posicionamento nas máquinas virtuais e de balanceamento de carga com base em I/O e capacidade de espaço. É utilizado para agregar recursos de armazenamento, habilitando o posicionamento dos arquivos do disco de uma máquina virtual e o balanceamento de cargas de trabalhos existentes. Por se tratar de uma solução proprietária, o orquestrador não disponibiliza que se realize interfaceamento de seus módulos com uso de outras ferramentas a fim de monitorar e analisar mensagens de comunicação geradas pela Web vSphere por exemplo. Com isso, torna- se difícil sistematicamente analisar e monitorar estas mensagens para mensurar o desempenho 35 adequado da solução de problemas que venham a ocorre em um ambiente de computação em nuvem. (LIANG et al., 2011) 2.6.8 Apache CloudStack O Apache CloudStack é um software de código aberto projetado para oferecer serviços de nuvem pública, e por muitas empresas para fornecer uma infraestrutura local (privada) em nuvem, ou como parte de uma solução de nuvem híbrida. Inclui toda a lista de recursos que a maioria das organizações precisam com uma nuvem IaaS: gerenciamento de máquinas virtuais, rede como serviço, gerenciamento de usuários e conta e uma API nativa e aberta. Atualmente, suporta os principais hypervisors: VMware, KVM, XenServer, Xen Cloud Platform (XCP) e Hyper-V. O orquestrador integra e gerencia esses recursos virtuais para construir plataforma de nuvem e fornece serviços de nuvem transparente para os usuários. Ele é responsável pelo mapeamento de recursos virtuais para recursos de hardware e possibilita o isolamento de segurança entre os usuários. (CLOUDSTACK, 2014) Conforme apresentado na Figura 10, esse orquestrador é compatível com os recursos de infraestrutura existentes. O design modular permite que o usuário personalize o funcionamento do sistema conforme necessário. Além disso, o Apache CloudStack fornece API que é compatível com a AWS EC2 e S3 para as organizações que desejam implantar nuvens híbridas. (CHEN e XU, 2013) Figura 10 - Arquitetura do Apache CloudStack Fonte: CLOUDSTACK (2014). 36 Os recursos de hardware são abstraídos e provisionados em recursos de computação através do gerenciamento e armazenados por meio do uso de hypervisors. O Apache CloudStack integra e gerencia esses recursos virtuais para construir uma plataforma de nuvem, fornecendo serviços de nuvem transparente para os usuários. Ele é responsável pelo mapeamento de recursos virtuais para recursos de hardware e possibilita o isolamento de segurança entre os usuários. (CHEN e XU, 2013) A seguir é apresentada uma descrição dos componentes que fazem parte da arquitetura do orquestrador Apache CloudStack. (BARKAT et. al, 2014)  Servidor Físico: Um host é uma representação de um servidor físico, este é virtualizado por hypervisors (por exemplo, Xen, KVM, vSphere, Hyper-V, VMWare), que por sua vez faz o gerenciamento e os serviços a serem provisionados por meio de máquinas virtuais;  Cluster: Dentro de um cluster, os hosts são acolhidos em um mesmo pool computacional com armazenamento primário, em uma mesma sub rede de IPs. Para o armazenamento primário, aceita qualquer tipo de armazenamento suportado pelo hypervisor. Pode ter mais de um dispositivo de armazenamento principal;  Pod: É uma coleção de diferentes clusters ligados através de switch na camada 2 e sua representação é de um rack de servidor. Os hosts estão no mesmo pod com a mesma sub rede e não é visível para o usuário final;  Zona: É uma coleção de pods. A vantagem do uso da zone está no isolamento e na redundância, permitindo com isso que os operadores de nuvem tenham várias zones de disponibilidade dentro de um determinado datacenter. Os pods de uma zona utilizam o armazenamento secundário, através de switch na camada 3;  Região: Remete-se a maior unidade organizacional do orquestrador Apache CloudStack. As regions contêm várias zones, distribuídas em localidades geograficamente distintas de cada uma delas, e  Management Server: Responsável pelo gerenciamento de todos os recursos da infraestrutura na nuvem através de APIs ou via administração de interface web. A implantação deste gerenciador pode ser realizada em um servidor físico ou por uma 37 máquina virtual. Para uma alta disponibilidade no ambiente do orquestrador, este gerenciador pode ser duplicado, desde que o utilizador visualize as mesmas informações independente de qual servidor acesse. Também existe a necessidade da instalação de um banco de dados, para que o management server seja persistente. Em questão de armazenamento faz-se necessário a configuração de um host físico subdividido em dois tipos principais de storages: primary storage e secondary storage, descritos a seguir.  Armazenamento Primário: Este storage é associado a um cluster ou uma zone. Para um mesmo cluster, pode-se implantar vários primary storage. Este tipo de storage é basicamente utilizado pelo hypervisor em nível de armazenamento contendo a instalação das máquinas virtuais. Este storage interage diretamente com as aplicações na máquina virtual, podendo acarretar um alto custo em termos de entrada/saída para suas operações, e por essa razão deve ser implementado em um meio físico próximo aos seus hosts da nuvem, e  Armazenamento Secundário: Utilizado para armazenamento de template, snapshot, ISO storage e ocorrência de eventos. o Imagens ISO storage: utilizada no momento em que um usuário necessita da criação de uma máquina virtual. o Template: é a imagem base do sistema operacional que o usuário pode escolher quando criar uma nova instância. Há possibilidade de se incluir informações adicionais a sua configuração, tais como instalação de aplicativos, e o Snapshot: usado como backup de dados e recuperação de serviços.  Network: Suporta a utilização de diferentes dispositivos de rede física (por exemplo NetScaler, F5 BIG-IP, Juniper, SRX, entre outros). Os usuários tem a possibilidade de escolher dois tipos de cenários de rede: básico e avançado. o Cenário básico: Trata-se de redes em estilo AWS. Provê uma rede única a cada instância de máquina virtual com um endereço IP diretamente da rede. O isolamento dos guests pode ser provido através de switch de camada 3, e 38 o Cenário avançado: É mais flexível para definição de guest na rede, por exemplo, assim o administrador pode criar redes múltiplas para serem utilizadas pelo guest, por exemplo. 2.7 Considerações Finais Esse capítulo apresentou um levantamento sobre computação em nuvem, suas principais características, virtualização, modelos de infraestrutura, diferentes recursos e arquitetura, modelos de níveis de serviços, segurança, vantagens e riscos. A Figura 11 apresenta uma síntese entre os principais orquestradores de nuvem analisados neste capítulo, demonstrando tipo de serviço, versões, tipos de códigos, arquitetura, hypervisors, API, drivers autenticação, algoritmo de escalonamento, movimentação instâncias tempo real, configuração de rede para instâncias, sistema operacional hospedeiro e autenticação para conexão à instância. Entre os orquestradores abordados, ressalta-se o Apache CloudStack, tendo seu maior impulsionador a empresa Citrix, contando com comunidades de desenvolvimento opensource e a Apache Software Foundation. Outro ponto a ser observado é a questão desta nuvem ser o orquestrador de Iaas (Infraestrutura como Serviço) de empresas de grande porte em ambiente de produção. (CLOUDSTACK, 2015) 39 Figura 11 - Principais Características dos Orquestradores de Computação em Nuvem Fonte: Elaborado pelo autor. 40 3 Auditoria e Monitoramento em Computação em Nuvem Neste capítulo são apresentados os principais conceitos sobre auditoria e monitoramento em nuvem. A auditoria é utilizada para rastrear a execução de rotinas administrativas em instâncias de máquinas virtuais, utilização de dados intermediários e procedimentos aplicados. Essa informação é essencial para o entendimento, descoberta, validação de dados e processos. O monitoramento deve ser efetuado em intervalos de tempos contínuos ou discretos, realizando a medição dos eventos consistentes e inconsistentes das instâncias de máquinas virtuais disponibilizadas no ambiente de nuvem. 3.1 Introdução à Auditoria e Monitoramento em Nuvem Ferramentas de auditoria e monitoramento devem oferecer mecanismos adicionais, que mantenham o ambiente de computação em nuvem confiável, realizem a verificação das informações com segurança, permitam eliminação de inconsistências, e promovam a disponibilidade dos recursos a seus usuários. Para realizar esta análise faz-se necessário o entendimento de conceitos, como auditoria e monitoramento em nuvem. (ISMAIL et. al, 2015) Auditoria em computação em nuvem refere-se a garantir que a nuvem atenda às expectativas desejadas, com o alcance dos objetivos organizacionais de forma eficaz e consiga realizar de forma eficiente o monitoramento do consumo de recursos através da coleta de informações e avaliação das evidências. (WAQAS et. al, 2013) O monitoramento tem como objetivo garantir que um conjunto de sistemas, processos e procedimentos sejam implementados na plataforma de computação em nuvem. O objetivo é proporcionar uma resposta imediata quanto a questões de alterações injustificadas ou a eventos relacionados ao ambiente de nuvem. (ISMAIL et. al, 2015) 3.2 Técnicas e Método para Auditoria e Monitoramento em Nuvem Há muitos aspectos para realização de auditoria e monitoramento em nuvem, como infraesturura, integridade de dados, segurança, desempenho e privacidade. A seguir são apresentados algumas técnicas e métodos utilizados nesse trabalho. (MEERA e GEETHAKUMARI, 2015) 41  Técnica da introspecção de máquina virtual: A virtualização é a espinha dorsal da computação em nuvem, e portanto é crucial oferecer técnicas que realizem não somente o monitoramento de forma estática, mas também em tempo real deste ambiente, através da VMI 17 ( Virtual Machine Introspection), colabora com a tradicional técnica forense, para realizar uma investigação de falha ocorrida em máquinas virtuais em tempo real;  Técnica de medição de integridade de máquina virtual: Tem como objetivo medir o formato de ELF 18 (Executable and Linkable Format), executa em um sistema operacional e permite realizar uma terceira etapa, que é verificar se esses ELF são confiáveis. (YAQIANG et. al, 2014);  Método de proveniência de dados: Auxilia no rastreamento da origem dos dados e, por consequência, auxilia no gerenciamento de informações coletadas em ambientes de sistemas distribuídos, e  Técnica de auditoria de consistência de dados: Garante a consistência no armazenamento em nuvem, que envolve a entrega de dados de armazenamento como um serviço que necessita garantir o acesso ubíquo 19 , para isso o provedor da nuvem utiliza técnicas de replicação de dados em vários servidores distribuídos geograficamente. (DIVYA e REDDY, 2015) 3.3 Principais Características para uma Ferramenta de Auditoria e Monitoramento O ambiente de nuvem compreende vários desafios como versatilidade, escalabilidade, interoperabilidade, segurança, diagnóstico e automação. Na maioria dos casos, a segurança é considerada como um parâmetro extra para se estender o desenvolvimento de software ou configuração do ambiente e não faz parte essencial do processo. No entanto, a segurança é indispensável para qualquer ambiente computacional, em virtude de prover qualidade e impedir que ocorram danos ou riscos a fatores essenciais como, por exemplo, controle de acesso, integridade de informações, entre outros. Um dos requisitos 17 VMI: É o processo utilizado para analisar o estado do sistema dinamicamente, sendo este a máquina virtual (VM), como por exemplo, quais processos estão sendo executados ou quais conexões de rede estão ativas. 18 ELF: É um padrão para arquivos executáveis, arquivos-objeto e bibliotecas. 19 Acesso ubíquo: Promove a ideia de que os computadores estarão em todos os lugares e em todos os momentos auxiliando o ser humano sem que ele tenha consciência disso. 42 para ser aplicada é o monitoramento que deve compreender os mecanismos de análise que possam proporcionar ao administrador do provedor o acompanhamento e controle das informações. (MADHUBALA, 2015) Para auditar a conformidade de segurança um sistema automatizado deve coletar todas as informações relevantes a partir de diferentes fontes dentro de uma nuvem, converter os dados coletados em um formato consistente e reconstruir qualquer falta de correlação entre estes dados, antes de incluí-los em uma ferramenta para análise. (MAJUMDAR, et. al, 2015) O ambiente de computação em nuvem enfrenta problemas que precisam ser monitorados e analisados, para prover a confiabilidade e evitar falhas que possam causar a indisponibilidade de algum serviço. A seguir são apresentadas algumas das principais características que os sistemas de monitoramento devem conter. (IRIMIE e PETCU, 2015).  Escalabilidade: O sistema de monitoramento deve ser composto por diferentes módulos, que possam ser replicados em função da carga e o nível de tolerância a falhas, para que seja também executado em outras instâncias que irão receber esta nova carga;  Portabilidade: O sistema de monitoramento deve ser transportado com facilidade entre os provedores de nuvem e plataformas de todos os seus componentes do sistema a serem implementados na máquina virtual;  Inquilinidade: O sistema deve possibilitar que diversos recursos de vários usuários possam ser monitorados ao mesmo tempo. Neste sentido, usuários podem realizar seus trabalhos sem que este monitoramento comprometa seu resultado;  Interoperabilidade: O sistema pode realizar o monitoramento dos recursos de diferentes provedores de nuvem, desde que não permita à exposição da informação destes recursos durante a realização deste processo;  Customizabilidade: Permite que clientes realizem customizações através de alteração de parâmetro, por exemplo, para verificação específica ou outra alteração que ocorra no ambiente;  Extensibilidade: A arquitetura permite a configuração de novas ferramentas de monitoramento, para que possam auxiliar e facilitar o entendimento das informações coletadas a serem analisadas a partir deste ambiente assim, é preciso manter a compatibilidade na realização da execução do processo solicitado, e 43  Acessibilidade: Todos os componentes, de preferência da ferramenta, devem ser desenvolvidos com utilização de linguagem opensource, sendo possível ser adaptado à necessidade específica através de alteração do código fonte. Vários provedores oferecem soluções próprias para monitoramento dos recursos de nuvem, visando com isso proporcionar maior integridade das informações, diminuir os incidentes e prover a segurança para o ambiente. A seguir são apresentadas algumas dessas ferramentas de monitoramento e auditoria utilizadas em nuvem. (PARK et. al, 2012)  CloudWatch: Ferramenta proprietária da AWS orquestrador Amazon, permite a visualização de informações sobre padrões de acesso, a utilização de recursos e métricas de desempenho. Possibilita coleta de dados como tráfego de rede, uso da CPU e utilização do disco. O acesso é realizado via linha de comando ou API de serviço web;  AzureWatch: Ferramenta proprietária para os clientes do orquestrador Windows Azure, monitora a integridade e a disponibilidade, possibilita criar alertas para receber notificações quando a disponibilidade do serviço for prejudicada e personalizar os gráficos de métricas;  Rackspace Cloud Monitoring: Ferramenta proprietária que substituiu o Cloudkick, monitora serviços de nuvem da Rackspace e serviços de outros fornecedores. Possibilita a criação de alertas, utiliza gráficos gerados a partir da coleta de métricas do ambiente para identificar tendências e padrões no consumo de serviços, (RACKSPACE,2013) e  CloudClimate: Ferramenta de monitoramento gratuita, possível de ser utilizada pelos orquestradores da AWS, GoGrid CloudServers e NewServers. Os tipos de dados são métricas relacionadas ao desempenho da CPU, uso de memória e acesso a disco, que são coletados com a ferramenta PRTG Network Monitor (software de monitoramento de rede). Armazena estas informações em um único local para que o usuário realize comparação do desempenho destes fornecedores, que são exibidos em forma de gráficos. (CLOUDCLIMATE, 2013) 3.4 Normas para Auditoria e Monitoramento em Nuvem As normas sugerem procedimentos, métodos e ferramentas que devem ser utilizadas no ambiente de computação em nuvem, para manter a segurança, confiabilidade e integridade de 44 um recurso virtual, para manter a disponibilidade de seus serviços oferecidos aos usuários da nuvem e como realizar a prevenção de possíveis indisponibilidades ou falhas deste serviço a ser disponibilizado. 3.4.1 ISO/IEC 17788 Apresenta uma visão geral e vocabulário da computação em nuvem, para aspectos importantes de comportamentos ou recursos, que precisam ser coordenados na implementação dos papéis de um sistema de computação em nuvem consistente e seguro. Os comportamentos e recursos chaves para a auditoria e monitoramento são:  Auditabilidade: Capacidade de coletar informações para realizar análise dos eventos que possam demonstrar às operações e o funcionamento da utilização de um serviço de nuvem, com a finalidade de realização de uma auditoria, e  Segurança física e segurança de aplicativos: Incluem requisitos, como autenticação, autorização, disponibilidade, confidencialidade, gerenciamento de identidade, integridade, auditoria, monitoramento, resposta a incidentes e gerenciamento de política de segurança. (ISO, 2014) 3.4.2 ISO/IEC 17789 sessão 8.5.12.1 Para atividades de gerenciamento para o ambiente de computação em nuvem não são apenas aspectos condicionados aos prestadores de serviços em nuvem, mas também afetam aos usuários, parceiros de serviços em nuvem e suas sub-funções. A segurança dos recursos no ambiente de computação em nuvem inclui atividades de gestão e administração, que são utilizados para o controle do uso e prestação de serviços e recursos subjacentes. Como forma de prevenir problemas na segurança a estes recursos e serviços, são apresentados alguns requisitos que devem ser implementados nas atividades de gestão e administração, conforme a seguir: (ISO, 2014)  Ferramentas que permitem realizar detecção precoce e diagnóstico, verificar a estabilidade do serviço de nuvem e reportar os problemas relacionados com os recursos;  Segurança na autenticação das informações, relatórios de atividades, monitoramento de sessão e inspeções de pacotes na rede, e 45  Implementação de firewall, detecção de ataques maliciosos e prevenção para os sistemas dos prestadores de serviços em nuvem. 3.4.3 NIST SP 500-292 Para o gerenciamento dos serviços em nuvem, pois inclui todas as funções que estão relacionadas a seus serviços, visando atender à necessidade na gestão e operação dos serviços exigidos ou propostos pelos usuários. Pode ser descrita a partir da perspectiva do suporte ao negócio, provisionamento e configuração, e do ponto de vista das exigências de portabilidade e interoperabilidade, como apresentado a seguir: (NIST, 2011) Suporte ao Negócio  Gestão de clientes: Gerenciar contas de usuários, perfis, relacionamentos com clientes, fornecer um ponto de contato e resolver os problemas dos clientes;  Gestão de contratos: Administração dos contratos de serviços para instalação, negociação e encerramento;  Gerenciamento de inventário: Configurar e gerenciar catálogos de serviços;  Contabilidade e Faturamento: Gerenciar informações de faturamento do usuário, enviar declarações de faturamento, processo de recebimento de pagamentos e detalhamento de faturas, e  Informação e auditoria: Monitorar as operações do usuário e emissão de relatórios. Provisionamento e configuração.  Rápido provisionamento: Implementação automática de sistemas de nuvem com base nos serviços, recursos e capacidades que são requisitados;  Alterações dos Recursos: Ajustar a atribuição de configuração dos recursos visando sua manutenção, melhoria e também ao ser adicionado novos nós na nuvem;  Monitoramento e Relatório: Auditar e monitorar os recursos virtuais, monitoramento de operações e eventos na nuvem e geração de relatórios de desempenho; 46  Medição: Apresentar a medição da capacidade de algum nível de abstração apropriado para o tipo de serviço (por exemplo, armazenamento, processamento, largura de banda e contas de usuários ativos), e  Gestão de SLA (acordo de nível de serviço): Engloba a definição de contrato de SLA (esquema básico como os parâmetros de QoS (qualidade de serviço)), monitoramento de SLA e execução SLA de acordo com as políticas definidas. Exigências de portabilidade e interoperabilidade  Portabilidade dos dados: É a capacidade dos usuários na nuvem de copiar objetos de dados para dentro ou fora de uma nuvem ou usar um disco para a transferência de dados em massa, e  Interoperabilidade: é o serviço que tem a capacidade para seus usuários da nuvem em utilizar seus dados e serviços entre vários provedores de nuvem com uma interface de gestão unificada. Dentre as atividades de gerenciamento no ambiente de nuvem, o monitoramento exerce um papel fundamental no acompanhamento do sistema. É fundamental para detectar falhas de funcionamento e também serve como base para atividade de planejamento e melhorias. Por isso, acompanhar essas mudanças e desenvolver ou estender modelos e técnicas de monitoramento é uma atividade constante, desempenhando um papel importante não apenas técnico e gerencial, mas também de agente propagador de novas técnicas e impulsionador de novas tecnologias. 3.5 Trabalhos Relacionados Nesta sessão são apresentados alguns trabalhos relacionados que demonstram a importância em relação a segurança, a confiabilidade e integridade de dados para se evitar a indisponibilidade dos serviços no ambiente de nuvem, através da auditoria e monitoramento em nuvem. O trabalho desenvolvido por Xu et al. 2014 realiza coleta de informações dos logs de instâncias criadas na nuvem, proveniente de um processo de atualização sem interrupção. Com a utilização das ferramentas Redis, Logstash, ElasticSearch e Kibana, estes logs 47 distribuídos podem ser armazenados em um único log central. Neste log são aplicadas expressões regulares, algoritmos e API's. Tais aplicações permitem a detecção de 91,95% dos erros nas informações analisadas e um aumento na precisão de diagnóstico de causa raiz de 97,13%. O trabalho de XU et al., 2015 realiza o algoritmo de aprendizagem estatística SVM (Support Vector Machine), sendo utilizado um interfaceamento por meio de API's na ferramenta de monitoramento CloudWatch da AWS que fornece uma série de métricas da nuvem como (I/O, CPU, redes etc) para serem analisados por este algoritmo. Com isso, determina quais os eventos que devem ser desativados, proporcionando aos administradores que não recebam alarmes de falsos positivos e falsos negativos ou até mesmo uma inundação de alarmes de diferentes canais sobre o mesmo evento. Com este modelo implementado obteve-se taxa de precisão de 0,421 (84,7%). Os autores XIAOJIANG e YANLEI, 2013 apresentam a importância do uso de um framework para monitoramento de recursos, assim como o que é utilizado pelo orquestrador OpenStack opensource, que monitora o desempenho de métricas na utilização de CPU, uso de memória e rede de I/O de recursos físicos e virtuais. Foi desenvolvido um subsistema de monitoramento de recursos, que armazena informações coletadas em um banco de dados de arquitetura NoSQL, para prover otimização na gestão das informações. Os autores enfatizam que nos testes realizados, por estas informações estarem armazenadas em uma base de dados NoSql, não houve falhas na integração e armazenamento, funcionou sem problemas, manteve a integridade dos dados, além de ser mais elástico. LIN et al., 2015 apresenta em seu trabalho que o acesso a todos os recursos e serviços oferecidos na nuvem são através de autenticação. Foi implementado um framework que monitora este acesso que se inicia através do login, com interfaceamento de API's com as informações do banco de dados na nuvem. Através desta coleta de informações pelo login no ambiente é realizada a identificação do nível de usuário que está realizando este acesso. Com isso, faz-se uma separação destas informações para serem armazenadas em logs diferentes, para impedir que fiquem juntas no mesmo log as informações de administradores e usuários, sendo que a criação destes logs na base de dados obedece a critérios de privilégios e determina quais recursos e serviços são acessados. O trabalho de SALEH et al., 2013 utiliza o conceito de CEP (Complex Event Processing) de como detectar um evento ou determinar o padrão de evento que ocorreu ou http://ieeexplore.ieee.org/search/searchresult.jsp?searchWithin=%22Authors%22:.QT.Chung-Yi%20Lin.QT.&newsearch=true 48 não, coordena o tempo de ação de resposta e descobre padrões complexos entre múltiplos fluxos de dados do evento. Esse conceito é utilizado principalmente para o BPM (Business Process Management) e áreas afins. Através do CEP foi desenvolvido um framework que realiza o monitoramento automatizado das métricas coletadas como CPU, memória e disco, a partir da utilização de sensores que possibilitam gerenciar e ajustar os recursos em tempo real, para atender as SLAs (Acordo de Nível de Serviço) do provedor enquanto estes recursos ainda não estão provisionados. 3.6 Considerações Finais Este capítulo apresentou conceitos importantes sobre a auditoria e o monitoramento de serviços e recursos em nuvem, evidenciando a importância na implementação de mecanismos e ferramentas de monitoramento do ambiente de nuvem, como é demonstrado por algumas normas da Sessão 3.4. Foi evidenciado o surgimento de falhas capazes de impedir a continuidade e disponibilidade dos serviços que são oferecidos aos usuários da nuvem. Um ponto relevante apresentado na Sessão 3.3 é o tipo de dado que as ferramentas de monitoramento captam, sendo a maioria apenas métricas de desempenho. No capítulo seguinte são apresentados os materiais e métodos utilizados neste trabalho e são listados os métodos utilizados para coleta de dados e monitoramento. 49 4 Material e Métodos Neste capítulo são apresentados o material utilizado nos experimentos e a metodologia adotada para realizar o monitoramento e auditoria entre o