Filtra listas de secretos y versiones de secretos

En esta página, se explica el proceso de filtrar secretos y versiones de secretos en Secret Manager. En entornos con muchos secretos, el filtrado ayuda a identificar rápidamente secretos o versiones específicos sin desplazarse manualmente por toda la lista. Puedes filtrar según criterios como etiquetas, fechas de creación o patrones específicos dentro de los nombres de secretos, lo que permite una administración enfocada de grupos específicos de secretos.

En Secret Manager, puedes filtrar secretos y versiones de secretos con la opción Filtrar en la consola de Google Cloud o especificando criterios de filtro dentro de una llamada a la API. En Google Cloud CLI, puedes filtrar secretos y versiones de secretos si incluyes una cadena filter cuando enumeras secretos.

Filtra secretos

Para filtrar un secreto, usa uno de los siguientes métodos:

Console

  1. En la consola de Google Cloud, ve a la página Secret Manager.

    Ir a Secret Manager

  2. En la tabla Secretos, haz clic en el campo Filtro.

  3. Elige una propiedad de filtro y su valor correspondiente, por ejemplo, Location:asia-east1.

    La tabla se filtra automáticamente según los valores ingresados. Los resultados se ordenan por nombre en orden ascendente.

gcloud

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

  • FILTER: Es la cadena de filtro, por ejemplo, name:asecret OR name:bsecret. La CLI de gcloud también admite expresiones regulares, por ejemplo, name ~ "secret_ab.*".

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud secrets list --filter="FILTER"

Windows (PowerShell)

gcloud secrets list --filter="FILTER"

Windows (cmd.exe)

gcloud secrets list --filter="FILTER"

REST

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

  • PROJECT_ID: El Google Cloud ID del proyecto
  • FILTER: Es la cadena de filtro. Los filtros se especifican como el parámetro de cadena de consulta filter y se deben codificar como URL. Por ejemplo, el filtro name:asecret OR name:bsecret se codificaría como URL como name%3Aasecret+OR+name%3Absecret. Las expresiones regulares no son compatibles con la API.

Método HTTP y URL:

GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER

Cuerpo JSON de la solicitud:

{}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "secrets": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
      "createTime": "2024-09-02T07:14:00.281541Z",
      "etag": "\"16211dd90b37e7\""
    }
  ]
}

Cómo filtrar una versión del Secret

Para filtrar una versión de un Secret, haz lo siguiente:

  • En la consola de Google Cloud, selecciona un secreto para acceder a sus versiones y, luego, usa la opción Filtrar en la tabla Versiones.

  • Si usas Google Cloud CLI o la API de Secret Manager, incluye una cadena filter cuando enumeres las versiones de secretos.

Ejemplos de filtros

Caso de uso Filtro
Secretos cuyo nombre contiene la substring mysecret name:mysecret
Secretos con una etiqueta específica labels.environment=production
Secretos creados en un intervalo de tiempo o una fecha create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
Secretos con replicación automática replication.automatic:*
Secretos con replicación administrada por el usuario, pero no almacenados en ninguna de las regiones determinadas replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Secretos encriptados con claves CMEK replication.user_managed.replicas.customerManagedEncryption:*
Secretos encriptados con una clave CMEK específica replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Secretos sin un período de rotación NOT rotation.next_rotation_time:*
Secretos con un período de rotación > 30d rotation.rotation_period>259200s
Secretos con vencimiento establecido expire_time:*
Secretos que vencen antes de una fecha expire_time<2021-07-31
Versiones que están habilitadas o inhabilitadas state:(ENABLED OR DISABLED)
Versiones destruidas, destruidas después de la fecha state:DESTROYED AND destroy_time>2021-01-01

Sintaxis de filtro

La sintaxis de filtro consiste en una expresión de uno o más campos del objeto que se filtra.

Puedes usar los siguientes operadores de expresión.

Operador Descripción
= Igualdad
> Superior a
< Inferior a
>= Superior o igual a
<= Inferior o igual a
!=
-
NOT
Desigualdad Los siguientes son equivalentes:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Contención. Esta es una coincidencia de substring con distinción entre mayúsculas y minúsculas.

Por ejemplo, name:"myapp" filtra en los recursos que contienen myapp (no distingue mayúsculas de minúsculas) en el nombre del recurso.

AND

AND lógico.

Un espacio es equivalente a AND, por lo que los siguientes son equivalentes:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR Lógica OR.
*

Comodín.

Se puede usar como un archivo independiente en el que field:* indica que está configurado field.

De acuerdo con la API de Cloud Search, las operaciones OR se evalúan antes que las operaciones AND, a menos que se usen paréntesis para definir explícitamente un orden diferente.

Cuando filtras valores time, codifica la hora como una string en el formato RFC 3399, como 2020-10-15T01:30:15Z.

Cuando accedas a un subcampo, usa la sintaxis de punto. Por ejemplo, el recurso Secret puede incluir el campo labels cuyo valor es un par clave-valor map. Si se usa una etiqueta color, puedes filtrar los resultados de Secret en el subcampo labels.color de la siguiente manera:

labels.color=red

Si deseas enumerar solo los secretos con el conjunto de etiquetas color, usa un comodín:

labels.color:*

Una string entre comillas se interpreta como un valor único en lugar de como una secuencia de valores.

Filtra campos

Puedes filtrar en cualquier campo de objeto Secret o SecretVersion.

Método de lista Vínculo a los campos filtrables
projects.secrets.list Campos secretos
projects.secrets.versions.list Campos SecretVersion

Recuento total de resultados

Si filter se establece en una solicitud de lista, la respuesta no indica el recuento total de resultados (total_size=0 en la respuesta).

¿Qué sigue?