Attribuer des rôles à votre compte de service

Lorsque les développeurs prévisualisent et déploient des applications, ils peuvent utiliser un compte de service existant. L'App Design Center peut également créer automatiquement un compte de service. Si vous souhaitez que les développeurs utilisent votre compte de service, vous devez procéder comme suit :

  • Ajoutez des liaisons de stratégie IAM au compte de service et au compte utilisateur.
  • Attribuez au compte de service les rôles requis pour déployer chaque ressource.
  • Ajoutez des autorisations au compte de service pour déployer en dehors du projet dans lequel il a été créé.
  • Mettez à jour les règles de votre organisation pour autoriser l'utilisation des comptes de service dans plusieurs projets.

Pour configurer vos comptes de service, procédez comme suit :

  1. Ajoutez une liaison de stratégie IAM pour le rôle roles/iam.serviceAccountUser de l'agent de service à votre compte de service :

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="serviceAccount:service-SERVICE_ACCOUNT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountUser"
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service. Exemple :my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet contenant votre compte de service.
    • SERVICE_ACCOUNT_PROJECT_NUMBER : numéro du projet contenant votre compte de service.
  2. Ajoutez une liaison de stratégie IAM pour le rôle roles/iam.serviceAccountUser d'un utilisateur à votre compte de service :

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service. Exemple :my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
    • USER_EMAIL : adresse e-mail de l'utilisateur qui effectue le déploiement.
  3. Dans le projet qui contient votre compte de service, ajoutez des liaisons de stratégie IAM pour les rôles d'agent de service requis dans le projet de gestion qui contient votre espace :

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/apphub.editor"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/config.agent"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageAdmin"
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet contenant votre compte de service.
    • MANAGEMENT_PROJECT_NUMBER : numéro de projet du projet de gestion contenant votre espace.
  4. Dans le projet contenant votre 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 l'application de la 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 les éléments suivants :

    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet contenant votre compte de service.
  5. Attribuez à votre compte de service les rôles requis pour déployer des ressources dans les projets. Les rôles requis s'affichent lorsque les développeurs déploient des applications.

    Par exemple, pour accorder le rôle roles/run.admin, ajoutez la liaison de stratégie suivante :

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-DEPLOYMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/run.admin"
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet contenant votre compte de service.
    • DEPLOYMENT_PROJECT_NUMBER : numéro du projet dans lequel vous déployez des ressources.
  6. App Design Center utilise Infrastructure Manager pour déployer des applications dans la console. Pour utiliser votre propre compte de service afin de déployer des ressources avec Infrastructure Manager, suivez la procédure décrite dans Accorder l'accès aux projets.

  7. Si l'application que vous déployez contient des composants privés que vous avez importés via une connexion Developer Connect, procédez comme suit :

    Attribuez le rôle roles/iam.serviceAccountTokenCreator à votre compte de service dans le projet où vous l'avez créé.

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet contenant votre compte de service.
    • SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service. Exemple :my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com

Étapes suivantes