Pour créer, mettre à jour ou supprimer un déploiement à l'aide d'Infrastructure Manager, vous devez utiliser un compte de service. Infra Manager exécute Terraform à l'aide de l'identité de ce compte de service.
Vous n'avez pas besoin d'un compte de service pour afficher des informations sur les déploiements d'Infra Manager.
Cette page explique comment configurer un compte de service afin de pouvoir déployer des ressources avec Infrastructure Manager.
Avant de commencer
- Activez le service Infra Manager.
- Créez un compte de service ou identifiez un compte de service existant à utiliser avec Infra Manager.
Accorder l'accès au compte de service
Pour créer, mettre à jour ou supprimer un déploiement à l'aide d'Infrastructure Manager, un utilisateur individuel doit avoir accès au compte de service.
Attribuez à l'utilisateur le rôle IAM Utilisateur du compte de service (roles/iam.serviceAccountUser
) pour le compte de service.
Accorder des autorisations pour Infra Manager
Pour utiliser Infra Manager, le compte de service doit disposer du rôle Agent Infra Manager (roles/config.agent
).
Cela permet à Infra Manager de créer, mettre à jour et supprimer des ressources.
Pour savoir comment accorder des autorisations aux comptes de service, consultez la section Gérer l'accès aux comptes de service.
Accorder l'autorisation de lecture pour le bucket de stockage
Vous pouvez utiliser un bucket de stockage pour stocker les configurations Terraform déployées par Infra Manager.
Si vous utilisez un bucket de stockage pour les configurations et que ce bucket de stockage se trouve dans un projet différent de celui dans lequel vous exécutez Infra Manager, vous devez vous assurer que le compte de service que vous utilisez pour appeler Infra Manager dispose de l'autorisation de lecture pour le bucket. Pour en savoir plus sur les autorisations Cloud Storage, consultez la page Autorisations IAM pour Cloud Storage.
Si le bucket de stockage se trouve dans le même projet qu'Infra Manager et que vous avez accordé roles/config.agent
au compte de service, l'autorisation de lecture du bucket est déjà activée.
Pour savoir comment importer une configuration dans un bucket de stockage, consultez la section Importer une configuration Terraform.
Accorder des autorisations pour les ressources définies dans la configuration
Pour créer et gérer les ressources Google Cloud définies dans la configuration Terraform, le compte de service a besoin d'autorisations spécifiques à ces ressources.
Autorisations spécifiques aux ressources Google Cloud définies dans la configuration Terraform que vous déployez. Par exemple, l'autorisation permettant de créer une instance de VM Compute Engine est
compute.instances.create
.Autorisations spécifiques aux ressources Google Cloud définies dans la configuration Terraform du déploiement que vous mettez à jour.
Par exemple, imaginons que votre déploiement provisionne une VM Compute Engine, puis que vous le mettez à jour à l'aide d'une configuration qui n'inclut pas de VM Compute Engine. Dans ce cas, lorsque vous mettez à jour la révision, le compte de service doit:
Autorisations pour les ressources définies dans la nouvelle configuration.
Autorisations pour les ressources supprimées, telles que la VM Compute Engine dans cet exemple.
Pour identifier les autorisations requises pour les ressources des configurations Terraform, consultez la section Choisir des rôles prédéfinis.
Pour savoir comment accorder des autorisations aux comptes de service, consultez la section Gérer l'accès aux comptes de service.
Accorder l'accès aux projets
Des autorisations supplémentaires sont requises si le compte de service se trouve dans un projet différent de celui dans lequel le service Infra Manager est exécuté.
Pour accorder ces autorisations supplémentaires:
Dans le projet contenant le compte de service, assurez-vous que la contrainte de règle d'administration
iam.disableCrossProjectServiceAccountUsage
n'est pas appliquée. Cette contrainte est appliquée par défaut.Pour désactiver cette contrainte de règle d'administration, exécutez la commande suivante :
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=SERVICE_ACCOUNT_PROJECT_ID
Remplacez SERVICE_ACCOUNT_PROJECT_ID par l'ID du projet contenant le compte de service.
Dans le projet qui contient le compte de service, attribuez le rôle
roles/iam.serviceAccountUser
à l'agent de service Infra Manager du projet dans lequel vous créez des déploiements:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Remplacez les valeurs d'espace réservé dans la commande ci-dessus par les éléments suivants :
- SERVICE_ACCOUNT_PROJECT_ID: ID du projet contenant le compte de service.
- INFRA_MANAGER_PROJECT_NUMBER: numéro du projet dans lequel vous créez des déploiements. L'ID de messagerie de l'agent de service est le suivant :
service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
Pour autoriser Infra Manager à créer des tâches Cloud Build au nom du compte de service, accordez-lui le rôle
roles/iam.serviceAccountTokenCreator
. Ce rôle est destiné à l'agent de service Infra Manager du projet dans lequel vous créez des déploiements:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
Étape suivante
- Apprenez-en davantage sur IAM
- En savoir plus sur Terraform avec Google Cloud
- Déployez une infrastructure à l'aide d'Infra Manager.
- Mettre à jour un déploiement
- Afficher l'état d'un déploiement