Définir le contrôle des accès d'une configuration

Pour contrôler l'accès à vos ressources dans Google Cloud, utilisez la gestion de l'authentification et des accès (IAM). IAM vous permet de définir des autorisations pour contrôler qui a accès à quelles ressources dans votre projet. Pour une introduction à IAM, consultez la page Présentation d'IAM.

Lorsque vous déployez des ressources, vous pouvez également contrôler qui y a accès en définissant à l'avance une stratégie IAM dans la configuration. Par exemple, si vous envisagez de créer des sujets Pub/Sub pouvant être gérées par des utilisateurs spécifiques, vous pouvez l'indiquer à Deployment Manager en spécifiant une stratégie IAM dans votre configuration. Lorsque vous créez ou mettez à jour votre déploiement, Deployment Manager appelle l'API IAM pour définir les autorisations appropriées sur la ressource.

Avant de commencer

Utiliser des stratégies IAM dans Deployment Manager

Une stratégie IAM est un ensemble d'utilisateurs et leurs rôles. Vous définissez une stratégie IAM au niveau du projet, en utilisant des rôles de base ou prédéfinis. Certains services, tels que Cloud Pub/Sub, permettent également la définition de stratégies IAM au niveau des ressources.

Si un service n'est pas compatible avec la définition de stratégies IAM au niveau des ressources, Deployment Manager renvoie une erreur de type NO_METHOD_TO_UPDATE_ACCESS_CONTROL.

Pour connaître la liste des rôles disponibles et les ressources auxquelles vous pouvez les appliquer, consultez la page Comprendre les rôles.

Accorder l'autorisation à Deployment Manager de définir des stratégies IAM

Deployment Manager utilise le compte de service des API Google pour appeler d'autres API Google et gérer les ressources Google Cloud en votre nom. Vous devez attribuer le rôle de base roles/owner au compte de service des API Google de votre projet afin qu'il puisse appliquer les stratégies IAM définies dans vos configurations.

  1. Accédez à la page IAM de la console Google Cloud de votre projet.

    Accéder à la page IAM

  2. Si vous y êtes invité, sélectionnez votre projet dans la liste.
  3. Recherchez le compte de service des API Google, dont l'adresse e-mail est au format suivant :

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Attribuez les rôles roles/owner au compte de service API :

    Console

    1. Toujours dans la console Google Cloud, développez le menu déroulant Rôles du compte de service des API Google, puis sélectionnez Projet > Propriétaire.
    2. Cliquez sur Enregistrer pour enregistrer les modifications.

    gcloud

    Avec la Google Cloud CLI, ajoutez une liaison à la stratégie IAM pour le projet :

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner

    où :

    • [PROJECT_ID] est l'ID du projet.
    • [SERVICE_ACCOUNT_EMAIL] est l'adresse e-mail du compte de service.

    Exemple :

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/owner

    API

    Dans l'API, exécutez une requête POST à l'URL suivante, où [PROJECT_ID] correspond à l'ID du projet :

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    Le corps de la requête doit contenir la liste des liaisons que vous souhaitez appliquer à ce projet. Le rôle roles/owner doit faire partie de la liaison. Exemple :

    {
        "policy": {
            "version": "0",
            "bindings": [
                {
                    "role": "roles/owner",
                    "members": [
                        "user:example@gmail.com",
                        "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
                    ]
                }
            ]
        }
    }
    

Définir une stratégie IAM dans la configuration

Ensuite, pour définir une stratégie IAM dans votre configuration ou votre modèle, procédez comme suit :

  1. Ajoutez la section accessControl à la configuration de premier niveau pour chaque ressource à laquelle vous souhaitez appliquer des stratégies de contrôle d'accès.

  2. Spécifiez la stratégie gcpIamPolicy souhaitée pour la ressource. Chaque stratégie IAM peut contenir plusieurs liaisons. Chaque liaison associe une liste d'utilisateurs à un rôle.

    Si vous utilisez accessControl pour gérer les comptes de service, apprenez-en plus sur la gestion des comptes de service.

Par exemple, la section accessControl suivante ajoute des liaisons qui attribuent ces rôles aux utilisateurs :

User Rôle
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
roles/pubsub.publisher
resources:
- name: a-new-pubsub-topic
  type: pubsub.v1.topic
  properties:
    ...

  accessControl:
    gcpIamPolicy:
      bindings:
      - role: roles/pubsub.editor
        members:
        - "user:alice@example.com"
      - role: roles/pubsub.publisher
        members:
        - "user:jane@example.com"
        - "serviceAccount:my-other-app@appspot.gserviceaccount.com"

Pour en savoir plus sur les stratégies IAM, consultez la documentation IAM.