Workflows utilise des comptes de service pour donner l'accès des workflows aux ressources Google Cloud. Les comptes de service sont spéciaux de comptes qui servent d'identité d'un non-personne, comme une fonction, une application ou une VM. Ils vous donnent un moyen d’authentifier ces non-personnes. A peut être considéré à la fois comme une identité et une ressource.
Lorsqu'un compte de service est considéré comme une identité, vous pouvez accorder un rôle à un compte de service, ce qui lui permet d'accéder à une ressource (telle qu'un workflow).
Lorsque vous considérez un compte de service comme une ressource, vous pouvez attribuer des rôles d'autres utilisateurs pour accéder à ce compte de service ou le gérer.
Un compte de service est identifié par son adresse e-mail, qui est unique au compte.
Pour en savoir plus sur la configuration de l'authentification avec un serveur application, consultez S'authentifier en tant que compte de service
Compte de service par défaut
Chaque workflow est associé à un service IAM (Identity and Access Management) au moment de la création du workflow. Si vous ne spécifiez pas de service lors de la création du workflow, celui-ci utilise l'adresse IP par défaut compte de service Compute Engine pour son identité. Vous pouvez vérifier compte de service associé. Dans ce document, consultez Vérifiez le compte de service associé à un workflow.
Nous vous recommandons d'utiliser le compte de service par défaut pour les tests et le développement uniquement. Pour les environnements de production, nous vous recommandons vivement de créer compte de service et lui accordant un ou plusieurs rôles IAM contiennent le autorisations minimales requises pour gérer les workflows.
Autorisations de compte de service
Comme les comptes de service sont des identités, vous pouvez autoriser un compte de service à accéder aux ressources de votre projet en lui attribuant un rôle, comme vous le feriez pour n'importe quel autre compte principal. Par exemple, si vous souhaitez autoriser votre workflow à envoyer des journaux
Cloud Logging, assurez-vous que le compte de service exécutant le workflow
s'est vu attribuer un rôle comprenant l'autorisation logging.logEntries.create
(par exemple, le rôle Logs Writer
).
Notez que le compte de service du workflow ne nécessite pas l'autorisation workflows.invoker
.
s'il appelle lui-même ou d'autres workflows (c'est-à-dire qu'il crée
nouvelles exécutions de workflow). Pour en savoir plus, consultez
Appeler Workflows
Pour en savoir plus sur l'attribution de rôles aux comptes principaux, y compris aux comptes de service, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Rattacher des comptes de service à des ressources
Pour créer une ressource et lui associer un compte de service, vous devez disposer des autorisations suivantes :
créer cette ressource et lui associer le compte de service.
L'autorisation d'associer le compte de service à une ressource est fournie par n'importe quel rôle
qui inclut l'autorisation iam.serviceAccounts.actAs
.
Pour en savoir plus, consultez la section Rôles pour l'authentification des comptes de service.
Appeler des Cloud Functions (2nd gen)
Dans Cloud Functions (2nd gen), les autorisations d'appel sont disponibles en gérant
au service Cloud Run sous-jacent. Si votre workflow appelle un
Cloud Functions (2e génération), il n'est pas nécessaire d'accorder
compte de service de l'appelant, le demandeur Cloud Functions
(roles/cloudfunctions.invoker
). À la place, vous devez accorder
Rôle Demandeur Cloud Run (roles/run.invoker
).
Pour en savoir plus, consultez Comparaison des versions de Cloud Functions
Déployer un workflow avec un compte de service personnalisé
Vous pouvez créer votre propre compte de service géré par l'utilisateur pour contrôler l'accès à votre workflow.
Créez un compte de service et notez son nom.
Accorder le compte de service les rôles appropriés, en fonction des ressources auxquelles le workflow doit accéder pour effectuer son travail.
Assurez-vous que tous les comptes principaux qui déploient des workflows peuvent associer le compte de service aux ressources. Si vous avez créé le compte de service, accordera automatiquement cette autorisation. Pour en savoir plus, consultez la section Rôles pour authentification par compte de service.
Pour obtenir l'autorisation dont vous avez besoin pour associer un compte de service à une ressource, demandez à votre administrateur de vous accorder le Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur votre projet ou le compte de service. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.Ce rôle prédéfini contient L'autorisation
iam.serviceAccounts.actAs
, qui est pour associer un compte de service à une ressource.Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.
Attribuez le rôle au projet :
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ou attribuez le rôle sur le compte de service:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Remplacez les éléments suivants :
WORKFLOWS_PROJECT_ID
: votre projet Google Cloud ID contenant les ressources de workflowPRINCIPAL
: identifiant du déployeur de workflow au formatuser|group|serviceAccount:email
oudomain:domain
Exemple :user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME
: ressource complète nom du compte de service. Exemple :projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Où :
SERVICE_ACCOUNT_PROJECT_ID
correspond à Google Cloud l'ID du projet contenant le compte de service.SERVICE_ACCOUNT_NAME
correspond au nom du compte de service.
Déployer votre workflow à l'aide du compte de service personnalisé.
Déployer un workflow avec un compte de service multiprojet
Par défaut, vous ne pouvez pas créer un compte de service dans un projet et l'associer à une ressource d'un autre projet. Les instructions suivantes vous expliquent comment joindre un compte de service d'un projet vers un workflow d'un autre projet. Vous pouvez ensuite utiliser le compte de service dans différents projets pour déployer un workflow.
Si le compte de service et les ressources de workflow se trouvent dans des projets différents, à partir du projet où se trouve le compte de service, procédez comme suit:
Dans la console Google Cloud, accédez à la page Règles d'administration:
Accéder à la page Règles d'administration
Vérifiez les règles d'administration. pour le projet et de s’assurer que la La contrainte booléenne
iam.disableCrossProjectServiceAccountUsage
n'est pas appliquée au projet. Pour en savoir plus, consultez Activez l'association de comptes de service entre plusieurs projets.Créez un compte de service et notez son nom.
Accorder le compte de service les rôles appropriés, en fonction des ressources auxquelles le workflow doit accéder pour effectuer son travail.
Attribuer le rôle Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator
) aux workflows un agent de service Google Cloud. Cela permet à l'agent de service de gérer l'ensemble de données pour le compte de service. Un agent de service est l'identité service Google Cloud pour un projet particulier. Pour en savoir plus, consultez Agents de serviceConsole
Dans la console Google Cloud, accédez à Workflows :
Cliquez sur
. Créer pour créer un flux de travail ou sélectionnez le nom du flux de travail que que vous souhaitez mettre à jour.Dans la liste Compte de service, cliquez sur Changer de projet.
Sélectionnez un compte de service d'un autre projet.
Si vous y êtes invité, accordez le rôle
roles/iam.serviceAccountTokenCreator
à l'agent de service Workflows.
gcloud
Attribuez le rôle
roles/iam.serviceAccountTokenCreator
au Agent de service Workflows:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member='serviceAccount:service-WORKFLOWS_PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Remplacez les éléments suivants :
SERVICE_ACCOUNT_RESOURCE_NAME
: nom complet de ressource du compte de service. Exemple :projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Où :
SERVICE_ACCOUNT_PROJECT_ID
est le ID du projet Google Cloud contenant le compte de service.SERVICE_ACCOUNT_NAME
est le nom du de service géré.
WORKFLOWS_PROJECT_NUMBER
: le Numéro de projet Google Cloud contenant les ressources du workflow.
Assurez-vous que tous les comptes principaux qui déploient des workflows peuvent associer le compte de service aux ressources. Si vous avez créé le compte de service, accordera automatiquement cette autorisation. Pour en savoir plus, consultez la section Rôles pour authentification par compte de service.
Pour obtenir l'autorisation dont vous avez besoin pour associer un compte de service à une ressource, demandez à votre administrateur de vous accorder le Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur votre projet ou le compte de service. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.Ce rôle prédéfini contient L'autorisation
iam.serviceAccounts.actAs
, qui est pour associer un compte de service à une ressource.Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.
Console
Dans la console Google Cloud, accédez à Workflows :
Cliquez sur
. Créer pour créer un flux de travail ou sélectionnez le nom du flux de travail que que vous souhaitez mettre à jour.Dans la liste Compte de service, cliquez sur Changer de projet.
Sélectionnez un compte de service d'un autre projet.
Si vous y êtes invité, accordez le rôle
roles/iam.serviceAccountUser
sur le projet.
gcloud
Attribuez le rôle au projet :
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ou attribuez le rôle sur le compte de service:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Remplacez les éléments suivants :
WORKFLOWS_PROJECT_ID
: votre compte Google Cloud ID du projet contenant les ressources du workflowPRINCIPAL
: identifiant du workflow déployeur au formatuser|group|serviceAccount:email
oudomain:domain
. Par exemple :user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME
: nom complet de ressource du compte de service. Exemple :projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Où :
SERVICE_ACCOUNT_PROJECT_ID
est le ID du projet Google Cloud contenant le compte de service.SERVICE_ACCOUNT_NAME
est le nom du de service géré.
Déployer votre workflow à l'aide du compte de service multiprojet.
Vérifier le compte de service associé à un workflow
Vous pouvez vérifier quel compte de service est associé à un workflow particulier.
Console
Dans Google Cloud Console, accédez à la page Workflows :
Sur la page Workflows, cliquez sur le workflow son nom.
Sur la page Détails du workflow, cliquez sur l'onglet Détails.
Le compte de service associé au workflow s'affiche.
gcloud
Ouvrez un terminal.
Saisissez la commande suivante :
gcloud workflows describe MY_WORKFLOW
Remplacez
MY_WORKFLOW
par le nom de votre le workflow de ML.Une description complète du workflow incluant le compte de service associé est renvoyé. Exemple :
createTime: '2020-06-05T23:45:34.154213774Z' name: projects/myProject/locations/us-central1/workflows/myWorkflow serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com sourceContents: [...]