Gérer l'accès aux ressources Compute Engine

Ce guide explique comment appliquer le principe de moindre privilège en accordant l'accès à des ressources Compute Engine spécifiques plutôt qu'à une ressource parente, telle qu'un projet, un dossier ou une organisation.

Pour accorder l'accès à une ressource, vous devez définir une stratégie IAM (Identity and Access Management) sur la ressource. La stratégie associe un ou plusieurs membres, tels qu'un utilisateur ou un compte de service, à un ou plusieurs rôles. Chaque rôle contient une liste d'autorisations permettant au membre d'interagir avec la ressource.

Si vous accordez l'accès à une ressource parente (par exemple, à un projet), vous accordez implicitement l'accès à toutes ses ressources enfants (par exemple, à toutes les VM de ce projet). Pour limiter l'accès aux ressources, définissez les stratégies IAM sur les ressources de niveau inférieur lorsque cela est possible, plutôt qu'au niveau du projet ou à un niveau supérieur.

Pour obtenir des informations générales sur la manière d'accorder, de modifier et de révoquer l'accès à des ressources non liées à Compute Engine (par exemple, pour accorder l'accès à un projet Google Cloud), consultez la page Accorder, modifier et révoquer les accès à des ressources dans la documentation IAM.

Avant de commencer

Ressources compatibles

Compute Engine est compatible avec le contrôle d'accès au niveau des ressources pour les ressources suivantes :

Les autres ressources Compute Engine ne sont pas compatibles avec le contrôle d'accès au niveau des ressources. Par conséquent, vous devez gérer l'accès aux autres types de ressources au niveau du projet, du dossier ou de l'organisation. Pour plus d'informations sur les organisations, les dossiers ou les projets, consultez la page Hiérarchie des ressources.

Accorder l'accès aux ressources Compute Engine

Avant d'accorder un rôle IAM à un utilisateur pour une ressource, vérifiez quels rôles sont disponibles pour une ressource donnée. Pour en savoir plus, consultez la page Afficher des rôles pouvant être attribués sur des ressources.

Pour autoriser des utilisateurs à accéder à des ressources Compute Engine spécifiques, définissez une stratégie IAM pour la ressource.

Console

  1. Dans Google Cloud Console, accédez à la page correspondant à la ressource pour laquelle vous souhaitez ajouter des autorisations.
  2. Cochez les cases à côté des ressources que vous souhaitez mettre à jour.
  3. Cliquez sur Afficher le panneau d'informations pour développer la colonne des autorisations.
  4. Dans le champ Ajouter des membres, ajoutez un ou plusieurs membres.
  5. Dans la liste Rôle, sélectionnez un ou plusieurs rôles.
  6. Cliquez sur Ajouter pour enregistrer vos modifications.

gcloud

Pour accorder un rôle à un membre sur une ressource, exécutez la sous-commande add-iam-policy-binding de la ressource avec les options --member et --role.

gcloud compute resource-type add-iam-policy-binding resource-name \
    --member='member' \
    --role='role'

Remplacez l'élément suivant :

  • resource-type : type de ressource. Les valeurs valides sont les suivantes :
    • disks
    • images
    • instances
    • instance-templates
    • regionDisks
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • resource-name : nom de la ressource. Par exemple, my_instance.
  • member : identité valide à laquelle vous souhaitez accorder le rôle. Doit être au format user|group|serviceAccount:email ou domain:domain. Par exemple :
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role : rôle à attribuer à cette identité.

Si vous accordez l'accès à une ressource qui est actuellement en version bêta, exécutez plutôt une commande gcloud beta compute.

API

Pour modifier une stratégie IAM via l'API, procédez comme suit :

  1. Lisez la stratégie existante à l'aide de la méthode getIamPolicy correspondante de la ressource. Par exemple, la requête HTTP suivante lit la stratégie IAM d'une VM :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:getIamPolicy

    Remplacez l'élément suivant :

    • project-id : ID du projet auquel appartient cette VM.
    • zone : zone de la VM. Pour les ressources régionales ou globales, remplacez zones/zone par regions/region ou global.
    • instance : nom de l'instance de VM.

    Compute Engine affiche la stratégie actuelle dans la réponse.

  2. Modifiez la stratégie à l'aide d'un éditeur de texte pour ajouter ou supprimer des membres et les rôles qui leur sont associés. Par exemple, pour accorder le rôle compute.admin à email@example.com, ajoutez la nouvelle liaison suivante à la stratégie :

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Écrivez la stratégie mise à jour avec setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:setIamPolicy

    Remplacez l'élément suivant :

    • project-id : ID du projet auquel appartient cette VM.
    • zone : zone de la VM. Pour les ressources régionales ou globales, remplacez zones/zone par regions/region ou global.
    • instance : nom de l'instance de VM.

    Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.

Révoquer l'accès aux ressources

Une fois que les membres n'ont plus besoin d'accéder à vos ressources Compute Engine, il est recommandé de révoquer leur accès.

Console

  1. Dans Google Cloud Console, accédez à la page correspondant à la ressource pour laquelle vous souhaitez ajouter des autorisations.
  2. Cochez les cases à côté des ressources que vous souhaitez mettre à jour.
  3. Cliquez sur Afficher le panneau d'informations pour développer la colonne des autorisations.
  4. Cliquez sur la carte du rôle de la ressource de laquelle vous souhaitez supprimer des membres. La carte est alors développée et affiche les membres associés à ce rôle pour cette ressource.
  5. Cliquez sur Supprimer  pour supprimer un membre de ce rôle.

gcloud

Pour supprimer un rôle d'un membre pour une ressource, exécutez la sous-commande remove-iam-policy-binding de la ressource avec les options --member et --role.

gcloud compute resource-type remove-iam-policy-binding resource-name \
    --member='member' \
    --role='role'

Remplacez l'élément suivant :

  • resource-type : type de ressource. Les valeurs valides sont les suivantes :
    • disks
    • images
    • instances
    • instance-templates
    • regionDisks
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • resource-name : nom de la ressource. Exemple :my_instance
  • member : identité que vous souhaitez supprimer. Doit être au format user|group|serviceAccount:email ou domain:domain. Par exemple :
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role : rôle duquel vous souhaitez supprimer l'identité.

Si vous révoquez l'accès à une ressource qui est actuellement en version bêta, exécutez plutôt une commande gcloud beta compute.

API

Pour modifier une stratégie IAM directement via l'API, procédez comme suit :

  1. Lisez la stratégie existante à l'aide de la méthode getIamPolicy correspondante de la ressource. Par exemple, la requête HTTP suivante lit la stratégie IAM d'une VM :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:getIamPolicy

    Remplacez l'élément suivant :

    • project-id : ID du projet pour cette instance de VM.
    • zone : zone de la VM. Pour les ressources régionales ou globales, remplacez zones/zone par regions/region ou global.
    • instance : nom de l'instance de VM.

    Compute Engine affiche la stratégie actuelle dans la réponse.

  2. Modifiez la stratégie à l'aide d'un éditeur de texte pour supprimer des membres des rôles qui leur sont associés. Par exemple, supprimez email@example.com du rôle compute.admin :

    {
      "members": [
        "user:owner@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Écrivez la stratégie mise à jour avec setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:setIamPolicy

    Remplacez l'élément suivant :

    • project-id : ID du projet auquel appartient cette VM.
    • zone : zone de la VM. Pour les ressources régionales ou globales, remplacez zones/zone par regions/region ou global.
    • instance : nom de l'instance de VM.

    Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.

Tester si un appelant dispose d'autorisations

Si vous ne savez pas de quelles autorisations dispose une identité, utilisez la méthode d'API testIamPermissions pour le vérifier.

Cette méthode utilise comme paramètres d'entrée une URL de ressource et un ensemble d'autorisations, et affiche l'ensemble d'autorisations dont dispose l'appelant. Vous pouvez exécuter cette méthode sur n'importe laquelle des ressources compatibles.

Généralement, la méthode testIamPermissions est destinée à être intégrée à votre logiciel propriétaire, comme une interface utilisateur graphique personnalisée. En général, vous n'appelez pas testIamPermissions si vous utilisez directement Google Cloud pour gérer les autorisations.

Par exemple, si vous créez une interface utilisateur graphique sur l'API Compute Engine et qu'elle comporte un bouton "Démarrer" pour démarrer une instance, vous pouvez appeler compute.instances.testIamPermissions() pour déterminer si ce bouton doit être activé ou désactivé.

Pour tester si un appelant dispose d'autorisations spécifiques sur une ressource :

  1. Envoyez une requête à la ressource et incluez dans le corps de la requête la liste des autorisations à vérifier.

    Par exemple, sur une instance, vous pouvez vérifier compute.instances.start, compute.instances.stop et compute.instances.delete.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/setIamPolicy
        {
          "permissions": [
            "compute.instances.start",
            "compute.instances.stop",
            "compute.instances.delete"
           ]
        }
  2. La requête affiche les autorisations actives pour l'appelant.

    {
      "permissions": [
        "compute.instances.start",
        "compute.instances.stop"
      ]
    }
    

Modifier l'accès aux ressources pour plusieurs membres

Si vous souhaitez modifier simultanément l'accès aux ressources Compute Engine pour plusieurs membres, consultez les recommandations sur la façon de modifier une stratégie IAM de manière automatisée.

Étapes suivantes