Analyser les secrets régionaux avec Cloud Asset Inventory

Cette page explique comment utiliser l'inventaire des éléments cloud pour surveiller vos secrets, exporter des données à des fins d'analyse et exécuter des requêtes performantes pour obtenir les insights dont vous avez besoin.

Présentation

L'inventaire des éléments Cloud analyse votre environnement Google Cloud et enregistre toutes les modifications apportées à vos ressources cloud, telles que les machines virtuelles, les bases de données, les buckets de stockage et, dans ce contexte, vos secrets Secret Manager. L'intégration entre Secret Manager et inventaire des éléments cloud vous permet d'effectuer les opérations suivantes:

  • Exécuter des requêtes : recherchez des secrets spécifiques ou identifiez des tendances dans vos secrets.

  • Configurer des alertes : configurez Cloud Asset Inventory pour envoyer des notifications à Pub/Sub lorsque des événements spécifiques se produisent, par exemple lorsque des secrets sont créés, modifiés ou supprimés.

  • Exporter des données: exportez votre inventaire de secrets vers BigQuery pour effectuer une analyse approfondie. et la création de rapports.

  • Gérer et analyser vos secrets: consultez tous vos secrets au même endroit (pour tous les projets). et l'ensemble de votre organisation) et identifier les secrets susceptibles d'être mal configurés ou d'enfreindre règles de sécurité de votre organisation. Par exemple, vous pouvez rechercher des secrets qui ne font pas l'objet d'une rotation régulière ou ne disposent pas de contrôles d'accès appropriés.

Il s'agit d'une tâche avancée destinée aux utilisateurs de Secret Manager. Avant de lire cette page, nous vous recommandons vous devez lire ce qui suit:

Interroger Secret Manager

Pour analyser vos secrets avec des requêtes de type SQL, nous vous recommandons exporter vos secrets vers BigQuery. Secret Manager n'est pas intégré à Asset Search ni à Policy Analyzer. Ces requêtes utilisent le Google Cloud CLI et BigQuery pour rechercher vos éléments.

Limites

L'utilisation de Cloud Asset Inventory pour analyser les ressources de Secret Manager présente les limites suivantes :

  • Cloud Asset Inventory ne permet d'exporter et de répertorier les instantanés que pour les cinq dernières semaines.

Surveiller les modifications apportées aux éléments

L'inventaire des éléments cloud suit les mises à jour en temps réel et permet de surveiller ces modifications. Vous pouvez configurer des flux pour envoyer des notifications à un ensemble de sujets Pub/Sub configurés chaque fois que vos ressources sont modifiées. De plus, Cloud Asset Inventory accepte la configuration de conditions sur vos flux, ce qui vous permet de surveiller des modifications spécifiques pour certains types d'éléments. Pour découvrir comment déclencher des workflows sur les modifications d'éléments, consultez la documentation Pub/Sub.

Exporter des éléments vers BigQuery

L'exportation de vos secrets et de vos versions de secrets vers BigQuery vous permet d'exécuter des requêtes de type SQL sur de grandes quantités de données et de générer des insights pertinents sur vos éléments. Avant d'exporter vos éléments, assurez-vous que votre ensemble de données et vos comptes de service sont correctement configurés.

Pour exporter vos éléments, exécutez la commande suivante:

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • CONTENT_TYPE: type de contenu de l'asset (RESOURCE).
  • PROJECT_ID: ID du projet contenant les secrets à analyser.
  • SNAPSHOT_TIME: l'heure permettant d'obtenir un instantané des ressources. La période peut être comprise entre l'heure actuelle et les cinq dernières semaines.
  • BIGQUERY_PROJECT_ID: ID du projet dans lequel se trouve la table BigQuery.
  • DATASET_ID : ID de l'ensemble de données BigQuery.
  • TABLE_NAME : table vers laquelle vous exportez les métadonnées. Si elle n'existe pas, elle est créée.

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud asset export \
  --content-type=CONTENT_TYPE \
  --project=PROJECT_ID \
  --snapshot-time=SNAPSHOT_TIME \
  --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \
  --output-bigquery-force

Windows (PowerShell)

gcloud asset export `
  --content-type=CONTENT_TYPE `
  --project=PROJECT_ID `
  --snapshot-time=SNAPSHOT_TIME `
  --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME `
  --output-bigquery-force

Windows (cmd.exe)

gcloud asset export ^
  --content-type=CONTENT_TYPE ^
  --project=PROJECT_ID ^
  --snapshot-time=SNAPSHOT_TIME ^
  --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME ^
  --output-bigquery-force

Pour en savoir plus, consultez Exporter vers BigQuery.

Exemples de requêtes

Utilisez ces exemples de requêtes pour rechercher des secrets et des versions de secrets avec des propriétés spécifiques.

Secrets régionaux créés au cours des deux dernières semaines

Recherchez les secrets (et leurs propriétés) qui ont été ajoutés à votre organisation au cours des deux dernières semaines.

BigQuery

  SELECT name, FROM BIGQUERY_TABLE
  WHERE asset_type='secretmanager.googleapis.com/Secret' AND
    resource.location <> "global" AND
    DATE(JSON_VALUE(resource.data, '$.createTime')) > DATE_SUB(CURRENT_DATE(), INTERVAL 2 WEEK);
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à BigQuery. vers lequel vous avez exporté tous les éléments de la Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.createTime>-P2W"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.createTime>-P2W"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.createTime>-P2W"

Secrets régionaux dans un emplacement spécifique

Recherchez tous les secrets stockés dans un emplacement spécifique, tel que us-central1.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location = "us-central1";
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet contenant les secrets à analyser
  • LOCATION: emplacement Google Cloud du secrets

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"

Versions de secrets régionaux créées il y a plus de 180 jours

Répertoriez toutes les versions de secrets créées il y a plus de 180 jours.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/SecretVersion'
      resource.location <> "global" AND
      DATE(JSON_VALUE(resource.data, '$.createTime')) < DATE_SUB(CURRENT_DATE(), INTERVAL 180 DAY) AND
      JSON_VALUE(resource.data, '$.state') = "ENABLED";
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/SecretVersion' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/SecretVersion' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/SecretVersion' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"

Secrets régionaux sans CMEK configuré

Répertoriez tous les secrets qui ne sont pas chiffrés avec des clés de chiffrement du gestionnaire de clientèle (CMEK):

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") IS NOT NULL;
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"

Secrets régionaux avec CMEK configuré

Répertoriez tous les secrets chiffrés avec CMEK.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") IS NOT NULL;
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à BigQuery. vers lequel vous avez exporté tous les éléments de la Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"

Secrets régionaux chiffrés avec une clé CMEK spécifique

Recherchez les secrets chiffrés avec une clé CMEK spécifique.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") = KMS_KEY_NAME;
  

Remplacez les éléments suivants :

  • BIGQUERY_TABLE: chemin d'accès complet à BigQuery vers lequel vous avez exporté tous les éléments de la Exporter des éléments vers BigQuery de ce document.

  • KMS_KEY_NAME: ID de la clé ou identifiant complet de la clé

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet contenant les secrets à analyser
  • KMS_KEY_NAME : ID de la clé ou identifiant complet de la clé

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"

Versions régionales des secrets sans CMEK configuré

Recherchez toutes les versions de secrets activées qui ne sont pas chiffrées avec CMEK.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/SecretVersion'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyVersionName") IS NULL AND
      JSON_VALUE(resource.data, "$.state") = "ENABLED";
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/SecretVersion' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/SecretVersion' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/SecretVersion' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"

Versions de secrets régionales chiffrées avec une clé CMEK spécifique

Répertoriez toutes les versions de secrets activées chiffrées avec une version de CMEK spécifique.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/SecretVersion'
      resource.location <> "global" AND
      JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyVersionName") = KMS_KEY_VERSION_NAME AND
      JSON_VALUE(resource.data, "$.state") = "ENABLED";
  

Remplacez les éléments suivants :

  • BIGQUERY_TABLE: chemin d'accès complet à BigQuery vers lequel vous avez exporté tous les éléments de la Exporter des éléments vers BigQuery de ce document.

  • KMS_KEY_VERSION_NAME: numéro de version de la clé Cloud Key Management Service

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/SecretVersion' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/SecretVersion' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/SecretVersion' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"

Secrets régionaux sans rotation configurée

Recherchez tous les secrets qui ne disposent pas d'un calendrier de rotation.

BigQuery

    SELECT name FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      JSON_EXTRACT(resource.data, '$.rotation') IS NULL;
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.rotation = NULL"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.rotation = NULL"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.rotation = NULL"

Secrets régionaux avec une période de rotation spécifique

Recherchez tous les secrets dont la rotation est prévue moins d'une fois tous les 90 jours :

BigQuery

    SELECT *
    FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      CAST(
        TRIM(
          JSON_VALUE(JSON_EXTRACT(resource.data, "$.rotation.rotationPeriod")),"s")
        AS INT64)
    < 86400 * 90 #Rotation period in seconds (86400s in 1 day * 90 days)
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à BigQuery. vers lequel vous avez exporté tous les éléments de la Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les secrets à analyser

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60))
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60))
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60))
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"

Secrets régionaux qui expireront dans les 30 prochains jours

Listez les secrets qui expireront dans les 30 prochains jours.

BigQuery

    SELECT * FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      DATE(JSON_VALUE(resource.data, '$.expireTime')) < DATE_ADD(CURRENT_DATE(), INTERVAL 30 DAY);
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les éléments à surveiller

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.expireTime < PD30"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.expireTime < PD30"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.expireTime < PD30"

Secrets régionaux avec un sujet Pub/Sub configuré

Répertoriez tous les secrets pour lesquels au moins un sujet Pub/Sub est configuré.

BigQuery

    SELECT name, ARRAY_LENGTH(JSON_EXTRACT_ARRAY(resource.data, '$.topics')) AS topics_count,
    FROM BIGQUERY_TABLE
    WHERE asset_type='secretmanager.googleapis.com/Secret' AND
      resource.location <> "global" AND
      ARRAY_LENGTH(JSON_EXTRACT_ARRAY(resource.data, '$.topics')) > 0
  

Remplacez BIGQUERY_TABLE par le chemin d'accès complet à la table BigQuery vers laquelle vous avez exporté tous les éléments dans la section Exporter des éléments vers BigQuery de ce document.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet contenant les éléments à surveiller

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID \
    --asset-types='secretmanager.googleapis.com/Secret' \
    --snapshot-time=$NOW \
    --content-type='resource' \
    --filter="resource.location != global AND resource.data.topics != NULL"

Windows (PowerShell)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID `
    --asset-types='secretmanager.googleapis.com/Secret' `
    --snapshot-time=$NOW `
    --content-type='resource' `
    --filter="resource.location != global AND resource.data.topics != NULL"

Windows (cmd.exe)

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset list --project=PROJECT_ID ^
    --asset-types='secretmanager.googleapis.com/Secret' ^
    --snapshot-time=$NOW ^
    --content-type='resource' ^
    --filter="resource.location != global AND resource.data.topics != NULL"

Étape suivante