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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
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 ressourceRemplacez RESOURCE_TYPE par la ressource à laquelle vous souhaitez gérer l'accès. Par exemple,
instances
,instanceTemplates
ouimages
. - Dans la console Google Cloud, accédez à la page correspondant au type de la ressource pour laquelle vous souhaitez ajouter des autorisations.
- Pour les instances, accédez à la page Instances de VM.
- Pour les disques zonaux et régionaux, accédez à la page Disques.
- Pour les instantanés, accédez à la page Instantanés.
- Pour les images, accédez à la page Images.
- Pour les modèles d'instances, accédez à la page Modèles d'instances.
- Pour les images système, accédez à la page Images système.
- Pour les réservations, accédez à la page Réservations.
- Pour les nœuds à locataire unique, accédez à la page Nœuds à locataire unique.
- Cochez les cases à côté des ressources que vous souhaitez mettre à jour.
- 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 :
- Vérifiez si le panneau d'informations est visible. S'il n'est pas visible, cliquez sur Afficher le panneau d'informations.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter un compte principal.
- Ajoutez l'identité du compte principal et sélectionnez le rôle requis.
- Pour enregistrer vos modifications, cliquez sur Enregistrer.
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 formatuser|group|serviceAccount:EMAIL_ADDRESS
oudomain: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.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, remplacezzones/ZONE
parregions/REGION
ouglobal
.VM_NAME
: nom de l'instance de VM
Compute Engine affiche la stratégie actuelle dans la réponse.
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" }
É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, remplacezzones/ZONE
parregions/REGION
ouglobal
.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.
- Dans la console Google Cloud, accédez à la page correspondant au type de la ressource pour laquelle vous souhaitez ajouter des autorisations.
- Pour les instances, accédez à la page Instances de VM.
- Pour les disques zonaux et régionaux, accédez à la page Disques.
- Pour les instantanés, accédez à la page Instantanés.
- Pour les images, accédez à la page Images.
- Pour les groupes d'instances, accédez à la page Groupes d'instances.
- Pour les modèles d'instances, accédez à la page Modèles d'instances.
- Pour les images système, accédez à la page Images système.
- Pour les réservations, accédez à la page Réservations.
- Pour les nœuds à locataire unique, accédez à la page Nœuds à locataire unique.
- Cochez les cases à côté des ressources que vous souhaitez mettre à jour.
- 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 :
- Vérifiez si le panneau d'informations est visible. S'il n'est pas visible, cliquez sur Afficher le panneau d'informations.
- Sélectionnez l'onglet Autorisations.
- 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.
- Pour supprimer un compte principal de ce rôle, cliquez sur Supprimer.
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 formatuser|group|serviceAccount:EMAIL_ADDRESS
oudomain: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.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, remplacezzones/ZONE
parregions/REGION
ouglobal
.VM_NAME
: nom de l'instance de VM
Compute Engine affiche la stratégie actuelle dans la réponse.
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" }
É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, remplacezzones/ZONE
parregions/REGION
ouglobal
.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.
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
etcompute.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" ] }
La requête affiche les autorisations actives pour l'appelant.
{ "permissions": [ "compute.instances.start", "compute.instances.stop" ] }
- Découvrez comment gérer l'accès aux images personnalisées avec IAM.
- Obtenez plus d'informations sur les comptes de service.
- Obtenez plus d'informations sur les rôles IAM de Compute Engine.
- Apprenez-en plus sur les autorisations incluses dans les rôles IAM prédéfinis de Compute Engine.
- Découvrez comment créer et gérer des rôles personnalisés.
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 :
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
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 :
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 :
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
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 :
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 :
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 pastestIamPermissions
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 :
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
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-