Implantar apenas imagens criadas pelo Cloud Build

Nesta página, descrevemos como proteger a cadeia de suprimentos de software configurando a autorização binária para permitir que apenas imagens de contêiner criadas pelo Cloud Build sejam implantadas.

Esse controle de implantação é configurado exigindo o atestador built-by-cloud-build na política de autorização binária. O Cloud Build cria automaticamente o atestador built-by-cloud-build no seu projeto quando você executa uma versão que gera imagens. Depois que as imagens são criadas, o Cloud Build assina e cria atestados automaticamente. No momento da implantação, a autorização binária verifica os atestados com o atestador built-by-cloud-build. As imagens verificadas podem ser implantadas. As imagens que não passam na verificação não podem ser implantadas e a falha é registrada nos registros de auditoria do Cloud.

Para ver um guia completo que descreve como usar metadados gravados e autorização binária do Cloud Build, consulte Como usar a procedência e a autorização binária assinada.

Antes de começar

Para usar esse recurso, primeiro você precisará:

Configurar a política

Nesta seção, você irá configurar a política de autorização binária para exigir o atestador built-by-cloud-build.

Para permitir que apenas as imagens criadas pelo Cloud Build sejam implantadas, execute estas etapas:

Console

  1. Acesse a página Autorização binária no Console do Google Cloud.

    Acesse Autorização binária.

  2. Na guia Política, clique em Editar política.

  3. Na caixa de diálogo Editar política, selecione Permitir apenas imagens que foram aprovadas por todos os seguintes atestadores.

  4. Clique em Adicionar atestadores.

  5. Na caixa de diálogo Adicionar atestadores:

    1. Selecione Adicionar por projeto e nome do atestador e execute estas etapas:
      1. No campo Nome do projeto, insira o projeto em que você executa o Cloud Build.
      2. Clique no campo Nome do atestador e veja se o atestador built-by-cloud-build está disponível.
      3. Clique em built-by-cloud-build.
    2. Como alternativa, selecione Adicionar por ID do recurso de atestador. Em ID de recurso do atestador, insira projects/PROJECT_ID/attestors/built-by-cloud-build, substituindo PROJECT_ID pelo projeto em que o Cloud Build é executado.
  6. Clique em Adicionar um atestador.

  7. Clique em Save Policy.

gcloud

  1. Exporte a política atual para um arquivo usando este comando:

    gcloud container binauthz policy export > /tmp/policy.yaml
    
  2. Edite o arquivo da política.

  3. Edite uma destas regras:

    • defaultAdmissionRule
    • clusterAdmissionRules
    • istioServiceIdentityAdmissionRules
    • kubernetesServiceAccountAdmissionRules
  4. Adicione um bloco requireAttestationsBy à regra, se ainda não houver um.

  5. No bloco requireAttestationsBy, adicione projects/<var>PROJECT_ID</var>/attestors/built-by-cloud-build, substituindo PROJECT_ID pelo projeto em que o Cloud Build é executado.

  6. Salve o arquivo de política.

  7. Importe o arquivo de política.

    gcloud container binauthz policy import /tmp/policy.yaml
    

    Veja a seguir um exemplo de arquivo de política que contém a referência ao built-by-cloud-build-attestor:

    defaultAdmissionRule:
      evaluationMode: REQUIRE_ATTESTATION
      enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
      requireAttestationsBy:
        - projects/PROJECT_ID/attestors/built-by-cloud-build
    name: projects/PROJECT_ID/policy
    

    Substitua PROJECT_ID pelo ID do projeto em que você executa o Cloud Build.

A seguir