Ce document décrit les options de contrôle des accès à votre disposition dans Pub/Sub.
Présentation
Pub/Sub fait appel à Cloud IAM (Cloud Identity and Access Management) pour le contrôle des accès.
Dans Pub/Sub, vous pouvez configurer le contrôle des accès au niveau du projet et au niveau de ressources individuelles. Exemple :
Accordez l'accès par sujet ou par abonnement plutôt qu'à l'intégralité d'un projet Cloud.
Si vous disposez d'un accès en lecture seule à un seul sujet ou à un seul abonnement, vous ne pouvez pas afficher le sujet ou l'abonnement à l'aide de la console Google Cloud. Vous pouvez utiliser Google Cloud CLI à la place.
Accordez un accès avec des fonctionnalités restreintes, par exemple en autorisant uniquement la publication de messages dans un sujet ou uniquement la consultation de messages d'un abonnement, mais pas la suppression du sujet ou de l'abonnement.
Accordez à un groupe de développeurs l'accès à toutes les ressources Pub/Sub au sein d'un projet.
Pour une description détaillée d'IAM et de ses fonctionnalités, consultez la documentation IAM. et en particulier la page Accorder, modifier et révoquer les accès à des ressources.
Chaque méthode Pub/Sub nécessite les autorisations nécessaires. Pour obtenir la liste des autorisations et des rôles compatibles avec Cloud IAM pour Pub/Sub, consultez la section Rôles ci-dessous.
Autorisations et rôles
Cette section récapitule les autorisations et les rôles gérés par Cloud IAM pour Pub/Sub.
Autorisations requises
Le tableau suivant répertorie les autorisations requises pour appeler chaque méthode:
Méthode REST | Autorisation(s) requise(s) |
---|---|
projects.snapshots.create |
Les autorisations pubsub.snapshots.create sur le projet Cloud hôte et pubsub.subscriptions.consume sur l'abonnement source. |
projects.snapshots.delete |
pubsub.snapshots.delete sur l'instantané demandé. |
projects.snapshots.getIamPolicy |
pubsub.snapshots.getIamPolicy sur l'instantané demandé. |
projects.snapshots.list |
pubsub.snapshots.list sur le projet Cloud demandé. |
projects.snapshots.patch |
pubsub.snapshots.update sur l'instantané demandé. |
projects.snapshots.setIamPolicy |
pubsub.snapshots.setIamPolicy sur l'instantané demandé. |
projects.snapshots.testIamPermissions |
Aucun |
projects.subscriptions.acknowledge |
pubsub.subscriptions.consume sur l'abonnement demandé. |
projects.subscriptions.create |
pubsub.subscriptions.create sur le projet Cloud hôte et pubsub.topics.attachSubscription sur le sujet demandé.
Notez que pour créer un abonnement au sein du projet A pour un sujet S du projet B, les autorisations appropriées doivent être accordées sur le projet A et sur le sujet S. Dans ce cas, les informations sur l'identité de l'utilisateur peuvent être capturées dans les journaux d'audit du projet B. |
projects.subscriptions.delete |
pubsub.subscriptions.delete sur l'abonnement demandé. |
projects.subscriptions.get |
pubsub.subscriptions.get sur l'abonnement demandé. |
projects.subscriptions.getIamPolicy |
pubsub.subscriptions.getIamPolicy sur l'abonnement demandé. |
projects.subscriptions.list |
pubsub.subscriptions.list sur le projet Cloud demandé. |
projects.subscriptions.modifyAckDeadline |
pubsub.subscriptions.consume sur l'abonnement demandé. |
projects.subscriptions.modifyPushConfig |
pubsub.subscriptions.update sur l'abonnement demandé. |
projects.subscriptions.patch |
pubsub.subscriptions.update sur l'abonnement demandé. |
projects.subscriptions.pull |
pubsub.subscriptions.consume sur l'abonnement demandé. |
projects.subscriptions.seek |
pubsub.subscriptions.consume sur l'abonnement demandé et pubsub.snapshots.seek sur l'instantané demandé, le cas échéant. |
projects.subscriptions.setIamPolicy |
pubsub.subscriptions.setIamPolicy sur l'abonnement demandé. |
projects.subscriptions.testIamPermissions |
Aucun |
projects.topics.create |
pubsub.topics.create sur le projet Cloud hôte. |
projects.topics.delete |
pubsub.topics.delete sur le sujet demandé. |
projects.topics.detachSubscription |
pubsub.topics.detachSubscription sur le sujet demandé. |
projects.topics.get |
pubsub.topics.get sur le sujet demandé. |
projects.topics.getIamPolicy |
pubsub.topics.getIamPolicy sur le sujet demandé. |
projects.topics.list |
pubsub.topics.list sur le projet Cloud demandé. |
projects.topics.patch |
pubsub.topics.update sur le sujet demandé. |
projects.topics.publish |
pubsub.topics.publish sur le sujet demandé. |
projects.topics.setIamPolicy |
pubsub.topics.setIamPolicy sur le sujet demandé. |
projects.topics.subscriptions.list |
pubsub.topics.get sur le sujet demandé. |
projects.topics.testIamPermissions |
Aucun |
Rôles
Le tableau suivant répertorie tous les rôles Pub/Sub et les autorisations associées à chacun d'entre eux:
Role | Permissions |
---|---|
Pub/Sub Admin( Provides full access to topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Editor( Provides access to modify topics and subscriptions, and access to publish and consume messages. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Publisher( Provides access to publish messages to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Subscriber( Provides access to consume messages from a subscription and to attach subscriptions to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Viewer( Provides access to view topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Contrôler les accès via la console Google Cloud
Vous pouvez utiliser la console Google Cloud pour gérer le contrôle des accès à vos sujets et projets.
Pour définir les contrôles d'accès au niveau du projet, procédez comme suit:
Dans la console Google Cloud, accédez à la page IAM.
Sélectionnez votre projet.
Cliquez sur
Ajouter.Saisissez un ou plusieurs noms principaux.
Dans la liste Sélectionner un rôle, sélectionnez le rôle que vous souhaitez attribuer.
Cliquez sur Enregistrer.
Vérifiez que le compte principal est bien répertorié avec le rôle que vous lui avez accordé.
Pour définir le contrôle des accès aux sujets et aux abonnements, procédez comme suit:
Dans la console Google Cloud, accédez à la liste Sujets de Pub/Sub.
Si nécessaire, sélectionnez votre projet pour lequel Pub/Sub est activé.
Effectuez l'une des opérations suivantes :
Afin de définir des rôles pour un ou plusieurs sujets, sélectionnez-les.
Pour définir des rôles pour un abonnement associé à un sujet, cliquez sur l'ID du sujet. Sur la page Détails du sujet, cliquez sur l'ID d'abonnement. La page Détails de l'abonnement s'affiche.
Si le panneau d'informations est masqué, cliquez sur Afficher le panneau d'informations.
Dans l'onglet Autorisations, cliquez sur
Ajouter un compte principal.Saisissez un ou plusieurs noms principaux.
Dans la liste Sélectionner un rôle, sélectionnez le rôle que vous souhaitez attribuer.
Cliquez sur Enregistrer.
Contrôler les accès via l'API IAM
L'API Cloud IAM pour Pub/Sub vous permet de définir et d'obtenir des stratégies sur des sujets et des abonnements individuels au sein d'un projet, ainsi que de tester les autorisations d'un utilisateur pour une ressource donnée. Comme avec les méthodes Pub/Sub standards, vous pouvez appeler les méthodes de l'API IAM via les bibliothèques clientes, l'explorateur d'API ou directement via HTTP.
Notez que l'API Cloud IAM pour Pub/Sub ne permet pas de gérer les stratégies au niveau du projet Google Cloud.
Dans les sections suivantes, vous trouverez des exemples illustrant la procédure à suivre pour définir et obtenir une stratégie, ainsi que pour tester les autorisations dont dispose un appelant pour une ressource donnée.
Obtenir une stratégie
La méthode getIamPolicy()
vous permet d'obtenir une stratégie existante.
Cette méthode renvoie un objet JSON contenant la stratégie associée à la ressource.
Voici un exemple de code permettant d'obtenir la stratégie applicable à un abonnement :
C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
gcloud
Pour obtenir la stratégie d'abonnement, procédez comme suit :
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Résultat :
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com", "user:user-3@gmail.com" } ] }
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
PHP
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage PHP qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour PHP.
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Voici un exemple de code permettant d'obtenir une stratégie applicable à un sujet :C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
gcloud
Obtenir la stratégie relative au sujet
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Résultat :
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
PHP
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage PHP qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour PHP.
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Définir une stratégie
La méthode setIamPolicy()
vous permet d'associer une stratégie à une ressource. La méthode setIamPolicy()
prend un message SetIamPolicyRequest
, qui contient la stratégie à appliquer et la ressource à laquelle la stratégie est associée.
Il renvoie la stratégie qui en résulte.
Voici un exemple de code permettant de définir une stratégie pour un abonnement :
C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
gcloud
1. Enregistrez la stratégie concernant l'abonnement.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Ouvrez subscription_policy.json
et mettez à jour les liaisons en attribuant les rôles appropriés aux comptes principaux appropriés.
Pour en savoir plus sur l'utilisation des fichiers subscription_policy.json
, consultez la section Stratégies dans la documentation Cloud IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com" } ] }
3. Appliquez la nouvelle stratégie d'abonnement.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
PHP
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Voici un exemple de code permettant de définir une stratégie pour un sujet :
C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
gcloud
1. Enregistrez la stratégie pour le sujet.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Ouvrez topic_policy.json
et mettez à jour les liaisons en attribuant les rôles appropriés aux comptes principaux appropriés.
Pour en savoir plus sur l'utilisation des fichiers subscription_policy.json
, consultez la section Stratégies dans la documentation Cloud IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. Appliquez la nouvelle stratégie relative au sujet.
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
PHP
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Tester les autorisations
Vous pouvez utiliser la méthode testIamPermissions()
pour vérifier quelles autorisations peuvent être ajoutées ou supprimées pour une ressource donnée. Elle prend comme paramètres un nom de ressource et un ensemble d'autorisations, et renvoie le sous-ensemble d'autorisations.
Voici un exemple de code permettant de tester les autorisations sur un abonnement :
C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Résultat :
[ { "name": "pubsub.subscriptions.consume", "stage": "GA" }, { "name": "pubsub.subscriptions.delete", "stage": "GA" }, { "name": "pubsub.subscriptions.get", "stage": "GA" }, { "name": "pubsub.subscriptions.getIamPolicy", "stage": "GA" }, { "name": "pubsub.subscriptions.setIamPolicy", "stage": "GA" }, { "name": "pubsub.subscriptions.update", "stage": "GA" } ]
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
PHP
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage PHP qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour PHP.
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Voici un exemple de code permettant de tester les autorisations sur un sujet :
C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \ --format json
Sortie
[ { "name": "pubsub.topics.attachSubscription", "stage": "GA" }, { "name": "pubsub.topics.delete", "stage": "GA" }, { "name": "pubsub.topics.detachSubscription", "stage": "GA" }, { "name": "pubsub.topics.get", "stage": "GA" }, { "name": "pubsub.topics.getIamPolicy", "stage": "GA" }, { "name": "pubsub.topics.publish", "stage": "GA" }, { "name": "pubsub.topics.setIamPolicy", "stage": "GA" }, { "name": "pubsub.topics.update", "stage": "GA" } ]
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
PHP
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage PHP qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour PHP.
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Exemple de cas d'utilisation : communication entre projets
Cloud IAM pour Pub/Sub est utile pour ajuster les accès avec précision dans le cadre de la communication entre projets.
Supposons qu'un compte de service du projet Cloud A souhaite publier des messages dans un sujet du projet Cloud B. Commencez par activer l'API Pub/Sub dans le projet A.
Ensuite, accordez au compte de service l'autorisation Modifier dans le projet Cloud B. Toutefois, cette approche manque bien souvent de précision. Vous pouvez affiner le niveau d'accès à l'aide de l'API Cloud IAM.
Par exemple, cet extrait utilise la méthode setIamPolicy()
dans project-b ainsi qu'un fichier topic_policy.json
préparé pour accorder au compte de service foobar@
project-a.iam.gserviceaccount.com
du project-a le rôle d'éditeur sur le sujet projects/
project-b/topics/
topic-b :
gcloud pubsub topics set-iam-policy \ projects/project-b/topics/topic-b \ topic_policy.json
Updated IAM policy for topic topic-b. bindings: - members: - serviceAccount:foobar@project-a.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwWGrQYX6R4=
Comportement de disponibilité partielle
Les vérifications d'autorisations dépendent du sous-système IAM. Afin de toujours garantir une faible latence de réponse pour les opérations sur les données (publication et consultation de messages), le système peut s'appuyer sur les stratégies Cloud IAM mises en cache. Pour en savoir plus sur le délai d'application de vos modifications, consultez la documentation Cloud IAM.