Configure a infraestrutura DevSecOps e a cadeia de ferramentas de CI para implementar um aplicativo seguro

Use este tutorial para configuração e fornecimento automatizados da infraestrutura para suas cadeias de ferramentas de CI e CD usando um modelo de iniciação rápida baseado no Terraform. O modelo usa as melhores práticas de conformidade e segurança do DevSecOps. O modelo usa uma área de trabalho do IBM Cloud® Schematics, que automatiza a criação da infraestrutura necessária para implementar de forma segura o seu app no Kubernetes ou no Red Hat® OpenShift®. O modelo usa a estrutura de pipeline da cadeia de ferramentas do DevSecOps IBM Cloud® Continuous Delivery. A cadeia de ferramentas é pré-configurada para entrega contínua, com integração de inventário, gerenciamento de mudanças, coleta de evidências e implementação.

O IBM Cloud Schematics entrega Terraform-as-a-Service para que seja possível usar uma linguagem de script de alto nível para modelar os recursos que você deseja em seu ambiente do IBM Cloud e ativar o Infrastructure as Code (IaC). O Terraform é um software de código aberto desenvolvido pela HashiCorp. O Terraform possibilita o provisionamento de recursos previsíveis e consistentes para construir rapidamente ambientes de nuvem complexos e multicamadas.

Neste tutorial, você segue três etapas fáceis para criar uma área de trabalho do Schematics, aplicar um plano de execução do Terraform e atualizar o valor de propriedades do ambiente. Quando você aplica o plano, a área de trabalho do Schematics configura a sua infraestrutura segura. Essa infraestrutura pode ser compartilhada com a sua equipe e funciona para os modelos de cadeia de ferramentas de DevSecOpsUma metodologia que integra as práticas de segurança com o desenvolvimento de software e o ciclo de vida das operações. O objetivo da fusão é priorizar o equilíbrio entre velocidade de desenvolvimento e segurança. Modelos de cadeia de ferramentas de CI e CD.

A configuração de infraestrutura automatizada cria recursos que são provisionados automaticamente usando os valores padrão dos modelos de CI e CD DevSecOps. É possível localizar os valores padrão na seção Variáveis da área de trabalho do Schematics. Os recursos a seguir são criados:

Antes de Iniciar

Criar uma área de trabalho do Schematics

  1. Clique em uma das opções a seguir para o destino de implementação do cluster. Esta ação leva você para a página de Implementação para o IBM Cloud na qual você cria uma área de trabalho do Schematics. Preencha os campos obrigatórios nessa página e, em seguida, clique em Avançar.

    Implante em Kubernetes em IBM Cloud

    Implantar em OpenShift on IBM Cloud

    Com base em qual opção você selecionar, o modelo Terraform correspondente desse repositório será importado automaticamente para a nova área de trabalho do Schematics.

  2. Verifique as informações e, em seguida, clique em Criar. A área de trabalho do Schematics é criada e a página Configurações da área de trabalho do Schematics é exibida.

Aplicar o plano de execução do Terraform

  1. Na seção Variáveis da página Configurações do Schematics, insira os valores para cada variável. Os campos obrigatórios não possuem valores padrão. É possível substituir os valores padrão.

    Se você substituir o valor sm_service_name, o plano de execução do Terraform usará o recurso existente em vez de criar um novo recurso.

  2. Para a variável gitlab_token, insira o token de acesso pessoal obtido anteriormente.

  3. Para a variável ibmcloud_api_key, insira a chave de API do IBM Cloud obtida anteriormente.

  4. Para a variável registry_namespace, insira um valor de namespace de registro de contêiner. Para criar um espaço de nome, consulte Container Registry Namespaces.

  5. Para a variável kube_version, execute: ibmcloud ks versions em uma linha de comando para ver as versões disponíveis.

  6. Opcional. Se você já tem uma instância do Secrets Manager, insira o nome dela para a variável sm_service_name. Caso contrário, não mude esta variável.

  7. Opcional. Se quiser ajustar o tamanho ou o local do cluster, você poderá substituir as seguintes variáveis: datacenter, default_pool_size, machine_type, hardware, public_vlan_num, ou private_vlan_num (os valores padrão são para o data center dal12/us-south ).

  8. Opcional. Clique em Gerar plano. Essa ação cria um plano de execução do Terraform e verifica a sua configuração em busca de erros de sintaxe. Na página Tarefas do Schematics, é possível revisar arquivos de log em busca de erros e recursos do IBM Cloud que devem ser criados, modificados ou excluídos para atingir o estado correto do modelo Terraform.

  9. Após inserir todos os valores para as variáveis e ficar satisfeito com as mudanças, clique em Aplicar plano para executar seu código de infraestrutura.

    Essa etapa leva algum tempo para ser concluída (geralmente 20 a 30 minutos, mas pode levar mais tempo), devido à criação de um novo cluster Kubernetes ou OpenShift.

  10. Na página Tarefas do Schematics, é possível visualizar o log expandindo o nome da tarefa.

  11. Após a aplicação do plano, visualize a URL para a cadeia de ferramentas de CI do DevSecOps do IBM Cloud gerada. A URL está localizada perto do final do arquivo de log em uma linha que começa com View the toolchain at:.

Se você aplicar o seu plano uma segunda vez, o cluster Kubernetes ou OpenShift criado anteriormente e quaisquer aplicativos que forem implementados para ele serão excluídos e um novo cluster será criado. No entanto, se você substituir o nome do cluster padrão, esse cluster será usado.

Implementar o app

Siga estas etapas para executar o pipeline.

  1. Acesse sua recém-criada cadeia de ferramentas de CI DevSecOps.
  2. Clique no Git que começa com compliance-app.
  3. Para acionar o pr-pipeline, atualize algum texto no arquivo README.md e, em seguida, inicie um PR na ramificação main.
  4. No campo Target Branch (Filial de destino ), altere o nome da filial de main para outro nome. Por exemplo, mybranch.
  5. Certifique-se de que a caixa de seleção "Start a new merge request with these changes" (Iniciar uma nova solicitação de mesclagem com essas alterações) esteja marcada.
  6. Clique em Commit changes (Confirmar alterações ).
  7. Opcional. Na página Nova solicitação de mesclagem, adicione uma descrição.
  8. Clique em Create merge request (Criar solicitação de mesclagem ).

O pr-pipeline na cadeia de ferramentas ci-toolchain é acionado. Verifique se o pipeline está em execução, concluindo estas etapas:

  1. Volte para sua cadeia de ferramentas de CI e clique no bloco Delivery Pipeline para seu pr-pipeline. Na página Dashboard do pr-pipeline, você pode ver o pr-pipeline em execução.

  2. Para visualizar o progresso, clique no link pr-pipeline.

    pr-pipeline
    Figura 1. Painel de controle do pr-pipeline

Notas:

  1. Se alguma vulnerabilidade for encontrada, a etapa de code-pr-finish falhará.

  2. Para encontrar as vulnerabilidades, acesse code-unit-tests > run-stage para visualizar os registros. (captura de tela)

  3. Resolva as vulnerabilidades e, em seguida, o pr-pipeline é acionado.

  4. Volte para o mosaico do repositório de aplicativos.

  5. No painel de navegação, clique em Mesclar solicitações.

  6. Selecione o PR.

  7. Opcional. Clique no botão Approve (caso contrário, você verá um erro no final da execução do ci-pipeline).

  8. Selecione "Excluir ramo de origem"

  9. Clique em Merge (Mesclar ).

A fusão desse PR aciona automaticamente o ci-pipeline. Para verificar, volte ao bloco ci-pipeline na cadeia de ferramentas e verifique se o pipeline está em execução. Clique no link do pipeline para ver o progresso.

Esta etapa implementa o aplicativo no cluster recém-criado. O aplicativo URL pode ser encontrado na parte inferior do arquivo de registro na etapa deploy-dev > run-stage do ci-pipeline.

Próximas etapas

Continue na seção "Explore sua cadeia de ferramentas de CI" do próximo tutorial e execute os pipelines CI-PR e CI. Em seguida, continue pelo restante das etapas naquele tutorial para implementar um app seguro.

A qualquer momento, é possível visualizar todos os recursos que foram criados com este tutorial, clicando no ícone Menu Ícone do menu e selecionando Lista de recursos. É possível visualizar sua área de trabalho do Schematics, cluster, instância do IBM Cloud Object Storage, serviço Secrets Manager, serviço de entrega contínua e cadeia de ferramentas.