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. Ce document décrit les autorisations IAM requises pour créer et gérer des images personnalisées. Il explique également comment les accorder aux utilisateurs.
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
- Si vous souhaitez utiliser les exemples de ligne de commande de ce guide, procédez comme suit :
- Installez la dernière version de Google Cloud CLI ou appliquez la mise à jour correspondante.
- Définissez une région et une zone par défaut.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
- Consultez la documentation IAM.
- Découvrez les rôles IAM de Compute Engine, en particulier le rôle Utilisateur d'images Compute (
roles/compute.imageUser
).
Limites
Sur les images, vous ne pouvez pas attribuer de rôles au type de membre spécial allUsers
.
Accorder l'autorisation 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 (roles/compute.storageAdmin
). 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 :
compute.images.create
pour la création d'imagescompute.images.list
pour répertorier les images existant dans le projetcompute.disks.use
si l'image est créée à partir d'un disquecompute.disks.list
si les utilisateurs doivent répertorier tous les disques d'un 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
Dans Google Cloud Console, accédez à la page IAM du projet ou de l'organisation.
Pour ajouter un nouveau membre, cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'identité à laquelle vous souhaitez accorder l'accès.
Exemple :
- Adresse e-mail du compte Google :
test-user@gmail.com
- Groupe Google :
admins@googlegroups.com
- Compte de service :
server@example.gserviceaccount.com
- Domaine Google Workspace :
example.com
- Adresse e-mail du compte Google :
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.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
gcloud
Pour accorder le rôle roles/compute.storageAdmin
au niveau de l'organisation, utilisez la commande gcloud organizations add-iam-policy-binding
:
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, utilisez la commande gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/compute.storageAdmin'
Remplacez les éléments suivants :
ORGANIZATION_ID
ouPROJECT_ID
: ID de l'organisation ou du projet, par exemplemy-organization-1
oumy-project-1
.MEMBER
: identité valide à laquelle vous souhaitez accorder le rôle.Exemple :
- Adresse e-mail du compte Google :
user:user@gmail.com
- Groupe Google :
group:admins@googlegroups.com
- Compte de service :
serviceAccount:server@example.gserviceaccount.com
- Domaine Google Workspace :
domain:example.com
- Adresse e-mail du compte Google :
API
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
de la ressource. Pour les projets, utilisez la méthodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet, par exemplemy-project-1
.Pour les organisations, utilisez la méthode
organizations.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
Remplacez
ORGANIZATION_ID
par l'ID de votre organisation, par exemple123456578920
.Compute Engine affiche la stratégie actuelle dans la réponse.
Pour ajouter ou supprimer des membres et les rôles qui leur sont associés, modifiez la stratégie à l'aide d'un éditeur de texte. Utilisez le format suivant pour ajouter des membres :
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Par exemple, pour accorder le rôle
roles/compute.storageAdmin
àgroup:admins@example.com
, ajoutez la liaison suivante à la stratégie :{ "members": [ "group:admins@example.com" ], "role":"roles/compute.storageAdmin" }
Écrivez la stratégie mise à jour à l'aide de la méthode
setIamPolicy
.Par exemple, pour définir une stratégie au niveau du projet, utilisez la méthode
project.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet.
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 (roles/compute.storageAdmin
). 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 :
compute.images.delete
pour la suppression d'imagescompute.images.list
si les utilisateurs doivent répertorier les images dans le projet ou l'organisationcompute.images.get
pour obtenir les images
Console
Pour autoriser la suppression d'images spécifiques, procédez comme suit :
Dans la console Google Cloud, accédez à la page Images.
Sélectionnez les images sur lesquelles vous souhaitez accorder des autorisations.
Pour développer la colonne des autorisations, cliquez sur Afficher le panneau d'informations.
Pour ajouter un ou plusieurs membres, cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image.
Exemple :
- Adresse e-mail du compte Google :
test-user@gmail.com
- Groupe Google :
admins@googlegroups.com
- Compte de service :
server@example.gserviceaccount.com
- Domaine Google Workspace :
example.com
- Adresse e-mail du compte Google :
Dans la liste Rôles, placez le pointeur sur Compute Engine et sélectionnez Administrateur Storage ou sélectionnez un rôle personnalisé dans la liste Custom (Personnalisé).
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
Pour accorder l'autorisation de supprimer des images au niveau d'un projet ou d'une organisation, procédez comme suit :
Accédez à la page IAM du projet ou de l'organisation.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'identité à laquelle vous souhaitez accorder l'accès. Exemple :
- Adresse e-mail du compte Google :
test-user@gmail.com
- Groupe Google :
admins@googlegroups.com
- Compte de service :
server@example.gserviceaccount.com
- Domaine Google Workspace :
example.com
- Adresse e-mail du compte Google :
Dans la liste Rôles, placez le pointeur sur Compute Engine et sélectionnez Administrateur Storage ou sélectionnez un rôle personnalisé dans la liste Custom (Personnalisé).
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
gcloud
Pour autoriser les utilisateurs à supprimer des images au niveau de l'organisation, utilisez la commande gcloud organizations add-iam-policy-binding
:
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member='MEMBER' \ --role='ROLE'
Pour autoriser les utilisateurs à supprimer des images au niveau d'un projet, utilisez la commande gcloud
projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='ROLE'
Pour autoriser les utilisateurs à supprimer une image spécifique, utilisez la commande gcloud compute
images add-iam-policy-binding
:
gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
Remplacez les éléments suivants :
ORGANIZATION_ID
ouPROJECT_ID
ouIMAGE_NAME
: ID d'organisation numérique à 12 chiffres, ID de projet ou nom d'image, par exemple123456578920
,my-project-1
oumy-custom-image
.MEMBER
: identité valide à laquelle vous souhaitez accorder le rôle.Exemple :
- Adresse e-mail du compte Google :
user:user@gmail.com
- Groupe Google :
group:admins@googlegroups.com
- Compte de service :
serviceAccount:server@example.gserviceaccount.com
- Domaine Google Workspace :
domain:example.com
- Adresse e-mail du compte Google :
ROLE
: rôle à attribuer à cette identité, par exemple le rôleroles/compute.storageAdmin
ou un rôle personnalisé tel queroles/customImageDeletionRole
API
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
correspondante de la ressource. Pour les projets, utilisez la méthodeprojects.getIamPolicy
:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet.Pour les organisations, utilisez la méthode
organizations.getIamPolicy
: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 la méthode
images.getIamPolicy
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
Remplacez les éléments suivants :
PROJECT_ID
: ID du projetIMAGE_NAME
: nom de l'image.
Compute Engine affiche la stratégie actuelle dans la réponse.
Pour ajouter ou supprimer des membres et les rôles qui leur sont associés, vous pouvez modifier la stratégie à l'aide d'un éditeur de texte. Utilisez le format suivant pour ajouter des membres :
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Par exemple, pour accorder le rôle
roles/compute.storageAdmin
àuser:test-email@example.com
, ajoutez la liaison suivante à la stratégie :{ "members": [ "user:test-email@example.com" ], "role":"roles/compute.storageAdmin" }
Écrivez la stratégie mise à jour à l'aide de la méthode
setIamPolicy
.Par exemple, pour définir une stratégie au niveau d'un projet, utilisez la méthode
project.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet.
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 offre les rôles IAM prédéfinis suivants que vous pouvez utiliser pour la gestion des images :
- Utilisateur d'images Compute (
roles/compute.imageUser
) : autorisation de répertorier, lire et utiliser des images dans vos requêtes sans disposer d'autres autorisations sur celles-ci - Administrateur Compute Storage (
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é.
Il est recommandé de conserver toutes vos images personnalisées dans un projet unique dédié à l'hébergement 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
Dans la console Google Cloud, accédez à la page Images.
Sélectionnez l'image que vous souhaitez partager avec d'autres utilisateurs.
Pour développer la colonne des autorisations, cliquez sur Afficher le panneau d'informations.
Pour ajouter un ou plusieurs membres, cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image.
Exemple :
- Adresse e-mail du compte Google :
test-user@gmail.com
- Groupe Google :
admins@googlegroups.com
- Compte de service :
server@example.gserviceaccount.com
- Domaine Google Workspace :
example.com
- Adresse e-mail du compte Google :
Dans la liste Rôle, maintenez le pointeur sur Compute Engine et sélectionnez Utilisateur d'images ou Administrateur de l'espace de stockage, ou sélectionnez un rôle personnalisé.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
Pour permettre aux utilisateurs de lancer des images personnalisées partagées à partir de la console Google Cloud, accordez-leur le rôle IAM de lecteur (roles/viewer
) pour le projet d'images. L'attribution de ce rôle permet de garantir que les images partagées apparaissent dans la liste de sélection d'images.
Dans la console Google Cloud, accédez à la page IAM.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image. Exemple :
- Adresse e-mail du compte Google :
test-user@gmail.com
- Groupe Google :
admins@googlegroups.com
- Compte de service :
server@example.gserviceaccount.com
- Domaine Google Workspace :
example.com
- Adresse e-mail du compte Google :
Dans la liste Rôle, maintenez le pointeur sur Projet et sélectionnez Lecteur.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
gcloud
Pour mettre à jour la stratégie IAM pour une image spécifique, utilisez la commande gcloud compute images add-iam-policy-binding
:
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 exemplecustom-centos-8
MEMBER
: identité valide à laquelle vous souhaitez accorder le rôleExemple :
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: rôle auquel attribuer cette identité, par exempleroles/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 leur accorder le rôle IAM de lecteur (roles/viewer
) pour le projet d'images à l'aide de la commande gcloud projects add-iam-policy-binding
. Si vos utilisateurs n'ont pas besoin de pouvoir afficher la liste des images partagées, vous pouvez ignorer cette étape.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
API
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
de la ressource. Par exemple, pour obtenir la stratégie sur une image spécifique, utilisez la méthodeimages.getIamPolicy
: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.
Pour ajouter ou supprimer des membres et les rôles qui leur sont associés, modifiez la stratégie à l'aide d'un éditeur de texte. Utilisez le format suivant pour ajouter des membres :
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Par exemple, pour accorder
roles/compute.imageUser
àtest-email@example.com
, ajoutez la liaison suivante à la stratégie :{ "members": [ "user:test-email@example.com" ], "role":"roles/compute.imageUser" }
Écrivez la stratégie mise à jour à l'aide de la méthode
setIamPolicy
. Par exemple, pour définir une stratégie sur une image spécifique, utilisez la méthodeproject.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.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.
Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes images.list
, vous pouvez également leur accorder le rôle IAM de lecteur (roles/viewer
) pour le projet d'images à l'aide de la méthode projects.setIamPolicy
.
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. Pour partager vos images avec des utilisateurs extérieurs à l'organisation, ajoutez-les à votre projet en tant qu'utilisateurs d'images :
Console
Dans la console Google Cloud, accédez à la page Images.
Sélectionnez l'image que vous souhaitez partager avec d'autres utilisateurs.
Pour développer la colonne des autorisations, cliquez sur Afficher le panneau d'informations.
Pour ajouter un ou plusieurs membres, cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du groupe avec lequel vous souhaitez partager l'image. Exemple :
admins@example.com
Dans la liste Rôle, maintenez le curseur sur Compute Engine, puis sélectionnez Utilisateur d'images Compute.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
Pour permettre aux utilisateurs de lancer des images personnalisées partagées à partir de la console Google Cloud, accordez-leur le rôle IAM de lecteur (roles/viewer
) pour le projet d'images. L'attribution de ce rôle permet de garantir que les images partagées apparaissent dans la liste de sélection d'images.
Dans la console Google Cloud, accédez à la page IAM.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'identité avec laquelle vous souhaitez partager l'image. Exemple :
admins@example.com
Dans la liste Rôle, maintenez le pointeur sur Projet et sélectionnez Lecteur.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Enregistrez les modifications.
gcloud
Pour accorder le rôle roles/compute.imageUser
aux utilisateurs, utilisez la commande gcloud
compute images add-iam-policy-binding
:
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 exemplecustom-centos-8
MEMBER
: identité valide à laquelle vous souhaitez accorder le rôle (par exemple,group:admins@example.com
)
Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes images.list
, vous pouvez également leur accorder le rôle IAM de lecteur (roles/viewer
) pour le projet d'images à l'aide de la commande gcloud projects add-iam-policy-binding
. Si vos utilisateurs n'ont pas besoin de pouvoir afficher la liste des images partagées, vous pouvez ignorer cette étape.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
API
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
de la ressource. Par exemple, pour obtenir la stratégie sur une image spécifique, utilisez la méthodeimages.getIamPolicy
: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.
Pour ajouter ou supprimer des membres et les rôles qui leur sont associés, vous pouvez modifier la stratégie à l'aide d'un éditeur de texte. Utilisez le format suivant pour ajouter des membres :
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Par exemple, pour accorder
roles/compute.imageUser
àtest-user@example.com
, ajoutez la liaison suivante à la stratégie :{ "members": [ "user:test-user@example.com" ], "role":"roles/compute.imageUser" }
Écrivez la stratégie mise à jour à l'aide de la méthode
setIamPolicy
. Par exemple, pour définir une stratégie sur une image spécifique, utilisez la méthodeimages.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.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.
Pour permettre aux utilisateurs de voir ces images partagées dans leurs requêtes
images.list
, vous pouvez également leur accorder le rôle IAM de lecteur (roles/viewer
) pour le projet d'images à l'aide de la méthodeprojects.setIamPolicy
. 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 d'utilisateur d'image Compute (roles/compute.imageUser
) sur une image personnalisée.
gcloud
Pour rendre les images publiques, utilisez la commande gcloud compute images add-iam-policy-binding
:
gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='allAuthenticatedUsers' \ --role='roles/compute.imageUser'
Remplacez IMAGE_NAME
par le nom de la ressource (par exemple, my_image
).
API
Lisez la stratégie existante à l'aide de la méthode
getIamPolicy
. Par exemple, pour obtenir la stratégie sur une image spécifique, utilisez la méthodeimages.getIamPolicy
: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.
Pour ajouter ou supprimer des membres et les rôles qui leur sont associés, modifiez la stratégie à l'aide d'un éditeur de texte :
{ "members": [ "allAuthenticatedUsers" ], "role":"roles/compute.imageUser" }
Écrivez la stratégie mise à jour à l'aide de la méthode
setIamPolicy
. Par exemple, pour définir une stratégie sur une image spécifique, utilisez la méthodeimages.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.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.
Accorder l'accès aux images à un groupe d'instances géré
Compute Engine vous permet de créer des groupes de VM gérés ou non gérés. Si vous créez un groupe d'instances géré (MIG), Compute Engine utilise l'agent de service des API Google pour appeler l'API Compute Engine et effectuer les actions sur le groupe, telles que la recréation de VM non opérationnelles et la mise à jour de VM.
Si vous souhaitez créer un MIG à l'aide d'une image appartenant à un autre projet, attribuez le rôle Utilisateur d'images Compute (roles/compute.imageUser
) au compte de service des API associé au projet qui crée le MIG. Exemple :
- Le projet A souhaite créer un groupe d'instances géré (MIG) à l'aide d'images appartenant au projet B.
- Le projet B accorde au compte de service du projet A le rôle d'utilisateur d'images Compute.
- Le projet A peut désormais utiliser les images du projet B pour créer des MIG.
Une fois que vous avez accordé le rôle Utilisateur d'images Compute, 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 associée au compte de service
Dans la console Google Cloud, accédez à la page IAM du projet associé au compte de service auquel vous souhaitez accorder l'accès.
Si vous y êtes invité, sélectionnez votre projet dans la liste.
Recherchez l'agent de service des API Google, dont l'adresse e-mail est au format suivant :
PROJECT_NUMBER@cloudservices.gserviceaccount.com
Après avoir récupéré l'adresse e-mail du compte de service, vous pouvez accéder à l'une des sections suivantes :
- Accorder à un groupe d'instances géré l'accès à toutes les images d'un projet
- Accorder à un groupe d'instances géré l'accès à des images spécifiques d'un projet
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 Utilisateur d'images Compute (roles/compute.imageUser
).
Console
Dans Google Cloud Console, accédez à la page IAM du projet d'images.
Pour ajouter un nouveau membre, cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte de service.
Dans la liste Rôle, maintenez le curseur sur Compute, puis sélectionnez Utilisateur d'images Compute.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Cliquez sur Enregistrer.
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 à l'aide de la commande gcloud projects
add-iam-policy-binding
:
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
Obtenez la stratégie IAM du projet d'images à l'aide de la méthode
projects.getIamPolicy
:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet d'images.Pour accorder le rôle
roles/compute.imageUser
au compte de service, modifiez la stratégie à l'aide d'un éditeur de texte :{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
Remplacez
SERVICE_ACCOUNT_EMAIL
par l'adresse e-mail du compte de service.Écrivez la stratégie mise à jour à l'aide de
projects.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Remplacez
PROJECT_ID
par l'ID du projet d'images.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 associée à un compte de service, vous pouvez l'ajouter à un autre projet et accorder le rôle d'utilisateur d'images Compute (roles/compute.imageUser
) pour certaines images.
Console
Dans la console Google Cloud, accédez à la page Images du projet d'images.
Cochez les cases figurant à côté des images que vous souhaitez partager.
Pour développer la colonne des autorisations, cliquez sur Afficher le panneau d'informations.
Dans le panneau Autorisations, cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte de service avec lequel vous souhaitez partager l'image. Exemple :
test123@example.domain.com
Dans la liste Rôle, sélectionnez Compute, puis Utilisateur d'images Compute.
Facultatif : Pour contrôler davantage l'accès des utilisateurs aux ressources Google Cloud, ajoutez une liaison de rôle conditionnelle.
Cliquez sur Enregistrer.
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, utilisez la commande gcloud compute images add-iam-policy-binding
:
gcloud compute 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
Obtenez la stratégie IAM d'une image à l'aide de la méthode
images.getIamPolicy
: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.
Pour accorder le rôle
roles/compute.imageUser
au compte de service, modifiez la stratégie à l'aide d'un éditeur de texte :{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
Remplacez
SERVICE_ACCOUNT_EMAIL
par l'adresse e-mail du compte de service.Écrivez la stratégie mise à jour à l'aide de la méthode
images.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.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.
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.
Contrôler l'utilisation des 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.
Recherchez l'ID de votre organisation à l'aide de la commande
gcloud organization list
:gcloud organizations list
Obtenez les paramètres des règles définies pour votre organisation à l'aide de la commande
gcloud resource-manager org-policies describe
:gcloud resource-manager org-policies describe \ compute.storageResourceUseRestrictions \ --organization ORGANIZATION_ID > org-policy.yaml
Remplacez ORGANIZATION_ID par votre ID d'organisation numérique à 12 chiffres.
Ouvrez le fichier
org-policy.yaml
dans un éditeur de texte, puis modifiez la contraintecompute.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
Appliquez le fichier
org-policy.yaml
à votre organisation à l'aide de la commandegcloud resource-manager org-policies set-policy
:gcloud resource-manager org-policies set-policy \ --organization=ORGANIZATION_ID org-policy.yaml
Remplacez ORGANIZATION_ID par votre ID d'organisation numérique à 12 chiffres.
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 que vous souhaitez.
Utiliser les images d'un autre projet
Si quelqu'un vous accorde 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.
Par exemple, pour créer une VM à l'aide d'une image partagée d'un autre projet, procédez comme suit :
Console
Accédez à la page Créer une instance dans Google Cloud Console.
- Spécifiez un nom pour votre VM. Pour en savoir plus, consultez Recommandation pour l'attribution de noms aux ressources.
- Facultatif : modifiez la zone de cette VM. Compute Engine choisit de manière aléatoire la liste des zones de chaque région pour encourager l'utilisation dans plusieurs zones.
- Sélectionnez une configuration de machine pour votre VM.
- Dans la section Disque de démarrage, cliquez sur Modifier pour configurer le disque de démarrage, puis procédez comme suit :
- Sélectionnez l'onglet Images personnalisées.
- Pour sélectionner le projet d'image, cliquez sur Sélectionner un projet, puis procédez comme suit :
- Sélectionnez le projet contenant l'image.
- Cliquez sur Ouvrir.
- Dans la liste Image, cliquez sur l'image que vous souhaitez importer.
- Sélectionnez le type et la taille de votre disque de démarrage.
- Cliquez sur Sélectionner pour confirmer vos options de disque de démarrage.
Dans la section Pare-feu, pour autoriser le trafic HTTP ou HTTPS vers la VM, sélectionnez Autoriser le trafic HTTP ou Autoriser le trafic HTTPS.
La console Google Cloud ajoute un tag réseau à votre instance et crée la règle de pare-feu d'entrée correspondante, qui autorise l'intégralité du trafic entrant sur le port
tcp:80
(HTTP) outcp:443
(HTTPS). Le tag réseau associe la règle de pare-feu à la VM. Pour en savoir plus, consultez la page Présentation des règles de pare-feu dans la documentation sur le cloud privé virtuel.- Pour démarrer et créer une VM, cliquez sur Créer.
gcloud
Créez une VM à l'aide de la commande gcloud compute instances create command
, et utilisez les options --image
et --image-project
pour spécifier le nom de l'image et le projet où se trouve l'image :
gcloud compute instances create VM_NAME \ --image=IMAGE \ --image-project=IMAGE_PROJECT
Remplacez l'élément suivant :
VM_NAME
: nom de la nouvelle VM.IMAGE
: nom de l'imageIMAGE_PROJECT
: projet auquel appartient l'image.
Si la commande réussit, gcloud
envoie une réponse contenant les propriétés de la nouvelle VM :
Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b/instances/example-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS example-instance us-central1-b e2-standard-2 10.240.0.4 104.198.53.60 RUNNING
API
Le processus de création d'une VM avec une image partagée dans l'API est identique à celui consistant à créer une VM à partir d'une image accessible publiquement.
Pour créer la VM à partir d'une image partagée, utilisez la méthode instances.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE
/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME
", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME" } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel créer la VMZONE
: zone dans laquelle créer la VMMACHINE_TYPE_ZONE
: zone contenant le type de machine à utiliser pour la nouvelle VMMACHINE_TYPE
: type de machine prédéfini ou personnalisé pour la nouvelle VMVM_NAME
: nom de la nouvelle VM.IMAGE_PROJECT
: nom du projet contenant l'image partagée.IMAGE
ouIMAGE_FAMILY
: spécifiez l'un des éléments suivants :IMAGE
: nom de l'image partagée. Exemple :"sourceImage": "projects/finance-project-1234/global/images/finance-debian-image-v2"
.IMAGE_FAMILY
: si l'image partagée est créée dans le cadre d'une famille d'images personnalisées, spécifiez cette famille.Cette action crée la VM à partir de l'image d'OS la plus récente et non obsolète de votre famille d'images personnalisée. Par exemple, si vous spécifiez
"sourceImage": "projects/finance-project-1234/global/images/family/finance-debian-family"
, Compute Engine crée une VM à partir de la dernière version de l'image de l'OS dans la famille d'imagesfinance-debian-family
personnalisées.
NETWORK_NAME
: réseau VPC que vous souhaitez utiliser pour la VM. Vous pouvez spécifierdefault
pour utiliser votre réseau par défaut.ENABLE_SECURE_BOOT
: facultatif : si vous avez choisi une image compatible avec les fonctionnalités de VM protégée, Compute Engine active par défaut le module vTPM et la surveillance de l'intégrité. Compute Engine n'active pas le démarrage sécurisé par défaut.
Si vous spécifieztrue
pourenableSecureBoot
, Compute Engine crée une VM avec les trois fonctionnalités de VM protégée activées. Une fois que Compute Engine a démarré votre VM, vous devez l'arrêter pour modifier les options de VM protégée.
Vous pouvez également créer des disques persistants de démarrage à partir des 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 la console Google Cloud, de Google Cloud CLI ou de l'API Compute Engine.
Console
Dans la console Google Cloud, accédez à la page Images du projet d'images.
Cochez les cases figurant à côté des images que vous souhaitez mettre à jour.
Pour développer la colonne des autorisations, cliquez sur Afficher le panneau d'informations.
Développez le rôle au sein duquel vous souhaitez supprimer des utilisateurs.
Pour supprimer un utilisateur de ce rôle, cliquez sur
Supprimer.
gcloud
Pour supprimer un utilisateur d'un rôle appliqué à une image, utilisez la commande gcloud compute images
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, par exemplemy_image
MEMBER
: identité que vous souhaitez supprimer.Doit être au format
user|group|serviceAccount:email
oudomain:domain
. 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 en version bêta, exécutez plutôt une commande gcloud beta compute
.
API
Lisez la stratégie existante à l'aide de la méthode
images.getIamPolicy
: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.
Pour supprimer des membres et les rôles qui leur sont associés, modifiez la stratégie à l'aide d'un éditeur de texte.
Écrivez la stratégie mise à jour à l'aide de la méthode
images.setIamPolicy
. Dans le corps de la requête, indiquez la stratégie IAM mise à jour de l'étape précédente.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.
Étape suivante
- Apprenez-en davantage sur IAM.
- Consultez la liste des rôles IAM Compute Engine.
- Obtenez des informations sur les images.
- Apprenez à créer une VM à l'aide d'une image partagée.
- Apprenez à créer un disque persistant de démarrage autonome.
- Apprenez à utiliser ce rôle dans vos déploiements avec Deployment Manager.
- Découvrez le principe de moindre privilège en accordant l'accès à des ressources Compute Engine spécifiques plutôt qu'à un projet entier.