Conta de serviço personalizada para o Cloud Build

Visão geral

O Cloud Functions aproveita o Cloud Build ao criar e implantar sua função do Cloud. Por padrão, o Cloud Functions usa a conta de serviço padrão do Cloud Build como principal ao executar o build. Neste documento, descrevemos como transmitir uma conta de serviço criada pelo usuário para ser usada pelo Cloud Build ao implantar a função.

É possível implantar funções com contas de serviço personalizadas usando a CLI do Google Cloud, o console do Google Cloud ou a API Cloud Functions.

Aqui estão alguns cenários em que convém fornecer uma conta de serviço diferente para ser usada quando o Cloud Build cria sua função:

  • Você quer mais controle sobre quais contas de serviço adicionar ao seu perímetro do VPC-SC.

  • Você quer que o Cloud Build seja executado com permissões diferentes da conta de serviço padrão, sem precisar revogar cada permissão individualmente.

  • Se você quer definir permissões granulares do Cloud Build especificamente para suas funções, não compartilhe uma conta de serviço do Cloud Build otimizada para outras finalidades.

ativar as APIs

Este recurso exige que a API IAM esteja ativada.

Use a CLI do Google Cloud para ativar as APIs necessárias para implantar uma função do Cloud ou use o Console do Google Cloud:

gcloud services enable iam.googleapis.com

Configurar conta de serviço

Neste documento, descrevemos como criar uma nova conta de serviço e conceder as permissões necessárias. Se você quiser usar uma conta de serviço atual, precisará do endereço de e-mail da conta de serviço que planeja usar. Para mais detalhes, consulte Como configurar contas de serviço especificadas pelo usuário.

É possível visualizar as contas de serviço atuais da seguinte maneira ou usar o console do Google Cloud:

gcloud iam service-accounts list

Criar a conta de serviço

Use a CLI do Google Cloud para criar sua conta de serviço ou use o console do Google Cloud:

gcloud iam service-accounts create SA_EMAIL

Substitua SA_EMAIL pelo endereço de e-mail da sua conta de serviço.

Conceder permissões

A conta de serviço que você usa precisará dos seguintes papéis:

Conceda os papéis a seguir usando a CLI do Google Cloud ou o Console do Google Cloud.

gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
    --role=roles/logging.logWriter

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin

Substitua:

  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • SA_EMAIL: o endereço de e-mail da sua conta de serviço.
  • SA_PROJECT_ID: o ID do projeto da sua conta de serviço.
  • DEPLOYING_USER_EMAIL: o endereço de e-mail do usuário que está implantando a função.

Implantar uma função com uma conta de serviço personalizada

É possível usar a CLI do Google Cloud para implantar uma função que usa uma conta de serviço personalizada para o Cloud Build:

  • A flag --build-service-account especifica uma conta de serviço do IAM com credenciais que serão usadas para a etapa de criação. Se uma conta de serviço personalizada não for fornecida, a função usará a conta de serviço padrão do projeto para o Cloud Build.
  • Também é possível usar um pool particular, especificado usando a flag --build-worker-pool.

gcloud beta functions deploy FUNCTION_NAME \
   --gen2 \
   --region=REGION \
   --project=PROJECT_ID \
   --runtime=RUNTIME \
   --entry-point=CODE_ENTRYPOINT \
   --build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
   --memory=256Mi \
   --trigger-http \
   --source=.

Substitua: