Utiliser le mode strict "Agis comme"

Le mode strict "Agir en tant que" permet d'effectuer un contrôle de sécurité supplémentaire pour les actions utilisateur suivantes dans Dataform :

  • Créer ou mettre à jour un dépôt
  • Créer ou mettre à jour une configuration de workflow
  • Créer une invocation de workflow
  • Mettre à jour une configuration de version

Cette vérification de sécurité supplémentaire exige que l'utilisateur qui effectue ces actions dispose de l'autorisation iam.serviceAccounts.actAs sur le compte de service effectif, c'est-à-dire le compte de service dont les identifiants sont utilisés pour exécuter les workflows. Pour en savoir plus, consultez Associer des comptes de service à des ressources.

Vous pouvez activer ces autorisations de différentes manières :

  • Lorsque vous créez un dépôt
  • Lorsque vous mettez à jour un dépôt existant avec l'indicateur de dépôt strict_act_as_checks

Rôles requis

Pour obtenir les autorisations nécessaires pour effectuer les tâches décrites dans ce document, demandez à votre administrateur de vous accorder le rôle IAM Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service personnalisé. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Déterminer le compte de service effectif

Vous pouvez déterminer le compte de service effectif qui exécute les workflows en fonction du type de ressource et des conditions suivantes :

Type de ressource Compte de service effectif
Dépôts

Si vous sélectionnez un compte de service personnalisé lorsque vous créez le dépôt, le compte de service Repository.ServiceAccount est utilisé.

Sinon, la valeur par défaut est Agent de service Dataform.

Configuration du workflow

Vous pouvez sélectionner un compte de service personnalisé lorsque vous créez la configuration du workflow.

Sinon, la valeur par défaut est l'agent de service Dataform du dépôt.

Appel de workflow

Si le résultat de la compilation est WORKFLOW_CONFIG, le compte de service effectif de la configuration du workflow est utilisé.

Si vous créez une invocation de workflow à partir d'un résultat de compilation, le compte de service WorkflowInvocation.InvocationConfig est utilisé s'il est défini.

Sinon, la valeur par défaut est l'agent de service Dataform du dépôt.

Attribuer le rôle IAM Utilisateur de compte de service

Le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) contient l'autorisation iam.serviceAccounts.actAs, qui est requise pour le mode strict "Agir en tant que". Lorsque vous utilisez l'API Dataform, vous devez disposer du rôle Utilisateur du compte de service pour le compte de service effectif en fonction de la méthode projects.locations.repositories que vous appelez :

  • create ou patch
    • Si la propriété Repository.ServiceAccount est définie, vous devez disposer du rôle Utilisateur du compte de service pour cette propriété.
    • Si vous appelez la méthode patch, vous devez disposer du rôle Utilisateur du compte de service pour tous les comptes de service effectifs dans toutes les configurations de workflow du dépôt.
  • workflowConfigs.create ou workflowConfigs.patch
    • Vous devez disposer du rôle Utilisateur du compte de service pour le compte de service effectif utilisé dans la configuration du workflow.
  • releaseConfigs.patch
    • Vous devez disposer du rôle "Utilisateur du compte de service" pour tous les comptes de service effectifs utilisés dans les configurations de workflow à l'aide de cette configuration de version.
  • workflowInvocations.create
    • Vous devez disposer du rôle Utilisateur du compte de service pour le compte de service effectif utilisé dans l'appel du workflow.

Pour attribuer le rôle Utilisateur du compte de service à un compte de service personnalisé, procédez comme suit :

  1. Dans la console Google Cloud , accédez à IAM > Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez un projet.

  3. Sur la page Comptes de service pour le projet "PROJECT_NAME", sélectionnez votre compte de service personnalisé.

  4. Accédez à Comptes principaux ayant accès, puis cliquez sur Accorder l'accès.

  5. Dans le champ Nouveaux comptes principaux, saisissez l'ID de votre agent de service Dataform par défaut.

    L'ID de votre agent de service Dataform par défaut se présente au format suivant :

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. Dans la liste Sélectionner un rôle, sélectionnez le rôle Utilisateur du compte de service.

  7. Cliquez sur Enregistrer.

Pour en savoir plus, consultez les rôles requis pour créer une configuration de workflow et les rôles requis pour créer une configuration de version.

Effets du mode actAs strict sur les versions et les exécutions automatiques

Lorsque le mode strict "Agir en tant que" est activé, il a un impact sur les versions automatiques du dépôt et les exécutions automatiques du workflow comme suit :

Pour les dépôts qui ne sont pas connectés à des dépôts tiers :

  • Vous ne pouvez pas définir de planification Cron pour les versions automatiques dans les configurations de version. Cette règle est appliquée pour empêcher le déploiement automatique des modifications de code apportées par un utilisateur qui ne dispose peut-être pas des autorisations iam.serviceAccounts.actAs nécessaires sur les comptes de service en aval.
  • Les exécutions de workflow planifiées à l'aide d'une programmation Cron dans les configurations de workflow restent activées. Pour que ces exécutions automatisées réussissent, vous devez accorder à l'agent de service Dataform par défaut l'autorisation iam.serviceAccounts.actAs sur le compte de service effectif spécifié dans la configuration du workflow.

Pour les dépôts connectés à des dépôts tiers :

  • Les versions et les exécutions de workflows planifiées sont autorisées.
  • Pour activer une publication automatique à partir d'une configuration de publication ou une exécution automatique à partir d'une configuration de workflow, vous devez accorder à l'agent de service Dataform par défaut l'autorisation iam.serviceAccounts.actAs sur le compte de service effectif concerné :
    • Pour une configuration de publication automatique, accordez l'autorisation sur les comptes de service effectifs de toutes les configurations de workflow déclenchées par cette configuration de publication.
    • Pour une configuration de workflow automatique, accordez l'autorisation sur le compte de service effectif utilisé par cette configuration de workflow.

Étapes suivantes