Neste tutorial, mostramos como criar um atestado de autorização binária em um pipeline do Cloud Build. Essa configuração ajuda a garantir que apenas imagens de contêiner criadas e assinadas como parte do processo de criação do Cloud Build sejam automaticamente autorizadas para execução no ambiente de implantação.
Visão geral do Cloud Build
O Cloud Build (visão geral) usa o código-fonte armazenado em um repositório hospedado, executa suas versões e testes e armazena as saídas de software resultantes no Container Registry ou outro serviço de armazenamento no Google Cloud Platform.
Visão geral da autorização binária
A autorização binária (visão geral) é um produto doGoogle Cloud que impõe restrições de tempo de implantação em aplicativos. A integração do Google Kubernetes Engine (GKE) permite que os usuários imponham que os contêineres implantados em um cluster do Kubernetes sejam assinados criptograficamente por uma autoridade confiável e verificados por um atestador de autorização binária.
É possível configurar a autorização binária para exigir que os atestadores sejam baseados no local do código-fonte, para evitar a implantação de imagens de contêiner criadas de fonte não autorizada.
Para saber mais, faça o seguinte:
- Uma introdução geral à autorização binária
- Codelab: como proteger suas implantações do GKE com autorização binária
Arquitetura
O diagrama a seguir mostra os componentes em uma configuração de autorização binária/Cloud Build:
Nesse pipeline:
O código para criar a imagem do contêiner é enviado para um repositório de origem.
A ferramenta de integração contínua (CI, na sigla em inglês), o Cloud Build cria e testa o contêiner.
A criação envia a imagem do contêiner para o Container Registry ou outro registro que armazena as imagens criadas.
O Cloud Key Management Service, que fornece gerenciamento de chaves para o par de chaves criptográficas, assina a imagem do contêiner. Depois, a assinatura resultante é armazenada em um atestado recém-criado.
No momento da implantação, o atestador verifica o atestado usando a chave pública do par de chaves. A autorização binária aplica a política ao exigir atestados assinados para implantar a imagem do contêiner.
Criar um atestado usando o Cloud Build com o Cloud Key Management Service
Esta seção mostra como implementar a arquitetura acima. Ele usa uma etapa de versão personalizada de código aberto da comunidade do Cloud Build. A etapa de versão personalizada assina uma imagem de contêiner, cria o atestado e a envia para a autorização binária.
Configurar o gerenciamento de identidade e acesso
Para usar essa etapa de versão, a conta de serviço do Cloud Build precisa dos seguintes papéis do IAM:
- Visualizador do atestador de autorização binária
roles/binaryauthorization.attestorsViewer
- Signatário/Verificador de CryptoKey do Cloud KMS (se estiver usando a chave no KMS para assinar o atestado)
roles/cloudkms.signerVerifier
- Anexador de notas do Artifact Analysis
roles/containeranalysis.notes.attacher
Os seguintes comandos podem ser usados para adicionar os papéis à conta de serviço do Cloud Build do seu projeto:
Ative o Cloud Build.
Ative a API Cloud Build no projeto Google Cloud de destino.
Salve o código do projeto em uma variável de ambiente:
PROJECT_ID=PROJECT_ID
em que PROJECT_ID é o Google Cloud ID do projeto.
Defina a CLI do Google Cloud do projeto:
gcloud config set project ${PROJECT_ID}Consiga o número do projeto:
PROJECT_NUMBER=$(gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)")Adicione o papel Visualizador de atestador de autorização binária à conta de serviço do Cloud Build:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role roles/binaryauthorization.attestorsViewerAdicione o papel Signatário/Verificador de CryptoKey do Cloud KMS à conta de serviço do Cloud Build (assinatura baseada em KMS):
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role roles/cloudkms.signerVerifierAdicione o papel Anexador de notas do Artifact Analysis à conta de serviço do Cloud Build:
gcloud projects add-iam-policy-binding