Compte de service personnalisé pour Cloud Build

Présentation

Cloud Functions exploite Cloud Build lors de la compilation et du déploiement de votre fonction Cloud. Par défaut, Cloud Functions utilise le compte de service Cloud Build par défaut comme compte principal lors de la compilation. Ce document explique comment transmettre un compte de service créé par l'utilisateur, qui sera utilisé par Cloud Build lors du déploiement de votre fonction.

Vous pouvez déployer des fonctions avec des comptes de service personnalisés à l'aide de la Google Cloud CLI, de la console Google Cloud ou de l'API Cloud Functions.

Voici quelques situations dans lesquelles vous souhaiterez peut-être fournir un autre compte de service à utiliser lorsque Cloud Build compile votre fonction :

  • Vous souhaitez avoir davantage de contrôle sur les comptes de service à ajouter à votre périmètre VPC-SC.

  • Vous souhaitez que Cloud Build s'exécute avec des autorisations différentes de celles du compte de service par défaut sans avoir à révoquer chaque autorisation individuellement.

  • Vous souhaitez définir des autorisations Cloud Build précises pour vos fonctions, et non partager un compte de service Cloud Build optimisé à d'autres fins.

Activer les API

Cette fonctionnalité nécessite l'activation de l'API IAM.

Utilisez la Google Cloud CLI pour activer les API nécessaires au déploiement d'une fonction Cloud ou utilisez la console Google Cloud :

gcloud services enable iam.googleapis.com

Configurer un compte de service

Ce document explique comment créer un compte de service et lui accorder les autorisations requises. Si vous souhaitez utiliser un compte de service existant, vous avez besoin de l'adresse e-mail du compte de service que vous prévoyez d'utiliser. Pour en savoir plus, consultez la section Configurer des comptes de service spécifiés par l'utilisateur.

Vous pouvez afficher vos comptes de service existants comme suit ou utiliser la console Google Cloud :

gcloud iam service-accounts list

Créer un compte de service

Utilisez la Google Cloud CLI pour créer votre compte de service ou utilisez la console Google Cloud :

gcloud iam service-accounts create SA_EMAIL

Remplacez SA_EMAIL par l'adresse e-mail de votre compte de service.

Octroyer des autorisations

Le compte de service que vous utilisez doit disposer des rôles suivants :

Attribuez les rôles suivants à l'aide de la Google Cloud CLI ou utilisez la console 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

Remplacez les éléments suivants :

Déployer une fonction avec un compte de service personnalisé

Vous pouvez utiliser la Google Cloud CLI pour déployer une fonction qui utilise un compte de service personnalisé pour Cloud Build :

  • L'option --build-service-account spécifie un compte de service IAM dont les identifiants seront utilisés pour l'étape de compilation. Si aucun compte de service personnalisé n'est fourni, la fonction utilise le compte de service par défaut du projet pour Cloud Build.
  • Vous pouvez éventuellement utiliser un pool privé que vous spécifiez à l'aide de l'option --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=.

Remplacez les éléments suivants :