Nesta página, explicamos como criar um atestador personalizado na autorização binária usando o console do Google Cloud. Como alternativa, você também pode executar essas etapas usando a Google Cloud CLI ou a API REST. Essa tarefa faz parte da configuração da autorização binária.
Usuários do Cloud Build: é possível usar o atestador built-by-cloud-build
para implantar apenas imagens criadas pelo Cloud Build.
Antes de começar
Antes de criar atestadores, faça o seguinte:
Visão geral
Um atestador é um recurso do Google Cloud que a autorização binária usa para verificar um atestado. Para saber mais sobre a autorização binária, consulte a Visão 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 uma imagem pela primeira vez, criando um atestado, e depois verifique a imagem quando ela estiver sendo implantada. Os pares de chaves PKIX são gerados pelo Cloud Key Management Service (Cloud KMS) em formato compatível com PKIX.
- Crie o próprio atestador na autorização binária e associe a chave pública que você criou
Em uma configuração de projeto único, você cria seu atestador no mesmo projeto que configura a política de autorização binária. Em uma configuração de vários projetos, você provavelmente tem um projeto de implantação em que sua política está configurada e um projeto de atestador separado onde seus atestadores estão armazenados.
Configurar chaves criptográficas
A autorização binária permite usar chaves PKIX para assinar uma imagem com segurança e depois verificá-la. Isso garante que apenas as partes verificadas possam autorizar uma imagem de contêiner.
Neste guia, o algoritmo de assinatura digital de curva elíptica (ECDSA, na sigla em inglês) recomendado é usado para gerar um par de chaves PKIX. Também é possível usar chaves RSA ou PGP para assinatura. Consulte Finalidades de chave e algoritmos para mais informações sobre algoritmos de assinatura.
Criar um par de chaves PKIX
A autorização binária permite que você use pares de chaves PKIX assimétricas para assinar e verificar uma imagem.
Um par de chaves PKIX consiste em uma chave privada, que o signatário usa para assinar atestados digitalmente e uma chave pública, que você adiciona ao atestador. No momento da implantação, a autorização binária usa essa chave pública para verificar o atestado assinado pela chave privada.
Os pares de chaves assimétricas gerados e armazenados no Cloud KMS são compatíveis com o formato PKIX. Para criar uma chave do Cloud KMS para uso com autorização binária, consulte Como criar chaves assimétricas. Escolha a Assinatura assimétrica como a finalidade da chave ao criá-la.
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 keyring:
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 em um arquivo, faça o seguinte:
Gerar a chave
PRIVATE_KEY_FILE="/tmp/ec_private.pem" openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
Como esse arquivo contém uma chave pública e privada juntas, você precisa extrair a chave pública em um arquivo separado para adicioná-la ao atestador:
PUBLIC_KEY_FILE="/tmp/ec_public.pem" openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
Crie o atestador
A próxima etapa é criar o próprio atestador e associar uma nota do Artifact Analysis e uma chave pública.
A autorização binária usa o Artifact Analysis para armazenar metadados confiáveis usados no processo de autorização. Para cada atestador criado, você precisa criar uma nota do Artifact Analysis. Cada atestado é armazenado como uma ocorrência dessa nota.
Para criar o atestador:
Acesse a página "Autorização binária" do projeto atestador.
Na guia Atestadores, clique em Criar.
Clique em Criar novo atestador.
Em Nome do atestador, insira 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 arquivo.
- Navegue e selecione o arquivo de chave PKIX que você salvou anteriormente. Observação: você 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 de Curva elíptica P256 - resumo SHA.
PKIX (Cloud KMS)
- Clique em Adicionar uma chave PKIX.
- Clique em Importar do Cloud KMS.
Digite o código do recurso para a versão da chave na janela exibida. O formato do código do recurso é:
projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
em que:
- KMS_KEY_PROJECT_ID é o ID do projeto em que as chaves são armazenadas;
- KMS_KEY_LOCATION é o local da chave (
global
é o padrão); - KMS_KEYRING_NAME é o nome do keyring;
- KMS_KEY_NAME é o nome da chave;
- KMS_KEY_VERSION é a versão da chave
Se você criou um par de chaves do Cloud KMS usando as variáveis de ambiente de amostra nesta página, será possível visualizar o código 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 você quiser usar uma nota criada anteriormente, expanda a seção Configurações avançadas.
Desmarque a opção Gerar automaticamente uma nota do Artifact Analysis.
Digite o nome totalmente qualificado no campo ID de nota do Artifact Analysis. O nome tem o formato
projects/PROJECT_ID/notes/NOTE_ID
.
Clique em Criar.
Verificar se o atestador foi criado
Para verificar se o atestador foi criado:
Retorne à página "Autorização binária" no Console do Google Cloud.
Abra a guia Atestadores.
Configuração de vários projetos
Se você estiver usando uma configuração de vários projetos, em que você tem um implantador e um atestador separados, há permissões adicionais que precisam ser definidas no recurso do atestador para que o projeto do implantador use atestados criados durante a implantação.
Adicione uma vinculação de papel do IAM para o projeto do implantador
Adicione uma vinculação de papel do IAM para a conta de serviço do projeto do implantador ao atestador. Isso é usado pela autorização binária quando avalia uma política para determinar se a conta tem permissões para acessar o atestador.
Adicione a vinculação de papel do IAM na linha de comando, já que essa etapa não é compatível com o Console do Google Cloud.
Para adicionar a vinculação de papel do IAM:
Configure variáveis de ambiente para armazenar os nomes e números do projeto.
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 dos projetos:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
Adicione a vinculação de papel do 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
Adicionar uma vinculação de papel do IAM para o usuário configurar a autorização binária
Você precisa adicionar uma vinculação de papel do IAM ao usuário que adiciona um atestador à política de autorização binária no projeto do implantador, já que o usuário precisa ter permissão para ver o atestador a ser adicionado. Se você quiser, essa permissão pode ser revogada com segurança depois que o atestador for adicionado.
Você também precisa adicionar a vinculação de papel do IAM na linha de comando, já que essa etapa não é compatível com o Console do Google Cloud.
Para adicionar a vinculação de papel do 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 vinculação de papel 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
A seguir
- Saiba como criar atestados para o atestador.
- Atualize a política de autorização binária para exigir atestados usando o console do Google Cloud, a CLI do Google Cloud e a API REST. ,