Conta de serviço personalizada para o Cloud Build
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:
roles/iam.serviceAccountUser
: esse papel não é necessário na conta de serviço, mas o usuário que implanta a função precisa dele.roles/logging.logWriter
Necessário para criar registros do build no Cloud Logging.roles/artifactregistry.writer
: necessário para armazenar imagens do build no Artifact Registry.roles/storage.objectAdmin
: necessária para recuperar a origem da função do bucket do Cloud Storage e armazenar imagens de build no Container Registry.
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 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:
- FUNCTION_NAME: o nome com que você implantou a função.
- REGION: o nome da região do Google Cloud em que você quer implantar a função
(por exemplo,
us-west1
). - PROJECT_ID: o ID do seu projeto do Google Cloud.
- RUNTIME: o ID do ambiente de execução de uma
versão compatível para executar
sua função, por exemplo,
nodejs18
. - CODE_ENTRYPOINT: o ponto de entrada da função no código-fonte. Este é o código que será executado quando a função for executada.
- SA_EMAIL: o endereço de e-mail da sua conta de serviço.