Pour contrôler l'accès à vos ressources dans Google Cloud, utilisez la gestion de l'authentification et des accès (IAM). IAM vous permet de définir des autorisations pour contrôler qui a accès à quelles ressources dans votre projet. Pour une introduction à IAM, consultez la page Présentation d'IAM.
Lorsque vous déployez des ressources, vous pouvez également contrôler qui y a accès en définissant à l'avance une stratégie IAM dans la configuration. Par exemple, si vous envisagez de créer des sujets Pub/Sub pouvant être gérées par des utilisateurs spécifiques, vous pouvez l'indiquer à Deployment Manager en spécifiant une stratégie IAM dans votre configuration. Lorsque vous créez ou mettez à jour votre déploiement, Deployment Manager appelle l'API IAM pour définir les autorisations appropriées sur la ressource.
Avant de commencer
- Si vous voulez vous servir des exemples de ligne de commande de ce guide, installez l'outil de ligne de commande gcloud.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
Utiliser des stratégies IAM dans Deployment Manager
Une stratégie IAM est un ensemble d'utilisateurs et leurs rôles. Vous définissez une stratégie IAM au niveau du projet, en utilisant des rôles de base ou prédéfinis. Certains services, tels que Cloud Pub/Sub, permettent également la définition de stratégies IAM au niveau des ressources.
Si un service n'est pas compatible avec la définition de stratégies IAM au niveau des ressources, Deployment Manager renvoie une erreur de type NO_METHOD_TO_UPDATE_ACCESS_CONTROL
.
Pour connaître la liste des rôles disponibles et les ressources auxquelles vous pouvez les appliquer, consultez la page Comprendre les rôles.
Accorder l'autorisation à Deployment Manager de définir des stratégies IAM
Deployment Manager utilise le compte de service des API Google pour appeler d'autres API Google et gérer les ressources Google Cloud en votre nom. Vous devez attribuer le rôle de base roles/owner
au compte de service des API Google de votre projet afin qu'il puisse appliquer les stratégies IAM définies dans vos configurations.
- Accédez à la page IAM de la console Google Cloud de votre projet.
- Si vous y êtes invité, sélectionnez votre projet dans la liste.
Recherchez le compte de service des API Google, dont l'adresse e-mail est au format suivant :
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Attribuez les rôles
roles/owner
au compte de service API :Console
- Toujours dans la console Google Cloud, développez le menu déroulant Rôles du compte de service des API Google, puis sélectionnez Projet > Propriétaire.
- Cliquez sur Enregistrer pour enregistrer les modifications.
gcloud
Avec la Google Cloud CLI, ajoutez une liaison à la stratégie IAM pour le projet :
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner
où :
[PROJECT_ID]
est l'ID du projet.[SERVICE_ACCOUNT_EMAIL]
est l'adresse e-mail du compte de service.
Exemple :
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/owner
API
Dans l'API, exécutez une requête
POST
à l'URL suivante, où[PROJECT_ID]
correspond à l'ID du projet :POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
Le corps de la requête doit contenir la liste des liaisons que vous souhaitez appliquer à ce projet. Le rôle
roles/owner
doit faire partie de la liaison. Exemple :{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com", "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] } }
Définir une stratégie IAM dans la configuration
Ensuite, pour définir une stratégie IAM dans votre configuration ou votre modèle, procédez comme suit :
Ajoutez la section
accessControl
à la configuration de premier niveau pour chaque ressource à laquelle vous souhaitez appliquer des stratégies de contrôle d'accès.Spécifiez la stratégie
gcpIamPolicy
souhaitée pour la ressource. Chaque stratégie IAM peut contenir plusieurs liaisons. Chaque liaison associe une liste d'utilisateurs à un rôle.Si vous utilisez
accessControl
pour gérer les comptes de service, apprenez-en plus sur la gestion des comptes de service.
Par exemple, la section accessControl
suivante ajoute des liaisons qui attribuent ces rôles aux utilisateurs :
User | Rôle |
---|---|
alice@example.com |
roles/pubsub.editor |
|
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
Pour en savoir plus sur les stratégies IAM, consultez la documentation IAM.