Analiza secretos regionales con Cloud Asset Inventory

En esta página, se explica cómo usar Cloud Asset Inventory para supervisar tus secretos, exportar datos para el análisis y ejecutar consultas potentes para obtener las estadísticas que necesitas.

Descripción general

Cloud Asset Inventory analiza tu entorno de Google Cloud y registra cualquier cambio en tus recursos de la nube, como máquinas virtuales, bases de datos, buckets de almacenamiento y, en este contexto, los secretos de Secret Manager. La integración entre Secret Manager y Cloud Asset Inventory te ayuda a hacer lo siguiente:

  • Ejecutar consultas: Busca secretos específicos o identifica patrones en tus secretos.

  • Configura alertas: Configura Cloud Asset Inventory para que envíe notificaciones a Pub/Sub cuando ocurran eventos específicos, como cuando se creen, modifiquen o borren secretos.

  • Exporta datos: Exporta tu inventario secreto a BigQuery para generar informes y realizar análisis detallados.

  • Administra y analiza tus secretos: Consulta todos tus secretos en un solo lugar (en todos los proyectos y en toda tu organización) y, luego, identifica los que podrían estar mal configurados o que infrinjan las políticas de seguridad de tu organización. Por ejemplo, puedes encontrar secretos que no se rotan con regularidad o que carecen de controles de acceso adecuados.

Esta es una tarea avanzada para los usuarios de Secret Manager. Antes de leer esta página, te recomendamos que leas lo siguiente:

Cómo consultar Secret Manager

Para analizar tus secretos con consultas similares a las de SQL, te recomendamos que exportes tus secretos y versiones de secretos a BigQuery. Secret Manager no está integrado en Busca recursos ni en el Analizador de políticas. Estas consultas usan Google Cloud CLI y BigQuery para buscar tus recursos.

Limitaciones

El uso de Cloud Asset Inventory para analizar los recursos de Secret Manager tiene la siguiente limitación:

  • Cloud Asset Inventory es compatible con la exportación y la enumeración de instantáneas solo de las últimas cinco semanas.

Supervisa los cambios en los recursos

Cloud Asset Inventory realiza un seguimiento de las actualizaciones en tiempo real y admite la supervisión de estos cambios. Puedes configurar feeds para enviar notificaciones a un conjunto de temas de Pub/Sub configurados cada vez que haya una modificación en tus recursos. Además, Cloud Asset Inventory es compatible con la configuración de condiciones en tus feeds para que puedas supervisar cambios específicos en ciertos tipos de recursos. Si deseas obtener información para activar flujos de trabajo en los cambios de recursos, consulta la documentación de Pub/Sub.

Exportar elementos a BigQuery

Exportar tus secretos y versiones de secretos a BigQuery te permite ejecutar consultas similares a las de SQL sobre grandes cantidades de datos y producir estadísticas significativas sobre tus recursos. Antes de exportar tus recursos, asegúrate de que tus cuentas de servicio y conjunto de datos estén configuradas de forma correcta.

Para exportar tus recursos, ejecuta el siguiente comando:

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • CONTENT_TYPE: Es el tipo de contenido del activo (RESOURCE).
  • PROJECT_ID: Es el ID del proyecto que contiene los secretos que se analizarán.
  • SNAPSHOT_TIME: Es la hora en la que se toman las instantáneas de los recursos. Puede ser entre la hora actual y las 5 semanas anteriores.
  • BIGQUERY_PROJECT_ID: Es el ID del proyecto en el que se encuentra la tabla de BigQuery.
  • DATASET_ID: el ID del conjunto de datos de BigQuery.
  • TABLE_NAME: Es la tabla a la que exportarás tus metadatos. Si no existe, se creará.

Ejecuta el siguiente comando:

Linux, macOS o 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

Para obtener más información, consulta Exporta a BigQuery.

Consultas de muestra

Usa estas consultas de muestra para encontrar secretos y versiones de secretos con propiedades específicas.

Secretos regionales creados en las últimas dos semanas

Busca secretos (y sus propiedades) que se agregaron a tu organización en las últimas dos semanas.

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);
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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 regionales en una ubicación específica

Encuentra todos los secretos almacenados en una ubicación específica, como us-central1.

BigQuery

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

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto que contiene los secretos que se analizarán.
  • LOCATION: La ubicación de Google Cloud de los secretos

Ejecuta el siguiente comando:

Linux, macOS o 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"

Versiones de Secrets regionales creadas hace más de 180 días

Enumera todas las versiones de los secretos que se crearon hace más de 180 días.

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";
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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 regionales sin CMEK configurados

Enumera todos los secretos que no están encriptados con claves de encriptación de administrador del cliente (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;
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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 regionales con CMEK configurado

Enumera todos los secretos que se encriptan con 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;
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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"

Secretos regionales encriptados con una CMEK específica

Busca secretos que estén encriptados con una CMEK específica.

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;
  

Reemplaza lo siguiente:

  • BIGQUERY_TABLE: Es la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Cómo exportar recursos a BigQuery de este documento.

  • KMS_KEY_NAME: El ID de la clave o el identificador completamente calificado de la clave

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto que contiene los secretos que se analizarán.
  • KMS_KEY_NAME: El ID de la clave o el identificador completamente calificado de la clave

Ejecuta el siguiente comando:

Linux, macOS o 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"

Versiones de secretos regionales sin CMEK configuradas

Busca todas las versiones de secretos habilitadas que no estén encriptadas con 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";
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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"

Versiones de secretos regionales encriptadas con una CMEK específica

Enumera todas las versiones de secretos habilitadas que se encriptaron con una versión de CMEK específica.

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";
  

Reemplaza lo siguiente:

  • BIGQUERY_TABLE: Es la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Cómo exportar recursos a BigQuery de este documento.

  • KMS_KEY_VERSION_NAME: El número de versión de la clave de Cloud Key Management Service

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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 regionales sin rotación configurada

Busca todos los secretos que no tengan un programa de rotación.

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;
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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"

Secretos regionales con un período de rotación específico

Busca todos los secretos programados para rotar menos de una vez cada 90 días:

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)
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Cómo exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los secretos que se analizarán

Ejecuta el siguiente comando:

Linux, macOS o 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 regionales que vencerán en los próximos 30 días

Enumera los secretos que vencerán en los próximos 30 días.

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);
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los recursos que se deben supervisar

Ejecuta el siguiente comando:

Linux, macOS o 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"

Secretos regionales con un tema de Pub/Sub configurado

Enumera todos los secretos que tengan al menos un tema de Pub/Sub configurado.

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
  

Reemplaza BIGQUERY_TABLE por la ruta de acceso completa a la tabla de BigQuery a la que exportaste todos los recursos en la sección Exportar recursos a BigQuery de este documento.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto que contiene los recursos que se deben supervisar

Ejecuta el siguiente comando:

Linux, macOS o 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"

¿Qué sigue?