En este tema se analiza la compatibilidad con el filtrado en las siguientes llamadas de listado de recursos en Secret Manager:
Uso
El filtrado de intents en una operación list
se indica mediante la presencia de filter
.
string en el cuerpo de la solicitud de lista. La API usa un lenguaje simple para referirse a los campos en el objeto que se filtra.
En los siguientes ejemplos, supongamos que un subconjunto de Secrets contiene “asecreto” o “bsecret” o la subcadena. Especifica un filtro que coincida con estos secretos. Los resultados se ordenan por nombre en orden ascendente.
gcloud
Los filtros se especifican con la marca --filter
. Si el filtro contiene un espacio o algún otro carácter especial, debes encerrarlo entre comillas.
gcloud secrets list --filter="name:asecret OR name:bsecret"
Google Cloud CLI también admite expresiones regulares (regex), por ejemplo:
gcloud secrets list --filter='name ~ "secret_ab.*"'
API
En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Los filtros se especifican como el parámetro de string 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
.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" \
--request "GET" \
--header "Authorization: Bearer ACCESS_TOKEN"
La regex no es compatible con la API.
Ejemplos
Situación | 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, |
AND |
AND lógico.
Un espacio es equivalente a |
OR |
Lógica OR. |
* |
Comodín.
Se puede usar como un archivo independiente en el que |
De manera coherente con la API de Cloud Search, OR
tiene prioridad sobre AND
de forma predeterminada.
Los paréntesis se pueden usar para indicar la prioridad de operación deseada.
Cuando filtres según valores time
, codifica la hora como una cadena en el
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?
- Obtén más información para editar secretos.
- Obtén más información para configurar la fecha de vencimiento de un secreto.