Conteúdo


DevOps com controles

Releases mais rápidos com plataformas de infraestrutura em nuvem

Comments

Introdução

Muitas empresas estão adotando uma abordagem de DevOps, na qual a implementação de software e as operação em andamento dos ambientes de produção são ambas incorporadas no ciclo de vida de desenvolvimento de software. Em vez de simplesmente jogar o código concluído do desenvolvimento nas operações quando o software está pronto para ser lançado nos ambientes de produção, DevOps incorpora o release na produção ao processo de release geral. Isso geralmente depende da presença de uma infraestrutura programável, como uma nuvem e uma rede definida por software (SDN), para que o ambiente inteiro seja definido como código. Somente as plataformas de infraestrutura em nuvem atendem a esse requisito.

Usando DevOps, as empresas podem avançar com mais rapidez que nunca. Com a natureza dinâmica e as mudanças rápidas da nuvem, é difícil que as partes interessadas em TI, operações e segurança tenham a garantia de que as políticas corporativas de conformidade estejam sendo atendidas. A aplicação de uma abordagem de automação focada em descoberta e direcionada por eventos pode fornecer às organizações os controles de configuração que elas precisam para ficar seguras na nuvem.

Visão geral rápida de DevOps

DevOps é uma abordagem que implementa o software rapidamente quando novos releases ficam disponíveis. Um dos objetivos principais de DevOps é ajudar as organizações a avançarem com mais rapidez. Os novos releases são expostos a usuários, clientes e usos reais o mais rápido possível e são testados quanto à funcionalidade e o valor para aumentar o benefício do aplicativo. A maioria das organizações usam uma infraestrutura em nuvem como o ambiente operacional para suas equipes de DevOps. Um processo simplificado pode incluir as etapas a segui:

  1. Confirmar o código.
  2. Empacotar o aplicativo para implementação automaticamente.
  3. Executar um conjunto de testes de regressão para verificação de código e testes fumaça para verificar a preparação do ambiente de produção. Executar outros testes, como análise de segurança e vulnerabilidade.
  4. Dependendo dos resultados do teste:
    • Testes com falha: gerar alertas e logs para as equipes de desenvolvimento, operações e segurança. Retornar para a codificação.
    • Testes aprovados: lançar automaticamente na produção.
  5. Executar em produção até o próximo release.

Esse processo inteiro, de ponta a ponta, geralmente é chamado de rotina ou playbook de DevOps.

Mas nem todas as equipes de DevOps sabem como provisionar a infraestrutura corretamente para manter o alinhamento com os requisitos de segurança e conformidade da organização. E para compor a complexidade, a maioria das abordagens de DevOps incluem os seguintes mecanismos de mitigação para quaisquer problemas: reverter o ambiente inteiro. Os playbooks de DevOps quase sempre incluem mecanismos de retrocesso.

Playbook de DevOps
development, build, test, delivery
development, build, test, delivery

Por Medrecs (trabalho próprio) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons

A nuvem para DevOps

A nuvem é excepcionalmente preparada para funcionar como a infraestrutura de uma abordagem de DevOps por vários motivos, incluindo:

  • A nuvem é definida por software, ela é programável e flexível.
  • A nuvem é orientada por software e tem muitas camadas diferentes. O cliente é responsável por cada camada e deve projetá-la, desde a configuração da rede até a conta de serviço e as credenciais por meio de configurações de proteção de dados e criptografia.
  • A infraestrutura em nuvem geralmente é cobrada em um modelo de pagamento por utilização, no estilo do utilitário. Isso significa que os custos totais de execução do aplicativo podem ser determinados precisamente e as empresas podem mensurar o ROI com precisão para determinar o valor de um aplicativo.

Adoção de nuvem

A maioria das organizações pensam que podem usar a infraestrutura em nuvem da mesma forma em que usam a infraestrutura de TI — por meio de uma equipe de TI centralizada. No entanto, abordagens como catálogos de serviço, modelos de provisão e acesso de controle limitado falham em escala porque as necessidades das diferentes equipes são extremamente diversas e TI precisa aplicar um grande esforço para atendê-las. Por fim, a adoção séria da nuvem torna-se descentralizada e muitas equipes acessam a infraestrutura em nuvem. Isso traz um problema fundamental: nem todas essas equipes são especialistas em infraestrutura. E muitas delas simplesmente não sabem ou não entendem os requisitos de segurança da organização ou como implementá-los em ambientes de nuvem definidos por software. Somado à complexidade das grandes empresas, das unidades de negócios, das equipes distribuídas e de vários regimes de conformidade, esse problema fica cada vez mais difícil de ser gerenciado em escala.

Abordagem de DevOps para corrigir problemas

Muitas equipes de DevOps automatizam a implementação e o retrocesso de novos aplicativos e de releases de aplicativo. Portanto, se ele identificam um problema, o ambiente inteiro é derrubado.

Essa derrubada completa geralmente implica em tempo de inatividade para o ambiente, seguido por uma análise de causa raiz exaustiva. Embora esse seja um bom exercício para aumentar a melhoria organizacional em longo prazo, é também um desafio para a disponibilidade imediata do aplicativo.

Um segundo desafio é que a cobertura de teste pode não incluir todas as condições que devem ser consideradas para a tomada de uma decisão de manter ou retroceder. Os testes geralmente se concentram no comportamento do aplicativo, na precisão do código e, algumas vezes, na avaliação de segurança. As equipes de desenvolvimento tendem a dominar os grupos de DevOps, mesmo não tendo conhecimento para verificar a otimização ou a configuração da infraestrutura.

Colocar um conjunto de controles de segurança e configuração (às vezes chamado de guard rails) em vigor pode oferecer aos principais executivos interessados a proteção e a tranquilidade que eles precisam para permitir que as equipes de DevOps operem rapidamente, sem colocar a organização em risco.

Percepção de segurança de DevOps

A principal preocupação que as grandes organizações têm sobre DevOps é a falta de foco na segurança. Essa é geralmente uma troca consciente: permitir que as equipes de DevOps avancem rapidamente porque elas estão trabalhando em novos empreendimentos críticos para a organização. No entanto, a segurança geralmente é sacrificada para que as equipes e seus ambientes não sejam restringidos.

Segurança da nuvem

Um dos motivos pelos quais a percepção de segurança de DevOps é tão negativa é que com a infraestrutura em nuvem, pode ser difícil gerenciar o número de controles e configurações de segurança que precisam ser programados. Em um design de arquitetura de aplicativo em nuvem simples, há pelo menos dez controles exclusivos a serem implementados e configurados corretamente. Alguns exemplos:

  • Os logs de auditoria da nuvem estão ativados para todos os recursos da infraestrutura?
  • As regras de firewall estão configuradas corretamente?
  • Os certificados SSL são usados nos pontos certos?
  • Os certificados SSL são válidos e imunes contra as vulnerabilidades conhecidas?
  • As contas de serviço são usadas corretamente e protegidas para ativação de serviços?
  • As contas de serviço têm as permissões, as políticas e a rotação de chave apropriadas?
  • As sub-redes estão dimensionadas corretamente?
  • As Listas de Controle de Acesso (ACLs) da rede estão sendo usadas e estão configuradas corretamente?
  • A criptografia está sendo usada nos dados inativos em todos os locais necessários?
  • A criptografia em trânsito está sendo usada e está configurada corretamente em todos os locais necessários?
  • A comunicação entre as camadas do aplicativo está protegida de forma adequada com contas de serviço?
  • Os ativos estáticos estão protegidos de forma adequada com conjuntos de permissão apropriados?
Arquitetura de nuvem de amostra
Sample cloud architecture
Sample cloud architecture

Crédito da imagem: DivvyCloud. Usada com permissão

Quais são os controles necessários?

Um dos principais desafios para as organizações na adoção da nuvem é definir as políticas e os padrões que elas desejam colocar em vigor para seus ambientes de nuvem. Esses requisitos podem variar por aplicativo e, geralmente, são provenientes de diversas partes interessadas. Por exemplo:

  • Os ambientes de produção podem ter o nível mais alto de lockdown de segurança:
    • Exigir MFA para todas as contas administrativas
    • Somente a porta de firewall 443 tem permissão para ser aberta
    • A trilha de auditoria precisa ser ativada
  • Os ambientes de teste e desenvolvimento podem se concentrar no controle dos custos, mas também não permitir nenhum acesso fora da organização:
    • Nenhuma ACL nas redes de nuvem, mas nenhum acesso a Web público
    • Nenhuma instância com mais de oito núcleos (controle de custo híbrido e foco reforçado na escalabilidade horizontal e não na escalabilidade vertical)
    • Tempo máximo de 30 dias para qualquer instância, banco de dados ou volume de armazenamento baseado em cálculo
  • Os aplicativos de funções administrativas de apoio provavelmente precisam se conectar com as redes corporativas e:
    • O acesso SSH precisa ser aberto para o intervalo de IPs da rede corporativa
    • Bancos de dados submetidos a backup quatro vezes ao dia
    • Todo o tráfego de IP roteado pela VPN

Os clientes podem colocar esses controles de configuração em vigor com diferentes ferramentas, variando desde as disponibilizadas pelos provedores em nuvem até ferramentas de inspeção de software livre ou softwares comerciais. Essas ferramentas podem inspecionar e executar ações para problemas identificados. As organizações podem usar identificações, convenções de nomenclatura, regiões de nuvem ou posicionamento de conta para determinar quais conjuntos de controles de configuração se aplicam a cada aplicativo ou carga de trabalho, além das políticas globais que se aplicam universalmente.

Os requisitos de segurança provavelmente também são provenientes de diferentes fontes. Nos exemplos anteriores, por exemplo, as prováveis partes interessadas seriam:

Controle Parte interessada
Somente tráfego da porta 443 Equipe de segurança, CISO, SecOps
Nenhuma instância em oito núcleos Finanças, CFO, CIO
Acesso SSH ao intervalo de TI corporativo Equipe de operações, TI, TechOps
Backups de banco de dados Equipe de operações, TechOps, CIO, equipe de DR
Política corporativas sobrepostas a políticas de unidade de negócios e políticas específicas de aplicativos, projetos ou produtos
policies
policies

Imagem do DivvyCloud. Usada com permissão

Uma abordagem bem-sucedida comum em uma automação em nuvem é começar com a visibilidade. Ter uma ferramenta que monitore continuamente e faça o inventário do ambiente de nuvem é útil e também necessário para assegurar que toda a infraestrutura em nuvem seja avaliada em relação a esses controles.

Algumas organizações obtêm esse inventário de várias ferramentas de implementação que precisam "efetuar check-in" quando novos aplicativos são lançados. Outra abordagem é usar agentes de servidor que se relatam a um inventário central. Essas duas abordagens são baseadas em agentes ou em ferramentas de implementação que precisam estar instaladas, configuradas adequadamente e acessíveis.

Uma abordagem alternativa é usar camadas de API em nuvem para executar uma consulta exaustiva e repetitiva dos ambientes. Embora isso leve a uma visibilidade consistente da infraestrutura inteira, existe a desvantagem de não ser possível consultar profundamente as camadas do sistema operacional ou do aplicativo. Assim, muitas organizações empregam uma abordagem combinada e usam APIs para consolidar os dados.

Quando a infraestrutura é descoberta, os controles de configuração do aplicativo são identificados e avaliados em relação a cada máquina virtual, aplicativo, rede, ativo de armazenamento e carga de trabalho. Quando algum problema é identificado, o cliente tem duas opções: receber uma notificação e reagir ou configurar automações pré-determinadas para executar ações quase em tempo real.

Um exemplo simples é este:

  1. O cliente coloca em vigor um mecanismo de controle que desaprova o acesso SSH para máquinas virtuais de produção.
  2. Um novo aplicativo é lançado em produção. O aplicativo define um ambiente de rede em nuvem que, sem querer, abre a porta 22 para qualquer tipo de acesso.
  3. As ferramentas de automação de nuvem descobrem o novo aplicativo e determinam que se trata de um ambiente de produção.
  4. As ferramentas comparam o novo aplicativo com a política de produção aplicável e determinam que há um problema.
  5. O cliente tem uma resposta predefinida que cria uma notificação, registra um evento na trilha de auditoria e fecha a porta do firewall.

Esse procedimento oferece controles de segurança e tranquilidade aos executivos interessados para a aplicação de DevOps e a ampliação da adoção da nuvem. Esses dois fatores em conjunto podem ajudar as organizações a ficarem mais ágeis e a avançarem com mais rapidez.

Diagrama do processo de controle de configuração de nuvem
global cloud policy
global cloud policy

Crédito da imagem: DivvyCloud. Usada com permissão

Conclusão

A nuvem permite que as organizações avancem com mais rapidez. O verdadeiro valor, além da possível economia de custo, é a agilidade que a nuvem permite. Os clientes podem construir, modificar e derrubar ambientes em uma velocidade incomparável. Combinando a infraestrutura definida por software com pipelines de release de aplicativo, as empresas podem implementar uma abordagem de DevOps realmente ágil para releases. Isso reduz radicalmente o tempo entre os releases e entre o release e o recebimento de dados de usuários reais que levam à melhoria contínua do aplicativo.

Embora a nuvem tenha um grande potencial de transformação, a natureza em tempo real e o acesso mais amplo à infraestrutura apresentam um novo conjunto de desafios às partes interessadas em relação a segurança, controles de custo e conformidade de política. O uso de uma ferramenta de monitoramento concentrada em descoberta que pode verificar e obrigar o uso de controles pode ajudar a eliminar as principais preocupações relacionadas à adoção da nuvem. Com a nuvem, as organizações podem avançar com segurança e mais rapidez.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing
ArticleID=1057954
ArticleTitle=DevOps com controles
publish-date=02082018