Gérer l'accès aux images personnalisées

Pour permettre aux utilisateurs de créer, supprimer, utiliser ou partager vos images personnalisées, vous devez leur accorder les rôles IAM (Identity and Access Management) appropriés. Utilisez IAM pour :

Pour obtenir des informations générales sur l'attribution de l'accès à des ressources Compute Engine, consultez la page Gérer l'accès aux ressources Compute Engine. Pour plus d'informations sur IAM, consultez la documentation IAM.

Avant de commencer

Limites

Vous ne pouvez pas accorder à un utilisateur le rôle allUsers sur les images.

Accorder les autorisations permettant de créer des images personnalisées

Vous pouvez autoriser des utilisateurs à créer des images personnalisées au sein de votre organisation ou de votre projet.

Compute Engine offre le rôle prédéfini d'administrateur de l'espace de stockage. Vous pouvez attribuer ce rôle aux utilisateurs afin qu'ils puissent créer, supprimer et gérer des ressources liées au stockage, ce qui inclut les images, les disques et les instantanés. Si vous avez besoin d'un rôle permettant uniquement la création d'images, vous devez créer un rôle personnalisé. Dans votre rôle personnalisé, incluez les autorisations suivantes si nécessaire :

  • compute.images.create pour la création d'images
  • compute.images.list pour répertorier les images existant dans le projet
  • compute.disks.use si l'image est créée à partir d'un disque
  • compute.disks.list si vous souhaitez autoriser les utilisateurs à répertorier les disques figurant dans le projet

Si vous autorisez un utilisateur à créer des images personnalisées au niveau de l'organisation, celui-ci est habilité à créer des images personnalisées dans n'importe quel projet au sein de l'organisation.

Console

  1. Dans Google Cloud Console, accédez à la page IAM et administration du projet ou de l'organisation.

    Accéder à la page IAM et administration

  2. Cliquez sur le bouton Ajouter pour ajouter un nouveau membre.

  3. Dans le champ Nouveaux membres, saisissez l'adresse e-mail de l'identité à laquelle vous souhaitez accorder l'accès.

  4. Dans la liste Sélectionner un rôle, sélectionnez Compute Engine > Administrateur Compute Storage, ou choisissez un rôle personnalisé si vous en avez créé un.

  5. Enregistrez les modifications.

gcloud

Pour accorder le rôle roles/compute.storageAdmin au niveau de l'organisation :

gcloud organizations add-iam-policy-binding organization-id \
    --member='member' \
    --role='roles/compute.storageAdmin'

Pour accorder le rôle roles/compute.storageAdmin au niveau d'un projet :

gcloud projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/compute.storageAdmin'

Remplacez les éléments suivants :

  • organization-id ou project-id : ID de l'organisation ou du projet, par exemple my-organization-1 ou my-project-1.
  • 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

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. Pour les projets, utilisez l'URL suivante, en remplaçant project-id par l'ID de votre projet. Par exemple, my-project-1.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

    Pour les organisations, utilisez l'URL suivante, en remplaçant organization-id par votre ID d'organisation (code numérique à 12 chiffres). Exemple :123456578920

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy

    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 roles/compute.storageAdmin à "email@example.com", ajoutez la nouvelle liaison suivante à la stratégie :

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

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    Remplacez project-id par l'ID du projet. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.

Accorder les autorisations permettant de supprimer des images personnalisées

Suivant vos besoins, vous pouvez autoriser les utilisateurs à :

  • supprimer une image spécifique ;
  • supprimer des images appartenant à un projet spécifique ;
  • supprimer des images dans n'importe quel projet au sein d'une organisation.

Accorder cette autorisation au niveau du projet permet aux utilisateurs de supprimer toute image appartenant à ce projet. Accorder cette autorisation au niveau de l'organisation permet à l'utilisateur de supprimer toute image appartenant à cette organisation, quel que soit le projet.

Compute Engine offre le rôle prédéfini d'administrateur de l'espace de stockage. Vous pouvez attribuer ce rôle aux utilisateurs afin qu'ils puissent créer, supprimer et gérer des ressources liées au stockage, ce qui inclut les images, les disques et les instantanés. Si vous avez besoin d'un rôle permettant uniquement la suppression d'images, vous devez créer un rôle personnalisé. Dans votre rôle personnalisé, incluez les autorisations suivantes si nécessaire :

  • compute.images.delete pour la suppression d'images
  • compute.images.list pour répertorier les images du projet ou de l'organisation, si nécessaire
  • compute.images.get pour obtenir les images

Console

Pour autoriser la suppression d'images spécifiques, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Images.

    Accéder à la page Images

  2. Sélectionnez les images sur lesquelles vous souhaitez accorder des autorisations.

  3. À droite, dans le panneau Autorisations, cliquez sur Ajouter des membres.

  4. Saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image. Doit être au format user|group|serviceAccount:email ou domain:domain. Exemple :

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  5. Dans la liste Rôle, pointez sur Compute Engine et sélectionnez Administrateur de l'espace de stockage, ou bien sélectionnez un rôle personnalisé dans la liste Personnalisé.

  6. Enregistrez les modifications.

Pour accorder l'autorisation de supprimer des images au niveau d'un projet ou d'une organisation :

  1. Accédez à la page IAM et administration du projet ou de l'organisation.

    Accéder à la page IAM et administration

  2. En haut de la page, cliquez sur le bouton Ajouter.

  3. Dans le champ Nouveaux membres, saisissez l'adresse e-mail de l'identité à laquelle vous souhaitez accorder l'accès. Doit être au format user|group|serviceAccount:email ou domain:domain. Exemple :

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  4. Dans la liste Rôle, pointez sur Compute Engine et sélectionnez Administrateur de l'espace de stockage, ou bien sélectionnez un rôle personnalisé dans la liste Personnalisé.

  5. Enregistrez les modifications.

gcloud

Pour autoriser les utilisateurs à supprimer des images au niveau de l'organisation, procédez comme suit :

gcloud organizations add-iam-policy-binding organization-id \
    --member='member' \
    --role='role'

Pour autoriser les utilisateurs à supprimer des images au niveau d'un projet, procédez comme suit :

gcloud projects add-iam-policy-binding project-id \
    --member='member' \
    --role='role'

Pour autoriser les utilisateurs à supprimer une image spécifique, procédez comme suit :

gcloud images add-iam-policy-binding image-name \
    --member='member' \
    --role='role'

Remplacez les éléments suivants :

  • organization-id ou project-id ou image-name : ID d'organisation numérique à 12 chiffres, ID de projet ou nom d'image, par exemple 123456578920, my-project-1 ou my-custom-image.
  • 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é, par exemple roles/compute.storageAdmin ou un rôle personnalisé, tel que roles/customImageDeletionRole.

API

Pour utiliser l'API afin d'autoriser les utilisateurs à supprimer des images, procédez comme suit :

  1. Lisez la stratégie existante à l'aide de la méthode getIamPolicy correspondante de la ressource. Pour les projets, utilisez l'URL suivante :

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

    Remplacez project-id par l'ID du projet.

    Pour les organisations, utilisez l'URL suivante :

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy

    Remplacez organization-id par l'ID d'organisation numérique à 12 chiffres.

    Pour une image spécifique, utilisez l'URL suivante :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Remplacez project-id par l'ID du projet et image-name par le nom de l'image.

    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 roles/compute.storageAdmin à "email@example.com", ajoutez la nouvelle liaison suivante à la stratégie :

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

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    Remplacez project-id par l'ID du projet. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.

Partager des images personnalisées au sein d'une organisation

Si votre projet appartient à une organisation, celle-ci peut héberger plusieurs autres projets ayant différents niveaux d'accès les uns aux autres. Lorsque vous créez des images personnalisées, vous pouvez les partager avec des utilisateurs issus d'autres projets de l'organisation.

Compute Engine prédéfinit les rôles IAM organisés suivants que vous pouvez utiliser pour la gestion des images :

  • roles/compute.imageUser : permet de répertorier, lire et utiliser des images dans vos requêtes sans disposer d'autres autorisations sur celles-ci.
  • roles/compute.storageAdmin : permet de créer, modifier et supprimer des disques, des images et des instantanés.

Vous pouvez également créer votre propre rôle IAM personnalisé.

Nous vous recommandons de conserver toutes vos images personnalisées dans un projet unique dédié à l'hébergement de ces images, et uniquement de ces images. Cela permet d'améliorer la gestion de ces images et de restreindre l'accès des équipes uniquement aux images dont elles ont besoin. Vous pouvez également autoriser des équipes à accéder à l'intégralité du projet d'images. Toutefois, comme l'accès d'une équipe à l'ensemble du projet d'images enfreint le principe du moindre privilège, nous vous déconseillons de procéder ainsi.

L'exemple ci-dessous montre comment ajouter un groupe afin que les utilisateurs de ce groupe aient accès à l'image.

Console

  1. Dans Google Cloud Console, accédez à la page Images.

    Accéder à la page Images

  2. Sélectionnez l'image que vous souhaitez partager avec d'autres utilisateurs.

  3. À droite, dans le panneau Autorisations, cliquez sur Ajouter des membres.

  4. Saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image. Doit être au format user|group|serviceAccount:email ou domain:domain. Exemple :

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  5. Dans la liste Rôle, pointez sur Compute Engine et sélectionnez Utilisateur d'images ou Administrateur de l'espace de stockage, ou bien sélectionnez un rôle personnalisé.

  6. Enregistrez les modifications.

Pour permettre aux utilisateurs de lancer des images personnalisées partagées à partir de Cloud Console, vous devez également les ajouter au projet d'images en tant que lecteurs du projet. Cela permet de garantir que les images partagées apparaissent dans la liste de sélection d'images.

  1. Dans Google Cloud Console, accédez à la page IAM et administration :

    Accéder à la page IAM et administration

  2. En haut de la page, cliquez sur le bouton AJOUTER.

  3. Dans le champ Nouveaux membres, saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image.

  4. Dans la liste Rôle, pointez sur Projet et sélectionnez Lecteur.

  5. Enregistrez les modifications.

gcloud

À l'aide de l'outil de ligne de commande gcloud, mettez à jour les stratégies IAM relatives à une image spécifique.

gcloud compute images add-iam-policy-binding image-name \
    --member='member' \
    --role='role'

Remplacez les éléments suivants :

  • image-name : nom de l'image. Par exemple, custom-centos-8.
  • 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 correspond au rôle à attribuer à cette identité, par exemple roles/compute.imageUser, roles/compute.storageAdmin ou un rôle personnalisé.

Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes images.list, vous pouvez également ajouter les utilisateurs en tant que lecteurs au projet d'images. Si vos utilisateurs n'ont pas besoin de pouvoir afficher la liste des images partagées, vous pouvez ignorer cette étape.

gcloud compute projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/viewer'

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.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

    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 utilisateurs et les rôles qui leur sont associés. Ajoutez des utilisateurs 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, ou domain:example.domain.com. Par exemple, pour accorder le rôle roles/compute.imageUser à email@example.com, ajoutez les éléments suivants :

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

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

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

Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes images.list, vous pouvez également ajouter les utilisateurs en tant que lecteurs au projet d'images. Si vos utilisateurs n'ont pas besoin de pouvoir afficher la liste des images partagées, vous pouvez ignorer cette étape.

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Partager des images personnalisées entre organisations

La création d'un catalogue d'images personnalisées peut être utile pour partager des images avec des partenaires, des utilisateurs ou des sous-traitants qui ne font pas partie de votre organisation. Suivez les instructions fournies ici pour partager vos images avec des utilisateurs extérieurs à l'organisation en les ajoutant à votre projet en tant qu'utilisateurs d'images.

Console

  1. Dans Google Cloud Console, accédez à la page Images.

    Accéder à la page Images

  2. Sélectionnez l'image que vous souhaitez partager avec d'autres utilisateurs.

  3. À droite, dans le panneau Autorisations, cliquez sur Ajouter des membres.

  4. Saisissez l'adresse e-mail du groupe avec lequel vous souhaitez partager l'image. Par exemple, group:admins@example.com.

  5. Dans la liste Rôle, pointez sur Compute Engine et sélectionnez Utilisateur d'images.

  6. Enregistrez les modifications.

Pour permettre aux utilisateurs de lancer des images personnalisées partagées à partir de Cloud Console, vous devez également les ajouter au projet d'images en tant que lecteurs du projet. Cela permet de garantir que les images partagées apparaissent dans la liste de sélection d'images.

  1. Dans Google Cloud Console, accédez à la page IAM et administration :

    Accéder à la page IAM et administration

  2. En haut de la page, cliquez sur le bouton Ajouter.

  3. Dans le champ Nouveaux membres, saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image.

  4. Dans la liste Rôle, pointez sur Projet et sélectionnez Lecteur.

  5. Enregistrez les modifications.

gcloud

Utilisez l'outil de ligne de commande gcloud :

gcloud compute images add-iam-policy-binding image-name \
    --member='member' \
    --role='roles/compute.imageUser'

Remplacez les éléments suivants :

  • image-name : nom de l'image. Par exemple, custom-centos-8.
  • member : identité valide à laquelle vous souhaitez accorder le rôle. Exemple :group:admins@example.com

Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes images.list, vous pouvez également ajouter les utilisateurs en tant que lecteurs au projet d'images. Si vos utilisateurs n'ont pas besoin de pouvoir afficher la liste des images partagées, vous pouvez ignorer cette étape.

gcloud compute projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/viewer'

API

Pour modifier les stratégies IAM d'une image 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.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

    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 utilisateurs et les rôles qui leur sont associés. Ajoutez des utilisateurs 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, ou domain:example.domain.com. Par exemple, pour accorder le rôle roles/compute.imageUser à "email@example.com", ajoutez les éléments suivants :

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

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

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

    Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes images.list, vous pouvez également ajouter les utilisateurs en tant que lecteurs au projet d'images. Si vos utilisateurs n'ont pas besoin de pouvoir afficher la liste des images partagées, vous pouvez ignorer cette étape.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Partager des images personnalisées en mode public

Vous pouvez partager vos images personnalisées avec tous les utilisateurs de Compute Engine authentifiés, indépendamment de leur appartenance à votre organisation ou à votre projet.

Le partage avec l'ensemble des utilisateurs authentifiés ne peut porter que sur des ressources, telles que des images. Il ne peut pas s'appliquer à des projets ou des organisations. Cette restriction, ainsi que la hiérarchisation des ressources, permettent d'éviter qu'une organisation partage involontairement l'intégralité d'un de ses projets avec tous les utilisateurs de Compute Engine authentifiés.

L'exemple suivant montre comment attribuer à tous les utilisateurs de Compute Engine authentifiés le rôle roles/compute.imageUser sur une image personnalisée.

gcloud

Dans la commande suivante, remplacez image-name par le nom de la ressource, par exemple, my_image :

gcloud compute images add-iam-policy-binding image-name \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

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. Exemple :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

    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.

    {
      "members": [
        "allAuthenticatedUsers"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Écrivez la stratégie mise à jour avec setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

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

Accorder l'accès aux images à un groupe d'instances géré

Compute Engine vous permet de créer des groupes d'instances gérés ou non gérés. Si vous créez un groupe d'instances géré, Compute Engine utilise le compte de service des API Google pour appeler l'API Compute Engine et effectuer les actions sur le groupe, telles que la recréation d'instances non opérationnelles et la mise à jour d'instances.

Si vous souhaitez créer un groupe d'instances géré à l'aide d'une image appartenant à un autre projet, attribuez le rôle roles/compute.imageUser au compte de service des API associé au projet chargé de créer le groupe d'instances géré. Exemple :

  1. Le projet A souhaite créer un groupe d'instances géré à l'aide d'images appartenant au projet B.
  2. Le projet B accorde au compte de service du projet A le rôle roles/compute.imageUser.
  3. Le projet A peut désormais utiliser les images du projet B pour créer des groupes d'instances gérés.

Une fois que vous avez accordé le rôle roles/compute.imageUser, vous pouvez accéder à l'image depuis d'autres projets, en utilisant la console ou l'URL de l'image lorsque vous créez le modèle d'instance pour le groupe géré.

Récupérer l'adresse e-mail du compte de service

Pour obtenir l'adresse e-mail d'un compte de service, procédez comme suit :

  1. Dans Cloud Console, accédez à la page IAM du projet associé au compte de service auquel vous souhaitez accorder l'accès.

    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. Notez l'adresse e-mail ci-dessus.

Une fois que vous avez récupéré l'adresse e-mail du compte de service, cliquez sur l'un des liens suivants :

Accorder à un groupe d'instances géré l'accès à toutes les images d'un projet

Maintenant que vous disposez de l'adresse e-mail d'un compte de service, vous pouvez l'ajouter à un autre projet et lui accorder le rôle roles/compute.imageUser.

Console

  1. Dans Google Cloud Console, accédez à la page IAM et administration du projet d'images.

    Accéder à la page IAM et administration

  2. Pour ajouter un nouveau membre, cliquez sur Ajouter.

  3. Dans le champ Nouveaux membres, saisissez l'adresse e-mail du compte de service.

  4. Dans la liste Rôle, pointez sur Compute et sélectionnez Utilisateur d'images Compute.

  5. Cliquez sur Save.

  6. Revenez au projet associé au compte de service.

Vous pouvez maintenant créer un modèle d'instance basé sur une image du projet d'images, puis créer un groupe d'instances géré basé sur le modèle d'instance.

gcloud

Ajoutez un compte de service à partir du projet d'images :

gcloud projects add-iam-policy-binding project-id \
  --member 'serviceAccount:service-account-email' --role 'roles/compute.imageUser'

Remplacez les éléments suivants :

  • project-id : ID du projet contenant les images que vous souhaitez partager.
  • service-account-email : adresse e-mail du compte de service.

Vous pouvez maintenant créer un modèle d'instance basé sur une image du projet d'images, puis créer un groupe d'instances géré basé sur le modèle d'instance.

API

  1. Récupérez la stratégie IAM du projet d'images en remplaçant project-id par l'ID du projet d'images.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

  2. Modifiez la stratégie à l'aide d'un éditeur de texte pour accorder au compte de service le rôle roles/compute.imageUser. Exemple :

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:service-account-email"
          ]
        }
      ]
    }
    

    Remplacez service-account-email par l'adresse e-mail du compte de service.

  3. Écrivez la stratégie mise à jour :

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    Remplacez project-id par l'ID du projet d'images. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.

    Vous pouvez maintenant créer un modèle d'instance basé sur une image du projet d'images, puis créer un groupe d'instances géré basé sur le modèle d'instance.

Accorder à un groupe d'instances géré l'accès à des images spécifiques d'un projet

Maintenant que vous disposez de l'adresse e-mail d'un compte de service, vous pouvez l'ajouter à un autre projet et lui accorder le rôle roles/compute.imageUser pour certaines images.

Console

  1. Dans Google Cloud Console, accédez à la page Images du projet d'images.

    Accéder à la page Images

  2. Sélectionnez l'image que vous souhaitez partager.

  3. Dans le panneau Autorisations, cliquez sur Ajouter des membres.

  4. Saisissez l'adresse e-mail du compte de service.

  5. Dans la liste Rôle, sélectionnez Compute, puis Utilisateur d'images Compute.

  6. Cliquez sur Save.

  7. Revenez au projet associé au compte de service.

Vous pouvez maintenant créer un modèle d'instance basé sur une image du projet d'images, puis créer un groupe d'instances géré basé sur le modèle d'instance.

gcloud

Pour autoriser un compte de service à accéder à une image spécifique, procédez comme suit :

gcloud images add-iam-policy-binding image-name \
  --member 'serviceAccount:service-account-email' \
  --role 'roles/compute.imageUser'

Remplacez les éléments suivants :

  • image-name : nom de l'image que vous souhaitez partager.
  • service-account-email : adresse e-mail du compte de service.

Vous pouvez maintenant créer un modèle d'instance basé sur une image du projet d'images, puis créer un groupe d'instances géré basé sur le modèle d'instance.

API

  1. Obtenez la stratégie IAM associée à une image.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet d'images.
    • image-name : nom de l'image que vous souhaitez partager.
  2. Modifiez la stratégie à l'aide d'un éditeur de texte pour accorder au compte de service le rôle roles/compute.imageUser. Exemple :

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:service-account-email"
          ]
        }
      ]
    }
    

    Remplacez service-account-email par l'adresse e-mail du compte de service.

  3. Écrivez la stratégie mise à jour :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet d'images.
    • image-name : nom de l'image que vous souhaitez partager.

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

    Vous pouvez maintenant créer un modèle d'instance basé sur une image du projet d'images, puis créer un groupe d'instances géré basé sur le modèle d'instance.

Restreindre l'utilisation de vos images et instantanés partagés

Après avoir partagé vos images avec d'autres utilisateurs, vous pouvez contrôler les emplacements, au sein de votre organisation, où vos ressources sont utilisées. Définissez la contrainte constraints/compute.storageResourceUseRestrictions pour déterminer les projets dans lesquels les utilisateurs sont autorisés à exploiter vos ressources de stockage.

Vous devez être autorisé à modifier les stratégies de votre organisation pour définir ces contraintes. Par exemple, le rôle resourcemanager.organizationAdmin est autorisé à définir ces contraintes.

  1. Recherchez l'ID de votre organisation.

    gcloud organizations list
    
  2. Obtenez les paramètres de stratégie existants de votre organisation. Remplacez organization-id par votre ID d'organisation numérique à 12 chiffres.

    gcloud beta resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization organization-id > org-policy.yaml
    
  3. Ouvrez le fichier org-policy.yaml dans un éditeur de texte, puis modifiez la contrainte compute.storageResourceUseRestrictions. Ajoutez les restrictions dont vous avez besoin ou supprimez celles qui ne vous sont pas nécessaires. Lorsque vous avez terminé de modifier le fichier, enregistrez vos modifications. Par exemple, vous pouvez définir l'entrée de contrainte suivante dans votre fichier de règles :

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/organization-id
    
  4. Appliquez le fichier policy.yaml à votre organisation. Remplacez organization-id par votre ID d'organisation numérique à 12 chiffres.

    gcloud beta resource-manager org-policies set-policy \
        --organization organization-id org-policy.yaml
    

Lorsque vous avez terminé de configurer les contraintes de votre stratégie d'organisation, testez-les pour vous assurer qu'elles créent les restrictions nécessaires.

Utiliser des images d'un autre projet

Si quelqu'un vous a accordé l'accès à une ou plusieurs images hébergées dans un autre projet, vous pouvez accéder à celles-ci en spécifiant le projet d'images dans vos requêtes.

Pour apprendre à créer des ressources à partir d'une image, comme une instance, consultez la page Créer et démarrer une instance.

Par exemple, la commande suivante permet de créer une instance à l'aide d'une image appelée database-image-a appartenant au projet database-images :

gcloud compute instances create test-instance \
    --image database-image-a --image-project database-images

Vous pouvez également créer des disques persistants de démarrage basés sur les images d'un autre projet. Pour en savoir plus sur la création d'un disque de démarrage à partir d'une image, consultez la section Créer un disque persistant de démarrage autonome.

Révoquer l'accès aux images partagées

Lorsqu'un utilisateur n'a plus besoin d'accéder à vos ressources Compute Engine, révoquez son accès à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud ou de l'API Compute Engine.

Console

  1. Dans Google Cloud Console, accédez à la page Images du projet d'images.

    Accéder à la page Images

  2. Cochez les cases figurant à côté des images que vous souhaitez mettre à jour.

  3. Cliquez sur Afficher le panneau d'informations pour développer la colonne des autorisations.

  4. Développez le rôle au sein duquel vous souhaitez supprimer des utilisateurs.

  5. Cliquez sur Supprimer  pour retirer un membre de ce rôle.

gcloud

Pour supprimer un utilisateur d'un rôle appliqué à une image, utilisez la sous-commande remove-iam-policy-binding avec les options --member et --role.

gcloud compute images remove-iam-policy-binding image-name \
    --member='member' \
    --role='role'

Remplacez les éléments suivants :

  • image-name : nom de l'image. Exemple : my_image.
  • 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 dans lequel 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.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

    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.

  3. Écrivez la stratégie mise à jour avec setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/global/images/image-name:setIamPolicy

    Remplacez les éléments suivants :

    • project-id : ID du projet auquel appartient cette image.
    • image-name : nom de l'image.

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

Étapes suivantes