Esta página explica como criar um atestador personalizado na autorização binária através da consola Google Cloud . Em alternativa, também pode executar estes passos através da CLI do Google Cloud ou da API REST. Esta tarefa faz parte da configuração da autorização binária.
Utilizadores do Cloud Build: em alternativa, pode usar o built-by-cloud-build
atestador
para implementar apenas imagens criadas pelo Cloud Build.
Antes de começar
Antes de criar atestadores, faça o seguinte:
Vista geral
Um atestador é um Google Cloud recurso que a autorização binária usa para validar uma atestação. Para saber mais sobre a autorização binária, consulte a vista geral da autorização binária.
Para criar um atestador, faça o seguinte:
- Configure um par de chaves que possa ser usado para assinar primeiro uma imagem, criando uma atestação, e, posteriormente, validar a imagem quando estiver a ser implementada. Os pares de chaves PKIX são pares de chaves gerados pelo Cloud Key Management Service (Cloud KMS) num formato compatível com PKIX.
- Crie o atestador no Binary Authorization e associe a chave pública que criou
Numa configuração de projeto único, cria o seu atestador no mesmo projeto em que configura a política de autorização binária. Numa configuração com vários projetos, é muito provável que tenha um projeto de implementação onde a sua política está configurada e um projeto de atestação separado onde os seus atestadores estão armazenados.
Configure chaves criptográficas
A autorização binária permite-lhe usar chaves PKIX para assinar uma imagem de forma segura e, posteriormente, validá-la. Isto garante que apenas as partes validadas podem autorizar uma imagem de contentor. Para usar a atestação, configura chaves assimétricas, como chaves de infraestrutura de chave pública (X.509) (PKIX), para validar de forma segura a identidade dos atestadores. Quando uma imagem é implementada, a autorização binária verifica a atestação da imagem, que foi assinada com a chave privada, através da chave pública no atestador.
Neste guia, o algoritmo de assinatura digital de curva elíptica (ECDSA) recomendado é usado para gerar um par de chaves PKIX. Também pode usar chaves RSA ou PGP para assinar. Consulte Principais finalidades e algoritmos para mais informações sobre algoritmos de assinatura.
Crie um par de chaves PKIX
A autorização binária permite-lhe usar pares de chaves PKIX assimétricos para assinar e validar uma imagem.
Um par de chaves PKIX consiste numa chave privada, que o signatário usa para assinar digitalmente atestações, e numa chave pública, que adiciona ao atestador. No momento da implementação, a autorização binária usa esta chave pública para validar a atestação assinada pela chave privada.
Os pares de chaves assimétricas gerados e armazenados no Cloud KMS estão em conformidade com o formato PKIX. Para criar uma chave do Cloud KMS para utilização com a autorização binária, consulte o artigo Criar chaves assimétricas. Certifique-se de que escolhe Assinatura assimétrica como a finalidade da chave quando a cria.
PKIX (Cloud KMS)
Para criar o par de chaves no Cloud KMS, faça o seguinte:
Configure as variáveis de ambiente necessárias para criar o par de chaves.
KMS_KEY_PROJECT_ID=${PROJECT_ID} KMS_KEYRING_NAME=my-binauthz-keyring KMS_KEY_NAME=my-binauthz-kms-key-name KMS_KEY_LOCATION=global KMS_KEY_PURPOSE=asymmetric-signing KMS_KEY_ALGORITHM=ec-sign-p256-sha256 KMS_PROTECTION_LEVEL=software KMS_KEY_VERSION=1
Crie o conjunto de chaves.
gcloud kms keyrings create ${KMS_KEYRING_NAME} \ --location ${KMS_KEY_LOCATION}
Crie a chave:
gcloud kms keys create ${KMS_KEY_NAME} \ --location ${KMS_KEY_LOCATION} \ --keyring ${KMS_KEYRING_NAME} \ --purpose ${KMS_KEY_PURPOSE} \ --default-algorithm ${KMS_KEY_ALGORITHM} \ --protection-level ${KMS_PROTECTION_LEVEL}
PKIX (chave local)
Para gerar um novo par de chaves PKIX assimétricas locais e armazená-lo num ficheiro, faça o seguinte:
Gere a chave:
PRIVATE_KEY_FILE="/tmp/ec_private.pem" openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
Uma vez que este ficheiro contém uma chave pública e uma chave privada em conjunto, tem de extrair a chave pública para um ficheiro separado para a poder adicionar ao atestador:
PUBLIC_KEY_FILE="/tmp/ec_public.pem" openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
Crie o atestador
O passo seguinte é criar o próprio atestador e associar uma nota de análise de artefactos e uma chave pública.
A autorização binária usa a análise de artefactos para armazenar metadados fidedignos usados no processo de autorização. Para cada atestador que criar, tem de criar uma nota de análise de artefactos. Cada atestação é armazenada como uma ocorrência desta nota.
Para criar o atestador:
Aceda à página de autorização binária do projeto de atestação.
No separador Atestadores, clique em Criar.
Clique em Criar novo atestador.
Em Nome do atestador, introduza um nome para o atestador (por exemplo, build-secure ou prod-qa).
Para adicionar a chave pública ao atestador, faça o seguinte:
PKIX (chave local)
- Clique em Adicionar uma chave PKIX.
- Clique em Importar do ficheiro.
- Navegue até ao ficheiro de chave PKIX que guardou anteriormente e selecione-o. Nota: também pode colar uma chave pública no formato PEM.
- Selecione o Algoritmo de assinatura. A chave de exemplo neste guia é gerada com o algoritmo Elliptic Curve P256 - SHA Digest.
PKIX (Cloud KMS)
- Clique em Adicionar uma chave PKIX.
- Clique em Importar do Cloud KMS.
Introduza o ID de recurso da versão da chave na janela apresentada. O formato do ID do recurso é:
projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
where:
- KMS_KEY_PROJECT_ID é o ID do projeto onde as chaves estão armazenadas
- KMS_KEY_LOCATION é a localização da chave (
global
é a predefinição) - KMS_KEYRING_NAME é o nome do conjunto de chaves
- KMS_KEY_NAME é o nome da chave
- KMS_KEY_VERSION é a versão principal
Se criou um par de chaves do Cloud KMS através das variáveis de ambiente de exemplo nesta página, pode ver o ID do recurso com o seguinte comando:
echo projects/${KMS_KEY_PROJECT_ID}/locations/${KMS_KEY_LOCATION}/keyRings/${KMS_KEYRING_NAME}/cryptoKeys/${KMS_KEY_NAME}/cryptoKeyVersions/${KMS_KEY_VERSION}
Clique em Enviar.
Se quiser usar uma nota existente que criou anteriormente, expanda a secção Definições avançadas.
Desmarque a opção Gerar automaticamente uma nota de análise de artefactos.
Introduza o nome totalmente qualificado no campo ID da nota de análise de artefactos. O nome tem o formato
projects/PROJECT_ID/notes/NOTE_ID
.
Clique em Criar.
Confirme se o atestador foi criado
Para verificar se o atestador foi criado:
Volte à página Binary Authorization na Google Cloud consola.
Abra o separador Atestantes.
Configuração de vários projetos
Se estiver a usar uma configuração com vários projetos, em que tem projetos de implementador e atestador separados, existem autorizações adicionais que têm de ser definidas no recurso de atestador para que o projeto de implementador use atestações criadas por este durante a implementação.
Adicione uma associação de função do IAM para o projeto implementador
Tem de adicionar uma associação de funções do IAM para a conta de serviço do projeto de implementação ao atestador. Esta opção é usada pela autorização binária quando avalia uma política para determinar se a conta tem autorizações para aceder ao atestador.
Tem de adicionar a associação de funções da IAM a partir da linha de comandos, uma vez que este passo não é suportado na Google Cloud consola.
Para adicionar a associação de funções IAM:
Configure variáveis de ambiente para armazenar os nomes e os números dos seus projetos.
DEPLOYER_PROJECT_ID=PROJECT_ID DEPLOYER_PROJECT_NUMBER="$( gcloud projects describe "${DEPLOYER_PROJECT_ID}" \ --format="value(projectNumber)" )"
Configure variáveis de ambiente para armazenar os nomes das contas de serviço para os projetos:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
Adicione a vinculação da função IAM:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member="serviceAccount:${DEPLOYER_SERVICE_ACCOUNT}" \ --role=roles/binaryauthorization.attestorsVerifier
Adicione uma associação de função do IAM para o utilizador que está a configurar a autorização binária
Tem de adicionar uma associação de função do IAM para o utilizador que adiciona um atestador à política de autorização binária no projeto do implementador, uma vez que o utilizador tem de ter a autorização para ver o atestador a adicionar. Se quiser, pode revogar esta autorização em segurança depois de o atestador ter sido adicionado.
Também tem de adicionar a associação de funções do IAM a partir da linha de comandos, uma vez que este passo não é suportado na Google Cloud consola.
Para adicionar a associação de funções IAM:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member=ADMIN_EMAIL_ACCOUNT \ --role=roles/binaryauthorization.attestorsViewer
Para remover a associação de função do IAM após a adição do atestador:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors remove-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member=ADMIN_EMAIL_ACCOUNT \ --role=roles/binaryauthorization.attestorsViewer
O que se segue?
- Saiba como criar atestações para o seu atestador.
- Atualize a sua política de autorização binária para exigir atestações através da Google Cloud consola, da Google Cloud CLI e da API REST.