Comptes de service

Cette page explique comment attribuer un compte de service géré par l'utilisateur au lieu d'utiliser le compte de service par défaut et les autorisations créées automatiquement pour les services Cloud Run. Pour plus d'informations sur le compte de service par défaut utilisé par Cloud Run, consultez la section Compte de service d'exécution.

Définir et mettre à jour l'identité du service

Nous vous recommandons d'attribuer une identité dédiée à chacun de vos services en lui attribuant un compte de service géré par l'utilisateur au lieu d'utiliser un compte de service par défaut. Les comptes de service gérés par l'utilisateur vous permettent de contrôler les accès en accordant un ensemble minimal d'autorisations à l'aide d'Identity and Access Management.

Vous pouvez utiliser un compte de service géré par l'utilisateur dans le même projet que le service Cloud Run ou dans un projet différent.

Si le compte de service et le service Cloud Run se trouvent dans des projets différents :

  • Le projet contenant ce compte de service nécessite que la règle d'organisation iam.disableCrossProjectServiceAccountUsage soit définie sur "false/non appliquée" au niveau du dossier ou héritée des paramètres au niveau du projet. Par défaut, cette valeur est définie sur true.
  • Le compte de service requiert une appartenance de rôle1 pour service account token creator pour l'agent de service de déploiement de projet : service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com", où PROJECT_NUMBER est le numéro de projet du projet.
  • Le compte de service requiert une appartenance de rôle1 pour service account user pour l'identité (utilisateur ou automatisation) qui effectue l'opération de déploiement.

1 L'appartenance de rôle peut être appliquée directement à la ressource du compte de service ou être héritée des niveaux supérieurs de la hiérarchie des ressources.

Autorisations requises pour les comptes de service gérés par l'utilisateur

Lorsqu'un utilisateur crée un compte de service, l'autorisation iam.serviceAccounts.actAs est automatiquement accordée à cet utilisateur. Sinon, un utilisateur disposant des autorisations appropriées doit accorder l'autorisation iam.serviceAccounts.actAs à l'utilisateur qui déploie le service. Pour savoir comment attribuer des rôles, consultez la section Accorder, modifier et révoquer les accès aux ressources.

Déployer un nouveau service avec un compte de service géré par l'utilisateur

Si vous ne disposez pas encore d'un compte de service géré par l'utilisateur que vous pouvez utiliser, découvrez comment créer et gérer des comptes de service.

Vous pouvez définir le compte de service à l'aide de Cloud Console ou de la ligne de commande gcloud lorsque vous créez un nouveau service ou déployez une nouvelle révision. Mettez à jour le compte de service avec l'adresse e-mail du compte de service associé à la nouvelle identité :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, renseignez la page de paramètres initiale du service, puis cliquez sur Suivant > Paramètres avancés pour accéder à la page de configuration du service.

  4. Cliquez sur l'onglet Security (Sécurité).

    image

  5. Cliquez sur le menu déroulant Service account (Compte de service), puis sélectionnez le compte de service souhaité.

  6. Cliquez sur Créer ou Déployer.

gcloud

Vous pouvez mettre à jour un service existant de façon à disposer d'un nouveau compte de service d'exécution à l'aide de la commande suivante :

gcloud run services update SERVICE --service-account SERVICE_ACCOUNT

Remplacez :

  • SERVICE par le nom de votre service.
  • SERVICE_ACCOUNT par le compte de service associé à la nouvelle identité. Cette valeur correspond à l'adresse e-mail du compte de service, par exemple example@myproject.iam.gserviceaccount.com.

Vous pouvez également définir un compte de service lors du déploiement à l'aide de la commande suivante :

gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT

Remplacez :

  • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest.
  • SERVICE_ACCOUNT par le compte de service associé à la nouvelle identité. Cette valeur correspond à l'adresse e-mail du compte de service, par exemple example@myservice.iam.gserviceaccount.com.

YAML

Vous pouvez télécharger et afficher la configuration de service existante à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud beta run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'attribut serviceAccountName: :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    Remplacez :

    • SERVICE par le nom de votre service Cloud Run ;
    • SERVICE_ACCOUNT par le compte de service associé à la nouvelle identité. Cette valeur correspond à l'adresse e-mail du compte de service, par exemple example@myproject.iam.gserviceaccount.com.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml