Filtrar listas de secretos y versiones de secretos

En esta página se explica el proceso de filtrado de 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 tener que desplazarse manualmente por toda la lista. Puedes filtrar por criterios como etiquetas, fechas de creación o patrones específicos en los nombres de los secretos, lo que te permite gestionar grupos de secretos específicos.

En Secret Manager, puedes filtrar secretos y versiones de secretos mediante la opción Filtrar de la consola Google Cloud o especificando criterios de filtro en una llamada a la API. En la interfaz de línea de comandos de Google Cloud, puedes filtrar secretos y versiones de secretos incluyendo una cadena filter al enumerar los secretos.

Filtrar secretos

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

Consola

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

    Ir a Secret Manager

  2. En la tabla Secretos, haga 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 en función de los valores introducidos. Los resultados se ordenan por nombre de forma ascendente.

gcloud

Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

  • FILTER: la cadena de filtro, por ejemplo, name:asecret OR name:bsecret. La CLI de gcloud también admite expresiones regulares, como 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 los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID del proyecto Google Cloud
  • FILTER: la cadena de filtro. Los filtros se especifican como el parámetro de cadena de consulta filter y deben estar codificados como URL. Por ejemplo, el filtro name:asecret OR name:bsecret se codificaría como name%3Aasecret+OR+name%3Absecret. Las expresiones regulares no se admiten en 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 siguiente:

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

Filtrar una versión de secreto

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

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

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

Ejemplos de filtros

Caso práctico Filtro
Secretos cuyo nombre contiene la subcadena mysecret name:mysecret
Secretos con una etiqueta específica labels.environment=production
Secretos creados en un intervalo de fecha y hora 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 gestionada por el usuario, pero que no están almacenados en ninguna de las regiones indicadas 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 periodo de rotación NOT rotation.next_rotation_time:*
Secretos con un periodo de rotación superior a 30 días rotation.rotation_period>259200s
Secretos con fecha de vencimiento definida expire_time:*
Secretos que caducan antes de una fecha expire_time<2021-07-31
Versiones 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 del filtro consta de una expresión en uno o varios campos de los objetos que se van a filtrar.

Puede usar los siguientes operadores de expresión.

Operador Descripción
= Igualdad.
> Mayor que.
< Menor que.
>= Mayor o igual que.
<= Menor o igual que.
!=
-
NOT
Desigualdad. Las siguientes expresiones son equivalentes:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Contención. Se trata de una coincidencia de subcadena que no distingue entre mayúsculas y minúsculas.

Por ejemplo, name:"myapp" filtra los recursos que contienen myapp (sin distinción entre mayúsculas y minúsculas) en el nombre del recurso.

AND

AND lógico.

Un espacio equivale a AND, por lo que las siguientes expresiones son equivalentes:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR OR lógico.
*

Comodín.

Se puede usar de forma independiente, donde field:* indica que field está configurado.

Al igual que en la API Cloud Search, las operaciones OR se evalúan antes que las operaciones AND, a menos que se utilicen paréntesis para definir explícitamente un orden diferente.

Cuando filtre por valores de time, codifique la hora como una cadena en el formato RFC 3399, como 2020-10-15T01:30:15Z.

Para acceder 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 quieres mostrar solo los secretos que tengan la etiqueta color, usa un comodín:

labels.color:*

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

Campos de filtro

Puede filtrar por cualquier campo del objeto Secret o SecretVersion.

Método de lista Enlace a los campos que se pueden filtrar
projects.secrets.list Campos secretos
projects.secrets.versions.list Campos de SecretVersion

Número total de resultados

Si se define filter en una solicitud de lista, la respuesta no indica el número total de resultados (total_size=0 en la respuesta).

Siguientes pasos