Ce document décrit les options de contrôle des accès à votre disposition dans Pub/Sub.
Présentation
Pub/Sub utilise Identity and Access Management (IAM) pour le contrôle des accès.
IAM vous permet d'attribuer des rôles spécifiques aux utilisateurs, aux groupes et aux comptes de service, en leur accordant les autorisations nécessaires pour effectuer leurs tâches. Vous pouvez attribuer ces rôles IAM à l'aide de la consoleGoogle Cloud ou de l'API IAM.
Dans Pub/Sub, le contrôle des accès peut être configuré au niveau du projet et au niveau de chaque ressource. Voici quelques exemples d'utilisation du contrôle des accès Pub/Sub :
Accordez l'accès par ressource plutôt que pour l'ensemble du projet Cloud.
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.
Si vous disposez d'un accès en lecture seule à une seule ressource, telle qu'un sujet ou un abonnement, vous ne pouvez pas afficher la ressource à l'aide de la console Google Cloud . Vous pouvez utiliser Google Cloud CLI pour afficher la ressource.
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.
Types de rôles dans Pub/Sub
Comme d'autres produits Google Cloud , Pub/Sub accepte trois types de rôles :
Rôles de base : les rôles de base sont des rôles très permissifs qui existaient avant la mise en place d'IAM. Pour en savoir plus sur les rôles de base, consultez Rôles de base.
Rôles prédéfinis : les rôles prédéfinis fournissent un accès précis à des ressourcesGoogle Cloud spécifiques. Pour en savoir plus sur les rôles prédéfinis, consultez Rôles prédéfinis. Les rôles prédéfinis Pub/Sub sont inclus dans une section ultérieure de cette page.
Rôles personnalisés : les rôles personnalisés vous aident à appliquer le principe du moindre privilège. Pour en savoir plus sur les rôles personnalisés, consultez Rôles personnalisés.
Autorisations Pub/Sub requises
Les sections suivantes répertorient les autorisations Pub/Sub requises pour accéder à différentes ressources Pub/Sub.
Autorisations requises pour les sujets
Le tableau suivant présente les autorisations requises pour chaque méthode de l'API Pub/Sub liée aux sujets. Elle indique l'autorisation IAM nécessaire pour appeler chaque méthode, ainsi qu'une description de l'action de la méthode.
| Méthode | Description | Autorisation requise |
|---|---|---|
projects.topics.create
|
Crée le sujet donné avec le nom indiqué. | pubsub.topics.create sur le projet Cloud contenant |
projects.topics.delete
|
Supprime le sujet portant le nom indiqué. | pubsub.topics.delete sur le sujet demandé |
projects.topics.get
|
Récupère la configuration d'un sujet. | pubsub.topics.get sur le sujet demandé |
projects.topics.getIamPolicy
|
Récupère la stratégie de contrôle des accès IAM pour un sujet. | pubsub.topics.getIamPolicy sur le sujet demandé |
projects.topics.list
|
Répertorie tous les sujets. | pubsub.topics.list sur le projet Cloud demandé |
projects.topics.patch
|
Met à jour un sujet existant. | pubsub.topics.update sur le sujet demandé |
projects.topics.publish
|
Ajoute un ou plusieurs messages au sujet. | pubsub.topics.publish sur le sujet demandé |
projects.topics.setIamPolicy
|
Définit la stratégie IAM de contrôle des accès pour un sujet. | pubsub.topics.setIamPolicy sur le sujet demandé |
projects.topics.testIamPermissions
|
Renvoie les autorisations qu'un appelant a sur la ressource spécifiée. | Aucun |
Autorisations requises pour les abonnements
Le tableau suivant présente les autorisations requises pour chaque méthode de l'API Pub/Sub liée aux abonnements. Il indique l'autorisation IAM nécessaire pour appeler chaque méthode, ainsi qu'une description de l'action de la méthode.
| Méthode | Description | Autorisation requise |
|---|---|---|
projects.subscriptions.acknowledge
|
Accuse réception des messages associés aux ack_ids dans la requête AcknowledgeRequest. | pubsub.subscriptions.consume sur l'abonnement demandé |
projects.subscriptions.create
|
Crée un abonnement à un sujet donné. | pubsub.subscriptions.create sur le projet Cloud contenant le sujet et pubsub.topics.attachSubscription sur le sujet demandé.
Pour créer un abonnement S dans le projet A associé à un sujet T dans le projet B, les autorisations appropriées doivent être accordées à la fois sur le projet A et sur le sujet T. Dans ce cas, les informations d'identité de l'utilisateur peuvent être capturées dans les journaux d'audit du projet B. |
projects.subscriptions.delete
|
Supprime un abonnement existant. | pubsub.subscriptions.delete sur l'abonnement demandé |
projects.subscriptions.detach
|
Dissocie un abonnement d'un sujet. | pubsub.topics.detachSubscription sur le sujet auquel l'abonnement est associé. |
projects.subscriptions.get
|
Récupère les détails de configuration d'un abonnement. | pubsub.subscriptions.get sur l'abonnement demandé |
projects.subscriptions.getIamPolicy
|
Récupère la stratégie de contrôle des accès IAM pour un abonnement. | pubsub.subscriptions.getIamPolicy sur l'abonnement demandé |
projects.subscriptions.list
|
Répertorie les abonnements correspondants. | pubsub.subscriptions.list sur le projet Cloud demandé |
projects.subscriptions.modifyAckDeadline
|
Modifie le délai d'accréditation d'un message spécifique. | pubsub.subscriptions.consume sur l'abonnement demandé |
projects.subscriptions.modifyPushConfig
|
Modifie la configuration pushConfig d'un abonnement spécifié. | pubsub.subscriptions.update sur l'abonnement demandé |
projects.subscriptions.patch
|
Met à jour un abonnement existant. | pubsub.subscriptions.update sur l'abonnement demandé |
projects.subscriptions.pull
|
Récupère les messages du serveur. | pubsub.subscriptions.consume sur l'abonnement demandé |
projects.subscriptions.seek
|
Recherche un abonnement existant à un moment précis ou un instantané. | pubsub.subscriptions.consume sur l'abonnement demandé et pubsub.snapshots.seek sur l'instantané demandé, le cas échéant. |
projects.subscriptions.setIamPolicy
|
Définit la stratégie de contrôle des accès IAM pour un abonnement. | pubsub.subscriptions.setIamPolicy sur l'abonnement demandé |
projects.subscriptions.testIamPermissions
|
Renvoie les autorisations qu'un appelant a sur la ressource spécifiée. | Aucun |
Autorisations requises pour les schémas
Le tableau suivant présente les autorisations requises pour chaque méthode de l'API Pub/Sub liée aux schémas. Il indique l'autorisation IAM nécessaire pour appeler chaque méthode, ainsi qu'une description de l'action de la méthode.
| Méthode | Description | Autorisation requise |
|---|---|---|
projects.schemas.commit
|
Valide une nouvelle révision de schéma. | pubsub.schemas.commit sur le schéma demandé |
projects.schemas.create
|
Crée un schéma. | pubsub.schemas.create sur le projet Cloud contenant |
projects.schemas.delete
|
Supprime un schéma. | pubsub.schemas.delete sur le schéma demandé |
projects.schemas.deleteRevision
|
Supprime une révision de schéma spécifique. | pubsub.schemas.delete sur le schéma demandé |
projects.schemas.get
|
Récupère un schéma. | pubsub.schemas.get sur le schéma demandé |
projects.schemas.getIamPolicy
|
Récupère la stratégie de contrôle des accès IAM pour un schéma. | pubsub.schemas.getIamPolicy sur le schéma demandé |
projects.schemas.list
|
Répertorie les schémas d'un projet. | pubsub.schemas.list sur le projet Cloud demandé |
projects.schemas.listRevisions
|
Répertorie toutes les révisions du schéma nommé. | pubsub.schemas.listRevisions sur le schéma demandé |
projects.schemas.rollback
|
Crée une révision de schéma à partir d'une révision précédente. | pubsub.schemas.rollback sur le schéma demandé |
projects.schemas.validate
|
Valide une définition de schéma. | pubsub.schemas.validate sur le projet Cloud contenant |
projects.schemas.validateMessage
|
Valide un message par rapport à un schéma. | pubsub.schemas.validate sur le projet Cloud contenant |
Autorisations requises pour les instantanés
Le tableau suivant présente les autorisations requises pour chaque méthode de l'API Pub/Sub liée aux instantanés. Il indique l'autorisation IAM nécessaire pour appeler chaque méthode, ainsi qu'une description de l'action de la méthode.
| Méthode REST | Description | Autorisation requise |
|---|---|---|
projects.snapshots.create
|
Crée un instantané à partir de l'abonnement demandé. | pubsub.snapshots.create sur le projet Cloud contenant l'abonnement source et pubsub.subscriptions.consume sur l'abonnement source. |
projects.snapshots.delete
|
Supprime un instantané existant. | pubsub.snapshots.delete sur l'instantané demandé |
projects.snapshots.getIamPolicy
|
Récupère la stratégie de contrôle des accès IAM pour un instantané. | pubsub.snapshots.getIamPolicy sur l'instantané demandé |
projects.snapshots.list
|
Répertorie les instantanés existants. | pubsub.snapshots.list sur le projet Cloud demandé |
projects.snapshots.patch
|
Met à jour un instantané existant. | pubsub.snapshots.update sur l'instantané demandé |
projects.snapshots.setIamPolicy
|
Définit la stratégie IAM de contrôle des accès pour un instantané. | pubsub.snapshots.setIamPolicy sur l'instantané demandé |
projects.snapshots.testIamPermissions
|
Renvoie les autorisations qu'un appelant a sur la ressource spécifiée. | Aucun |
Rôles Pub/Sub disponibles
Le tableau suivant liste tous les rôles Pub/Sub et les autorisations associées à chacun d'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:
|
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Cloud Pub/Sub Service Agent( Grants Cloud Pub/Sub Service Account access to manage resources. |
|
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 thèmes et vos 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 de comptes 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 les contrôles d'accès pour les sujets et les abonnements, procédez comme suit :
Dans la console Google Cloud , accédez à la liste des sujets Pub/Sub.
Si nécessaire, sélectionnez votre projet compatible avec Pub/Sub.
Effectuez l'une des opérations suivantes :
Pour 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 Informations sur le sujet, cliquez sur l'ID de l'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 de comptes 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 pour les méthodes Pub/Sub standards, vous pouvez appeler les méthodes de l'API IAM via les bibliothèques clientes, APIs Explorer ou directement via HTTP.
Notez que vous ne pouvez pas utiliser l'API IAM Pub/Sub pour 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 politique
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 de l'API Pub/Sub en langage 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
Sortie :
{ "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
L'exemple suivant utilise la version majeure de la bibliothèque cliente Pub/Sub pour Go (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Java Pub/Sub.
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 de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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 de l'API Python Pub/Sub.
Ruby
L'exemple suivant utilise la version 3 de la bibliothèque cliente Pub/Sub pour Ruby. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la version 3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage C#.
gcloud
Obtenir la stratégie relative au sujet
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Sortie :
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
L'exemple suivant utilise la version majeure de la bibliothèque cliente Pub/Sub pour Go (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Java Pub/Sub.
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 de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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 de l'API Python Pub/Sub.
Ruby
L'exemple suivant utilise la version 3 de la bibliothèque cliente Pub/Sub pour Ruby. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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
L'exemple suivant utilise la version majeure de la bibliothèque cliente Pub/Sub pour Go (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Java Pub/Sub.
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 de l'API Pub/Sub en langage 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 de l'API Python Pub/Sub.
Ruby
L'exemple suivant utilise la version 3 de la bibliothèque cliente Pub/Sub pour Ruby. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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
L'exemple suivant utilise la version majeure de la bibliothèque cliente Pub/Sub pour Go (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Java Pub/Sub.
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 de l'API Pub/Sub en langage 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 de l'API Python Pub/Sub.
Ruby
L'exemple suivant utilise la version 3 de la bibliothèque cliente Pub/Sub pour Ruby. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage Ruby.
Tester les autorisations
Vous pouvez utiliser la méthode testIamPermissions() pour vérifier quelles autorisations peuvent être ajoutées ou supprimées pour la ressource donnée. Elle utilise 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 de l'API Pub/Sub en langage C#.
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \
--format jsonSortie :
[
{
"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
L'exemple suivant utilise la version majeure de la bibliothèque cliente Pub/Sub pour Go (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Java Pub/Sub.
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 de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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 de l'API Python Pub/Sub.
Ruby
L'exemple suivant utilise la version 3 de la bibliothèque cliente Pub/Sub pour Ruby. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage C#.
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \
--format jsonSortie
[
{
"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
L'exemple suivant utilise la version majeure de la bibliothèque cliente Pub/Sub pour Go (v2). Si vous utilisez toujours la bibliothèque v1, consultez le guide de migration vers la v2. Pour afficher la liste des exemples de code v1, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage 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 de l'API Java Pub/Sub.
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 de l'API Pub/Sub en langage 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 de l'API Pub/Sub en langage 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 de l'API Python Pub/Sub.
Ruby
L'exemple suivant utilise la version 3 de la bibliothèque cliente Pub/Sub pour Ruby. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Pub/Sub en langage Ruby.
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.
Publier dans un sujet d'un autre projet
Supposons que vous souhaitiez qu'un compte de service du projet A publie des messages dans un sujet du projet B. Pour activer ce scénario, procédez comme suit :
Activez l'API Pub/Sub dans le projet A.
Accordez au compte de service l'autorisation
pubsub.topics.publishsur le projet B ou sur le sujet. Le rôle Éditeur Pub/Sub (roles/pubsub.publisher) inclut cette autorisation.
Créer un abonnement dans un autre projet
Supposons que vous souhaitiez qu'un compte de service du projet A crée un abonnement dans le projet A pour un sujet du projet B. Pour activer ce scénario, procédez comme suit :
Activez l'API Pub/Sub dans les deux projets.
Accordez les autorisations suivantes au compte de service :
pubsub.subscriptions.createsur le projet A.pubsub.topics.attachSubscriptionsur le sujet du projet B.
Le rôle Éditeur Pub/Sub (
roles/pubsub.editor) inclut ces autorisations.Créez un abonnement dans le projet A associé au sujet du projet B.
Recevoir des messages d'un sujet dans un autre projet
Supposons que vous souhaitiez qu'un compte de service du projet A reçoive des messages d'un abonnement du projet B. Pour activer ce scénario, procédez comme suit :
Activez l'API Pub/Sub dans le projet A.
Attribuez au compte de service le rôle Abonné Pub/Sub (
roles/pubsub.subscriber) sur le projet B ou sur l'abonnement.
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.
Étape suivante
- Si vous rencontrez des problèmes pour accéder aux ressources Pub/Sub ou les authentifier, consultez Dépannage général.