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
-
En la Google Cloud consola, ve a la página Secret Manager.
-
En la tabla Secretos, haga clic en el campo Filtro.
-
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, comoname ~ "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 filtroname:asecret OR name:bsecret
se codificaría comoname%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, |
AND |
AND lógico.
Un espacio equivale a |
OR |
OR lógico. |
* |
Comodín.
Se puede usar de forma independiente, donde |
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 definefilter
en una solicitud de lista, la respuesta no indica el número total de resultados (total_size=0
en la respuesta).
Siguientes pasos
- Consulta cómo editar secretos.
- Consulta cómo definir una fecha de vencimiento para un secreto.