Conteúdo


Melhores práticas do DevOps

Assegure a segurança de informações robusta e efetiva com o DevOps

Comments

Conteúdos da série:

Esse conteúdo é a parte # de # na série: Melhores práticas do DevOps

Fique ligado em conteúdos adicionais dessa série.

Esse conteúdo é parte da série:Melhores práticas do DevOps

Fique ligado em conteúdos adicionais dessa série.

Introdução

DevOps é um conjunto de princípios e práticas que têm como foco a melhoria da comunicação e colaboração entre as equipes de desenvolvimento e operações. Essas práticas se difundiram entre os especialistas em tecnologia que desejam desenvolver soluções tecnológicas robustas cuja confiabilidade possa ser garantida e que possam passar por um upgrade facilmente. O foco inicial do DevOps é ajudar os desenvolvedores e profissionais de operações a se comunicar e trabalhar juntos de forma mais efetiva, mas outras partes interessadas, como as equipes de garantia de qualidade, teste e segurança de informações (InfoSec) são igualmente importantes. Este artigo explica como usar as melhores práticas de DevOps para tornar a segurança de informações robusta e efetiva.

Por que a segurança de informações é uma parte importante do DevOps

O DevOps foi extremamente bem-sucedido em possibilitar que desenvolvedores e operações trabalhem juntos de forma mais efetiva. Com o DevOps, a equipe de operações obtém as informações necessárias para saber como estabelecer procedimentos efetivos e confiáveis de desenvolvimento, empacotamento, e implementação de aplicativos. O grupo de segurança de informações tem muitos requisitos que são iguais aos do grupo de operações. Além disso, a segurança das informações precisa obter as informações necessárias para garantir que todo o sistema seja seguro e confiável. Da mesma forma que o DevOps ajuda o desenvolvimento e as operações a trabalhar juntos de forma efetiva, ele também ajuda o desenvolvimento e a segurança de informações a ser mais efetivos. A implementação contínua tem sido uma prática importante no DevOps — foca a automatização do pipeline de implementação por meio do desenvolvimento, empacotamento e implementação automatizados. A segurança de informações pode se beneficiar bastante do pipeline de implementação fornecendo uma plataforma para avaliar e lidar com questões de segurança no início do ciclo de vida de desenvolvimento. A segurança efetiva sempre deve começar com uma avaliação dos riscos envolvidos.

Riscos de segurança que o DevOps pode ajudar a resolver

É necessário entender e resolver os riscos como parte do esforço do desenvolvimento de software ou sistemas. A segurança não pode ser simplesmente acrescentada ao sistema no final do processo de desenvolvimento. (Consulte Recursos para saber mais sobre o desenvolvimento de softwares seguros.) Os sistemas devem ser projetados e desenvolvidos levando a segurança em consideração desde o início do ciclo de vida de desenvolvimento. O DevOps fornece a estrutura necessária para ajudar a resolver muitos dos riscos de segurança inerentes à criação de qualquer sistema tecnológico complexo.

As vulnerabilidades de segurança podem ser a consequência de diversas circunstâncias. Por exemplo, práticas de codificação inadequadas em sistemas em C e C++ podem causar condições de estouro de buffer que dão a um invasor mal-intencionado um prompt de comandos com os privilégios do programa. Os ataques de estouro de buffer vêm sendo usados pelos invasores para assumir o controle de um sistema e até mesmo ganhar privilégios de administrador efetivamente.

Pode haver problemas de tempo de execução devido a controles de segurança inadequados, como autenticação e autorização, nas interfaces entre componentes. As permissões incorretas aplicadas durante a implementação são uma origem comum de problemas.

A garantia da implementação do código correto é outra área preocupante. Erros cometidos durante a implementação podem ser explorados por um invasor mal-intencionado.

Problemas de configuração entre interfaces podem ser explorados por um hacker que esteja tentando entrar em um sistema. Após o comprometimento de um sistema, controles de segurança inadequados podem dificultar a identificação de mudanças não autorizadas e a realização da perícia para determinar o que foi mudado por engano ou má intenção.

É raro que a segurança de informações tenha o conhecimento técnico e ambientes de teste adequados em quantidade suficiente no início do processo de desenvolvimento para realizar testes de segurança efetivos. Além disso, muitas organizações não podem prover seus servidores do zero e implementar os aplicativos conforme a necessidade — essa limitação significa que as pessoas que estão respondendo a uma violação de segurança frequentemente têm dificuldade de entender qual código foi comprometido e como a ameaça pode ser eliminada.

Esses riscos são muito comuns. Eles causam muitas indisponibilidades de sistema que afetam grandes sistemas financeiros e da bolsa e até mesmo as próprias trocas comerciais. Se não podemos simplesmente acrescentar a segurança ao final de um projeto, como desenvolvemos sistemas seguros desde o início?

Gerenciamento efetivo do código fonte para desenvolver sistemas seguros

W. Edwards Deming, o “guru” do gerenciamento de qualidade, observou sensatamente que a qualidade deve ser integrada desde o início. (Consulte Recursos para saber mais sobre o livro do Deming.) O DevOps depende do gerenciamento efetivo do código fonte para criar os scripts de desenvolvimento, empacotamento e implementação automatizados que constituem o pipeline de implementação.

O gerenciamento efetivo do código fonte engloba:

  • Sistema de controle de versão
  • Capacidade de estabelecer a linha de base do código de forma confiável
  • Técnicas para modelar a arquitetura de software usando fluxos e componentes
  • Suporte para diversas variantes do código.

O fato de ter todo o código fonte incluído em um sistema de controle de versão permite que a segurança de informações varra o código procurando vulnerabilidades. Sistemas robustos de controle de versão também permitem que os analistas de segurança entendam como o sistema é construído, modelando a estrutura de componentes e as interfaces entre componentes, que frequentemente são alvos de ataques mal-intencionados.

O DevOps e o pipeline de implementação ajudam a criar e prover eficientemente os ambientes de teste que podem ser usados para avaliar e testar em busca de vulnerabilidades nas interfaces entre componentes. O fornecimento de ambientes de teste robustos de forma oportuna aprimora a segurança fornecendo uma plataforma de teste automatizado que pode identificar problemas de segurança a serem resolvidos. Depois de localizar os problemas do código, eles podem ser tratados como defeitos ou solicitações de mudança e rastreados durante todo o ciclo de vida para garantir que os riscos identificados sejam corrigidos.

Soluções robustas de gerenciamento de código fonte podem ajudar a gerenciar o ciclo de vida do aplicativo, fornecendo um conjunto de ferramentas e processos que ajudam a impulsionar todo o processo de desenvolvimento escolhendo os requisitos corretos para gerenciar os defeitos encontrados enquanto o sistema está em produção. O rastreamento de requisitos e defeitos é um aspecto essencial do desenvolvimento baseado em tarefas.

Melhores práticas do DevOps para uma segurança de informações robusta e efetiva

As seções a seguir descrevem recomendações de princípios do DevOps para ajudar a integrar a segurança de informações:

Colabore com as equipes de desenvolvimento, operações e segurança de informações

A equipe de segurança de informações raramente tem conhecimento técnico necessário para entender vulnerabilidades comuns de segurança inerentes a sistemas complexos. Da mesma forma que o DevOps melhora a comunicação entre o desenvolvimento e as operações, o DevOps também confere poderes à equipe de segurança de informações, permitindo-lhe entender totalmente todo o aplicativo e como ele é desenvolvido, empacotado e implementado. Esse conhecimento pode ajudar a segurança de informações a manter um foco relevante e efetivo. Entendendo a infraestrutura de sistemas, a segurança de informações também pode entender quando a segurança foi violada e o que, precisamente, deve ser feito para resolver os pontos fracos da segurança caso a infraestrutura em si tenha sido comprometida. Em muitos casos, é essencial desenvolver novamente os servidores usando procedimentos automatizados.

Desenvolva software usando uma abordagem baseada em tarefas

O desenvolvimento baseado em tarefas envolve criar tarefas, defeitos e requisitos e, em seguida, rastrear esses itens de trabalho até os conjuntos de mudanças criados para desenvolver o código. Rastreando requisitos até as tarefas e defeitos, os problemas de segurança que poderiam ter sido introduzidos se um requisito essencial não fosse implementado podem ser evitados.

Rastrear os requisitos até os casos de teste também é um aspecto importante do desenvolvimento baseado em tarefas, porque isso garante que cada requisito seja verificado e validado. Essa rastreabilidade é essencial para evitar aspectos que podem provocar vulnerabilidades de segurança. Definir e rastrear itens de trabalho ajuda a gerenciar a complexidade do esforço de desenvolvimento. O código também pode ser instrumentado para ajudar a facilitar o teste de segurança.

Softwares da IBM que suportam o desenvolvimento baseado em tarefas:

Automatize o desenvolvimento, empacotamento e implementação de aplicativos

A criação de procedimentos automatizados para desenvolver, empacotar e implementar o código suporta o desenvolvimento iterativo agile de várias formas. Os procedimentos de desenvolvimento automatizado são um pré-requisito para a integração e entrega contínuas. Os procedimentos de desenvolvimento devem integrar automaticamente o ID de versão imutável em cada item de configuração (CI) que é usado ou criado pelo procedimento de desenvolvimento. Também é aí que os hashes criptográficos devem ser criados para uso na verificação durante a implementação do aplicativo, descrita abaixo. As liberações de marcos de sprint podem ser usadas para testar e validar requisitos que talvez não sejam entendidos totalmente no início do projeto. O aspecto mais importante é que os detalhes técnicos de como desenvolver cada componente são documentados implicitamente e podem ser revisados pelas partes interessadas, como a segurança de informações. A criação de variantes no código facilita o teste de aplicativos — inclusive a instrumentação do código para facilitar os testes relacionados à segurança.

Instrumente o código com bibliotecas

A instrumentação do código envolve executar o código com bibliotecas que facilitam a varredura do código de tempo de execução à procura de vulnerabilidades. O DevOps desempenha uma função importante, possibilitando que o código seja desenvolvido, empacotado e implementado em uma máquina de teste para identificar vulnerabilidades de segurança. Acompanhando o foco do DevOps na resolução de problemas o mais rápido possível, a análise da segurança de um aplicativo deve ser realizada durante todo o ciclo de vida do aplicativo. Tentar corrigir um problema de segurança em um momento tardio do ciclo de vida é muito mais difícil que resolvê-lo logo no início do esforço de desenvolvimento. Envolvendo-se no ciclo de vida completo do aplicativo, o analista de segurança pode identificar mais efetivamente qualquer problema existente no sistema.

Softwares IBM que ajudam na segurança do aplicativo:

Identifique o elo mais fraco

Como diz o ditado, “a força de uma corrente é a força do seu elo mais fraco". Adotando uma visualização abrangente do sistema, o analista de segurança pode identificar problemas específicos para um determinado componente ou para a interface entre os componentes. Com frequência, há necessidade de interfaces para sistemas legados. Essas interfaces também são o elo mais fraco da corrente. Após a identificação da vulnerabilidade como um risco, o aplicativo pode ser testado para avaliar o possível risco de segurança. É possível tomar providências para minimizar o risco e lidar com a vulnerabilidade da segurança. Essas técnicas são particularmente úteis para facilitar o teste do aplicativo logo no início.

Realize o teste de penetração

O pipeline de implementação fornece uma estrutura efetiva para criar o ambiente de teste necessário para realizar o teste de penetração. Com o DevOps, o teste de penetração pode ocorrer durante todo o ciclo de vida de software e sistemas. Ao melhorar a comunicação entre o desenvolvimento e a segurança de informações, a equipe de segurança de informações no DevOps pode projetar e executar o teste de penetração mais efetivo com os períodos curtos que normalmente são alocados para esses propósitos. O pipeline de implementação também permite que a segurança de informações obtenha as informações técnicas essenciais para avaliar efetivamente as vulnerabilidades de segurança.

Desenvolva a infraestrutura programaticamente

Os especialistas em segurança reconhecem que praticamente todos os sistemas podem ser comprometidos e que, após a penetração no ambiente, o código mal-intencionado pode entrar. É comum que os hackers comprometam sistemas com segurança inadequada e, em seguida, usem esses sistemas para atacar outras máquinas, mais seguras. Esses tipos de ataques podem envolver simplesmente um ataque de negação de serviço, que, em seguida, pode ser rastreado até as máquinas usadas no ataque. Nos ataques de negação de serviço, vítimas inocentes podem ser acusadas de montar um ataque em outro sistema e ser chamadas a explicar por que suas máquinas foram usadas com má intenção.

Quando um sistema é comprometido, a melhor linha de ação é limpar totalmente e reprovisionar os servidores. O DevOps fornece procedimentos excelentes para desenvolver os servidores do sistema operacional para a base do aplicativo por meio de um procedimento totalmente automatizado. A capacidade de desenvolver programaticamente a infraestrutura é conhecida como infraestrutura como código. Essa prática importante do DevOps normalmente é usada para suportar infraestruturas baseadas em nuvem. Essas técnicas também foram chamadas de administração de sistemas agile, um termo que designa o valor que o DevOps fornece em um ambiente de desenvolvimento agile.

O® Tivoli® Provisioning Manager possibilita uma infraestrutura dinâmica automatizando o gerenciamento de servidores físicos, servidores virtuais, software, armazenamento e redes.

Use sistemas automatizados para configurar e verificar o sistema operacional

A infraestrutura como código pode ser usada para implementar sistemas seguros ao fornecer procedimentos automatizados para configurar e se certificar de que o sistema operacional siga os padrões de segurança estabelecidos no segmento de mercado, como a respeitada referência do Center for Internet Security (CIS), que define precisamente como o sistema operacional deve ser configurado. (Consulte Recursos para obter o link para o Center for Internet Security.)

Tanto o fornecimento do sistema operacional quanto a verificação da configuração de segurança podem ser feitos por meio de script usando a orientação fornecida na especificação do CIS. Os scripts permitem que os servidores sejam totalmente provisionados e suportados por meio de um procedimento automatizado. Para garantir uma plataforma segura e confiável, comece com servidores que são completamente seguros e estão configurados corretamente. Depois que a infraestrutura do servidor é provisionada e é passível de verificação, é hora de usar os mesmos princípios para implementar a base do aplicativo de forma segura e verificável. Os procedimentos automatizados de desenvolvimento devem garantir que o código possa ser verificado depois de ser implementado, integrando IDs de versão a cada item de configuração, inclusive componentes de código, configuração e arquivos de propriedades.

Hashes criptográficos devem ser criados para serem usados na verificação da implementação do aplicativo.

Implementar o aplicativo em si é tão importante quanto fornecer uma base de aplicativo confiável e completamente segura, que seja verificável e permita a detecção de vulnerabilidades de segurança, inclusive mudanças não autorizadas. O desenvolvimento de um código que contém IDs de versão integrados para a verificação da implementação e o uso da criptografia para identificar mudanças não autorizadas garantem que seja possível criar uma base de aplicativo segura e confiável.

O IBM Tivoli Provisioning Manager for OS Deployment permite a implementação remota automatizada de sistemas operacionais.

O® UrbanCode Deploy fornece uma estrutura de implementação de automação que reduz a quantidade de erros de implementação e melhora a eficiência, a correção e a rastreabilidade.

Forneça uma base de aplicativo segura e confiável

Para proteger a base de aplicativo confiável, desenvolva o código do aplicativo usando procedimentos que identificam de forma segura o código binário exato e todos os outros itens de configuração (inclusive os arquivos XML e de configuração de propriedades) para que você possa provar definitivamente que o código correto foi implementado e confirmar que não foram feitas mudanças não autorizadas.

Esses procedimentos geralmente usam hashes criptográficos que são criados pela primeira vez durante o desenvolvimento e empacotamento automatizados do aplicativo. Após a implementação do código, os hashes podem ser recalculados para se certificar de que todo o código tenha sido implementado corretamente.

Esses mesmos procedimentos podem ser usados para estabelecer linhas de base confiáveis e identificar mudanças não autorizadas que poderiam ocorrer como resultado de erro humano ou até mesmo má intenção.

Trabalhar a partir de uma base de aplicativo segura e confiável garante que os sistemas tenham sido implementados de forma confiável e precisa e facilita a identificação e correção de possíveis violações de segurança. Quando as mudanças autorizadas são implementadas, as linhas de base devem ser atualizadas para registrar e rastrear as alterações. Essas técnicas são descritas em normas do segmento de mercado e estruturas, inclusive a respeitada estrutura ITIL v3, que orienta sobre o desenvolvimento e a manutenção de serviços confiáveis.

Os®® ambientes de desenvolvimento integrado (IDEs) Rational executam no desktop do desenvolvedor, fornecendo recursos sofisticados para desenvolver, testar unidades, depurar, analisar, modernizar e otimizar aplicativos.

Baseie-se em normas e estruturas

Normas e estruturas fornecem orientação especializada sobre como implementar sistemas seguros e confiáveis. Essas diretrizes descrevem muitas funções e processos, inclusive a capacidade de monitorar e rastrear as linhas de base do código. A estrutura ITIL v3 descreve o gerenciamento de configuração e ativos de serviço (SACM), que captura linhas de base que podem ser armazenadas no sistema de gerenciamento da configuração (CMS). Essas linhas de base podem ser monitoradas pelo banco de dados de gerenciamento de configuração (CMDB), reportando as discrepâncias para o CMS. A biblioteca de mídia definitiva (DML) contém a linha de base, liberações oficiais que podem ser implementadas como parte do fornecimento de um servidor.

Essas técnicas, inclusive as práticas de monitoramento das linhas de base usando sistemas de detecção de intrusão (IDS), são consideradas melhores práticas do segmento de mercado. A abordagem do DevOps fornece automação e estrutura para implementar esses procedimentos. As intrusões podem ocorrer mesmo quando são adotadas as melhores práticas preventivas. É essencial poder detectar incidentes e responder a eles.

Possibilite a detecção precoce de mudanças não autorizadas

Quando ocorrem mudanças não autorizadas por causa de erro humano ou de um ataque mal-intencionado, elas devem ser detectadas imediatamente e acionar a resposta ao incidente. A abordagem do DevOps fornece os procedimentos para detectar facilmente as mudanças não autorizadas e resolvê-las com impacto mínimo para os usuários. Também fornecem as bases para fornecer servidores e implementar sistemas imediatamente para restaurar o sistema para uma linha de base confiável. Essas técnicas requerem colaboração e comunicação excelente entre as principais partes interessadas, incluindo as equipes de desenvolvimento, operações, garantia de qualidade, teste segurança de informações.

Vários produtos de software de gerenciamento de mudanças IBM Rational ajudam a monitorar as mudanças no software e gerenciamento de mudanças.

Conclusão

O DevOps é reconhecido por seu foco em ajudar os desenvolvedores e as operações trabalhem juntos de forma mais efetiva. A segurança de informações, juntamente com as equipes de garantia de qualidade e teste, também é uma parte interessada importante e deve ser representada na estrutura do DevOps. O DevOps ajuda a melhorar a comunicação e a transferir o conhecimento técnico essencial dos desenvolvedores que estão escrevendo o código para os profissionais de operações e segurança responsáveis por garantir que o serviço seja ininterrupto. Com a estrutura do DevOps estabelecida, a segurança de informações pode tomar decisões informadas que ajudarão a proteger a infraestrutura do sistema e os aplicativos contra quaisquer ocorrências inesperadas que possam comprometer o sistema, seja por erro acidental ou por ataque mal-intencionado. Manter a segurança do sistema ajuda a evitar defeitos do sistema e garante o serviço ininterrupto. A abordagem do DevOps e o pipeline de implementação permitem que a sua equipe introduza recursos que suprem as necessidades de negócios e fornecem a base de aplicativo segura e confiável.


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=
ArticleID=969648
ArticleTitle=Melhores práticas do DevOps: Assegure a segurança de informações robusta e efetiva com o DevOps
publish-date=04252014