# GCP - Enum Pub/Sub

{{#include ../../../banners/hacktricks-training.md}}

## Pub/Sub <a href="#reviewing-cloud-pubsub" id="reviewing-cloud-pubsub"></a>

[Google **Cloud Pub/Sub**](https://cloud.google.com/pubsub/) est décrit comme un service facilitant l'échange de messages entre des applications indépendantes. Les composants principaux incluent des **sujets**, auxquels les applications peuvent **s'abonner**. Les applications abonnées ont la capacité de **envoyer et recevoir des messages**. Chaque message comprend le contenu réel ainsi que les métadonnées associées.

Le **sujet est la file d'attente** où les messages vont être envoyés, tandis que les **abonnements** sont les **objets** que les utilisateurs vont utiliser pour **accéder aux messages dans les sujets**. Il peut y avoir plus de **1 abonnement par sujet** et il existe 4 types d'abonnements :

- **Pull** : L'utilisateur(s) de cet abonnement doit tirer les messages.
- **Push** : Un point de terminaison URL est indiqué et les messages seront envoyés immédiatement à celui-ci.
- **Table Big Query** : Comme push mais en plaçant les messages dans une table Big Query.
- **Cloud Storage** : Livrer des messages directement à un bucket existant.

Par **défaut**, un **abonnement expire après 31 jours**, bien qu'il puisse être configuré pour ne jamais expirer.

Par **défaut**, un message est **conservé pendant 7 jours**, mais ce délai peut être **augmenté jusqu'à 31 jours**. De plus, s'il n'est pas **ACKé en 10s**, il retourne dans la file d'attente. Il peut également être configuré pour que les messages ACKés continuent d'être stockés.

Un sujet est par défaut crypté à l'aide d'une **clé de cryptage gérée par Google**. Mais une **CMEK** (Customer Managed Encryption Key) de KMS peut également être sélectionnée.

**Lettre morte** : Les abonnements peuvent configurer un **nombre maximum de tentatives de livraison**. Lorsqu'un message ne peut pas être livré, il est **republié dans le sujet de lettre morte spécifié**.

### Instantanés & Schémas

Un instantané est une fonctionnalité qui **capture l'état d'un abonnement à un moment précis**. C'est essentiellement une **sauvegarde cohérente des messages non reconnus dans un abonnement**. En créant un instantané, vous préservez l'état de reconnaissance des messages de l'abonnement, vous permettant de reprendre la consommation des messages à partir du point où l'instantané a été pris, même après que les messages originaux auraient autrement été supprimés.\
Si vous avez beaucoup de chance, un instantané pourrait contenir des **informations sensibles anciennes** depuis le moment où l'instantané a été pris.

Lors de la création d'un sujet, vous pouvez indiquer que les **messages du sujet doivent suivre un schéma**.

### Énumération
```bash
# Get a list of topics in the project
gcloud pubsub topics list
gcloud pubsub topics describe <topic>
gcloud pubsub topics list-subscriptions <topic>
gcloud pubsub topics get-iam-policy <topic>

# Get a list of subscriptions across all topics
gcloud pubsub subscriptions list
gcloud pubsub subscriptions describe <subscription>
gcloud pubsub subscriptions get-iam-policy <subscription>

# Get list of schemas
gcloud pubsub schemas list
gcloud pubsub schemas describe <schema>
gcloud pubsub schemas list-revisions <schema>

# Get list of snapshots
gcloud pubsub snapshots list
gcloud pubsub snapshots describe <snapshot>
```
Cependant, vous pourriez obtenir de meilleurs résultats [**en demandant un ensemble de données plus large**](https://cloud.google.com/pubsub/docs/replay-overview), y compris des messages plus anciens. Cela a quelques prérequis et pourrait impacter les applications, alors assurez-vous de bien savoir ce que vous faites.

### Escalade de privilèges & Post exploitation

{{#ref}}
../gcp-post-exploitation/gcp-pub-sub-post-exploitation.md
{{#endref}}

## Pub/Sub Lite

[**Pub/Sub Lite**](https://cloud.google.com/pubsub/docs/choosing-pubsub-or-lite) est un service de messagerie avec **stockage zonal**. Pub/Sub Lite **coûte une fraction** de Pub/Sub et est destiné à des pipelines de **streaming à haut volume** (jusqu'à 10 millions de messages par seconde) et à des systèmes déclenchés par des événements où le coût bas est la considération principale.

Dans PubSub Lite, il **y a** des **sujets** et des **abonnements**, il **n'y a pas de snapshots** et **schémas** et il y a :

- **Réservations** : Les réservations Pub/Sub Lite sont une fonctionnalité qui permet aux utilisateurs de réserver de la capacité dans une région spécifique pour leurs flux de messages.
- **Opérations** : Fait référence aux actions et tâches impliquées dans la gestion et l'administration de Pub/Sub Lite.

### Énumération
```bash
# lite-topics
gcloud pubsub lite-topics list
gcloud pubsub lite-topics describe <topic>
gcloud pubsub lite-topics list-subscriptions <topic>

# lite-subscriptions
gcloud pubsub lite-subscriptions list
gcloud pubsub lite-subscriptions describe <subscription>

# lite-reservations
gcloud pubsub lite-reservations list
gcloud pubsub lite-reservations describe <topic>
gcloud pubsub lite-reservations list-topics <topic>

# lite-operations
gcloud pubsub lite-operations list
gcloud pubsub lite-operations describe <topic>
```
{{#include ../../../banners/hacktricks-training.md}}
