Contrôle des accès avec Identity and Access Management

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 à des utilisateurs, des groupes et des 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, vous pouvez configurer le contrôle des accès au niveau du projet et au niveau de ressources individuelles. Voici quelques exemples d'utilisation du contrôle des accès Pub/Sub :

  • Accordez l'accès par ressource plutôt qu'à l'intégralité d'un 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 thème 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 les autres produits Google Cloud , Pub/Sub accepte trois types de rôles :

  • Rôles de base : il s'agit de 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 offrent 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 partie ultérieure de cette section.

  • Rôles personnalisés : ils 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 listent les autorisations Pub/Sub requises pour accéder aux différentes ressources Pub/Sub.

Autorisations requises pour les thèmes

Le tableau suivant présente les autorisations requises pour chaque méthode de l'API Pub/Sub liée aux thèmes. Il indique l'autorisation IAM requise pour appeler chaque méthode, ainsi qu'une description de ce que fait la méthode.

Méthode Description Autorisation requise
projects.topics.create Crée le sujet donné avec le nom donné. pubsub.topics.create sur le projet Cloud hôte
projects.topics.delete Supprime le sujet portant le nom spécifié. pubsub.topics.delete sur le sujet demandé
projects.topics.get Obtient la configuration d'un sujet. pubsub.topics.get sur le sujet demandé
projects.topics.getIamPolicy Récupère la stratégie IAM de contrôle des accès pour un sujet. pubsub.topics.getIamPolicy sur le sujet demandé
projects.topics.list Liste tous les thèmes. 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 requise pour appeler chaque méthode, ainsi qu'une description de ce que fait la méthode.

Méthode Description Autorisation requise
projects.subscriptions.acknowledge Confirme les messages associés aux ack_ids dans 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 hôte et pubsub.topics.attachSubscription sur le sujet demandé. Pour créer un abonnement S dans le projet A qui est associé à un sujet T dans le projet B, les autorisations appropriées doivent être accordées sur le projet A et sur le sujet T. 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 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 Liste les abonnements correspondants. pubsub.subscriptions.list sur le projet Cloud demandé
projects.subscriptions.modifyAckDeadline Modifie le délai de confirmation pour un message spécifique. pubsub.subscriptions.consume sur l'abonnement demandé.
projects.subscriptions.modifyPushConfig Modifie la configuration push pour 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 IAM de contrôle des accès 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 requise pour appeler chaque méthode, ainsi qu'une description de ce que fait la méthode.

Méthode Description Autorisation requise
projects.schemas.commit Valide une nouvelle révision du 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 hôte
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 Permet d'obtenir un schéma. pubsub.schemas.get sur le schéma demandé
projects.schemas.getIamPolicy Récupère la stratégie IAM de contrôle des accès 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 Liste toutes les révisions de schéma pour le 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 hôte
projects.schemas.validateMessage Valide un message par rapport à un schéma. pubsub.schemas.validate sur le projet Cloud hôte

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 requise pour appeler chaque méthode, ainsi qu'une description de ce que fait 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 hôte 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 IAM de contrôle des accès pour un instantané. pubsub.snapshots.getIamPolicy sur l'instantané demandé
projects.snapshots.list Liste 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 de contrôle des accès IAM 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 répertorie tous les rôles Pub/Sub et les autorisations associées à chacun d'eux :

Role Permissions

(roles/pubsub.admin)

Provides full access to topics and subscriptions.

Lowest-level resources where you can grant this role:

  • Schema
  • Snapshot
  • Subscription
  • Topic

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

pubsub.*

  • pubsub.messageTransforms.validate
  • pubsub.schemas.attach
  • pubsub.schemas.commit
  • pubsub.schemas.create
  • pubsub.schemas.delete
  • pubsub.schemas.get
  • pubsub.schemas.getIamPolicy
  • pubsub.schemas.list
  • pubsub.schemas.listRevisions
  • pubsub.schemas.rollback
  • pubsub.schemas.setIamPolicy
  • pubsub.schemas.validate
  • pubsub.snapshots.create
  • pubsub.snapshots.createTagBinding
  • pubsub.snapshots.delete
  • pubsub.snapshots.deleteTagBinding
  • pubsub.snapshots.get
  • pubsub.snapshots.getIamPolicy
  • pubsub.snapshots.list
  • pubsub.snapshots.listEffectiveTags
  • pubsub.snapshots.listTagBindings
  • pubsub.snapshots.seek
  • pubsub.snapshots.setIamPolicy
  • pubsub.snapshots.update
  • pubsub.subscriptions.consume
  • pubsub.subscriptions.create
  • pubsub.subscriptions.createTagBinding
  • pubsub.subscriptions.delete
  • pubsub.subscriptions.deleteTagBinding
  • pubsub.subscriptions.get
  • pubsub.subscriptions.getIamPolicy
  • pubsub.subscriptions.list
  • pubsub.subscriptions.listEffectiveTags
  • pubsub.subscriptions.listTagBindings
  • pubsub.subscriptions.setIamPolicy
  • pubsub.subscriptions.update
  • pubsub.topics.attachSubscription
  • pubsub.topics.create
  • pubsub.topics.createTagBinding
  • pubsub.topics.delete
  • pubsub.topics.deleteTagBinding
  • pubsub.topics.detachSubscription
  • pubsub.topics.get
  • pubsub.topics.getIamPolicy
  • pubsub.topics.list
  • pubsub.topics.listEffectiveTags
  • pubsub.topics.listTagBindings
  • pubsub.topics.publish
  • pubsub.topics.setIamPolicy
  • pubsub.topics.update
  • pubsub.topics.updateTag

resourcemanager.projects.get

serviceusage.consumerpolicy.analyze

serviceusage.consumerpolicy.get

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.quotas.get

serviceusage.services.get

serviceusage.services.list

serviceusage.values.test

(roles/pubsub.editor)

Provides access to modify topics and subscriptions, and access to publish and consume messages.

Lowest-level resources where you can grant this role:

  • Schema
  • Snapshot
  • Subscription
  • Topic

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

pubsub.messageTransforms.validate

pubsub.schemas.attach

pubsub.schemas.commit

pubsub.schemas.create

pubsub.schemas.delete

pubsub.schemas.get

pubsub.schemas.list

pubsub.schemas.listRevisions

pubsub.schemas.rollback

pubsub.schemas.validate

pubsub.snapshots.create

pubsub.snapshots.createTagBinding

pubsub.snapshots.delete

pubsub.snapshots.deleteTagBinding

pubsub.snapshots.get

pubsub.snapshots.list

pubsub.snapshots.listEffectiveTags

pubsub.snapshots.listTagBindings

pubsub.snapshots.seek

pubsub.snapshots.update

pubsub.subscriptions.consume

pubsub.subscriptions.create

pubsub.subscriptions.createTagBinding

pubsub.subscriptions.delete

pubsub.subscriptions.deleteTagBinding

pubsub.subscriptions.get

pubsub.subscriptions.list

pubsub.subscriptions.listEffectiveTags

pubsub.subscriptions.listTagBindings

pubsub.subscriptions.update

pubsub.topics.attachSubscription

pubsub.topics.create

pubsub.topics.createTagBinding

pubsub.topics.delete

pubsub.topics.deleteTagBinding

pubsub.topics.detachSubscription

pubsub.topics.get

pubsub.topics.list

pubsub.topics.listEffectiveTags

pubsub.topics.listTagBindings

pubsub.topics.publish

pubsub.topics.update

pubsub.topics.updateTag

resourcemanager.projects.get

serviceusage.consumerpolicy.analyze

serviceusage.consumerpolicy.get

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.quotas.get

serviceusage.services.get

serviceusage.services.list

serviceusage.values.test

(roles/pubsub.publisher)

Provides access to publish messages to a topic.

Lowest-level resources where you can grant this role:

  • Topic

pubsub.topics.publish

(roles/pubsub.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:

  • Snapshot
  • Subscription
  • Topic

pubsub.snapshots.seek

pubsub.subscriptions.consume

pubsub.topics.attachSubscription

(roles/pubsub.viewer)

Provides access to view topics and subscriptions.

Lowest-level resources where you can grant this role:

  • Schema
  • Snapshot
  • Subscription
  • Topic

pubsub.messageTransforms.validate

pubsub.schemas.get

pubsub.schemas.list

pubsub.schemas.listRevisions

pubsub.schemas.validate

pubsub.snapshots.get

pubsub.snapshots.list

pubsub.snapshots.listEffectiveTags

pubsub.snapshots.listTagBindings

pubsub.subscriptions.get

pubsub.subscriptions.list

pubsub.subscriptions.listEffectiveTags