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


Cette page explique comment appliquer le principe du moindre privilège en accordant l'accès à des ressources Compute Engine spécifiques plutôt que d'accorder l'accès à 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

  • Consultez la présentation d'IAM.
  • Lisez la page Présentation du contrôle des accès de Compute Engine.
  • Familiarisez-vous avec les rôles IAM pour Compute Engine.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer l'accès aux ressources Compute Engine, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de Compute (roles/compute.admin) sur la ressource. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour gérer l'accès aux ressources Compute Engine. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour gérer l'accès aux ressources Compute Engine :

  • Pour accorder ou révoquer l'accès aux ressources :
    • compute.projects.get sur le projet
    • compute.RESOURCE_TYPE.get sur la ressource
    • compute.RESOURCE_TYPE.getIamPolicy sur la ressource
    • compute.RESOURCE_TYPE.setIamPolicy sur la ressource
  • Pour tester les autorisations des appelants : compute.RESOURCE_TYPE.getIamPolicy sur la ressource

    Remplacez RESOURCE_TYPE par la ressource à laquelle vous souhaitez gérer l'accès. Par exemple, instances, instanceTemplates ou images.

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

Ressources compatibles

Pour afficher la liste des ressources Compute Engine compatibles avec le contrôle des accès au niveau des ressources, consultez les pages suivantes : Types de ressources compatibles avec les stratégies IAM et ajoutez l'option de filtrage Compute Engine.

Pour les autres ressources Compute Engine qui ne sont pas compatibles avec le contrôle des accès au niveau des ressources, vous devez gérer l'accès à ces 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

Un compte principal, tel qu'un compte utilisateur ou un compte de service, peut accéder aux ressources Compute Engine. Une identité est une propriété de compte principal. L'identité d'un compte principal est généralement représentée par une adresse e-mail associée au compte.

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

Pour autoriser l'accès à une ressource Compute Engine spécifique, définissez une stratégie IAM sur la ressource.

Console

  1. Dans la console Google Cloud, accédez à la page correspondant au type de la ressource pour laquelle vous souhaitez ajouter des autorisations.
  2. Cochez les cases à côté des ressources que vous souhaitez mettre à jour.
  3. Suivez les étapes décrites sur la page de ressources.
    • Pour les instances de VM, cliquez sur Autorisations.
    • Pour toutes les autres ressources, procédez comme suit :
      1. Vérifiez si le panneau d'informations est visible. S'il n'est pas visible, cliquez sur Afficher le panneau d'informations.
      2. Sélectionnez l'onglet Autorisations.
  4. Cliquez sur Ajouter un compte principal.
  5. Ajoutez l'identité du compte principal et sélectionnez le rôle requis.
  6. Pour enregistrer vos modifications, cliquez sur Enregistrer.

gcloud

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

gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \
    --member='PRINCIPAL' \
    --role='ROLE'

Remplacez les éléments suivants :

  • RESOURCE_TYPE : type de ressource. Les valeurs valides sont les suivantes :
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME : nom de la ressource. Exemple : my_instance.
  • PRINCIPAL : identité valide du compte principal auquel vous souhaitez accorder le rôle. Doit être au format user|group|serviceAccount:EMAIL_ADDRESS ou domain:DOMAIN_ADDRESS. Par exemple :
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE : rôle à attribuer à ce compte principal.

Si vous accordez l'accès à une ressource en version Preview, exécutez plutôt une commande gcloud beta compute.

REST

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/VM_NAME:getIamPolicy

    Remplacez les éléments suivants :

    • 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.
    • VM_NAME : 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 comptes principaux 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/VM_NAME:setIamPolicy

    Remplacez les éléments suivants :

    • 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.
    • VM_NAME : 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 comptes principaux n'ont plus besoin d'accéder à vos ressources Compute Engine, il est recommandé de révoquer leur accès.

Console

  1. Dans la console Google Cloud, accédez à la page correspondant au type de la ressource pour laquelle vous souhaitez ajouter des autorisations.
  2. Cochez les cases à côté des ressources que vous souhaitez mettre à jour.
  3. Suivez les étapes décrites sur la page de ressources.
    • Pour les instances de VM, cliquez sur Autorisations.
    • Pour toutes les autres ressources, procédez comme suit :
      1. Vérifiez si le panneau d'informations est visible. S'il n'est pas visible, cliquez sur Afficher le panneau d'informations.
      2. Sélectionnez l'onglet Autorisations.
  4. Cliquez sur la carte du rôle pour lequel vous souhaitez supprimer les comptes principaux. La carte est alors développée et affiche les utilisateurs associés à ce rôle pour cette ressource.
  5. Pour supprimer un compte principal de ce rôle, cliquez sur  Supprimer.

gcloud

Pour supprimer un rôle d'un compte principal 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 les éléments suivants :

  • RESOURCE_TYPE : type de ressource. Les valeurs valides sont les suivantes :
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME : nom de la ressource. Par exemple, my_instance.
  • PRINCIPAL : une identité valide pour le compte principal. Doit être au format user|group|serviceAccount:EMAIL_ADDRESS ou domain:DOMAIN_ADDRESS. Par exemple :
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE : rôle pour lequel vous souhaitez supprimer le compte principal.

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

REST

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/VM_NAME:getIamPolicy

    Remplacez les éléments suivants :

    • 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.
    • VM_NAME : 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/VM_NAME:setIamPolicy

    Remplacez les éléments suivants :

    • 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.
    • VM_NAME : 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/VM_NAME/testIamPermissions
        {
          "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.

Étape suivante