Filtrare gli elenchi di secret e versioni dei secret

Questo argomento illustra il supporto per l'applicazione di filtri nelle seguenti chiamate di elencazione delle risorse in Secret Manager:

Utilizzo

L'intent di filtro in un'operazione list è indicato dalla presenza del campo di stringa filter nel corpo della richiesta dell'elenco. L'API utilizza un linguaggio semplice per fare riferimento ai campi dell'oggetto sottoposto a filtro.

Nei seguenti esempi, supponiamo che un sottoinsieme di secret contenga la sottostringa "asecret" o "bsecret". Specifica un filtro che corrisponda a questi secret. I risultati sono ordinati per nome in ordine crescente.

gcloud

I filtri vengono specificati utilizzando il flag --filter. Se il filtro contiene uno spazio o un altro carattere speciale, devi racchiuderlo tra virgolette.

gcloud secrets list --filter="name:asecret OR name:bsecret"

Google Cloud CLI supporta anche le espressioni regolari (regex), ad esempio:

gcloud secrets list --filter='name ~ "secret_ab.*"'

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

I filtri vengono specificati come parametro filter querystring e devono essere codificati in URL. Ad esempio, il filtro name:asecret OR name:bsecret viene codificato per l'URL come name%3Aasecret+OR+name%3Absecret.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" \
    --request "GET" \
    --header "Authorization: Bearer ACCESS_TOKEN"

Le espressioni regolari non sono supportate nell'API.

Esempi

Scenario Filtro
Secret il cui nome contiene la sottostringa "mysecret" name:mysecret
Secret con un'etichetta specifica labels.environment=production
Secret creati nell'intervallo di date/ore create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
Secret con replica automatica replication.automatic:*
Secret con replica gestita dall'utente, ma non archiviati in nessuna delle regioni specificate replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Secret criptati con chiavi CMEK replication.user_managed.replicas.customerManagedEncryption:*
Segreti criptati con una chiave CMEK specifica replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Secret senza un periodo di rotazione NOT rotation.next_rotation_time:*
Secret con un periodo di rotazione > 30 giorni rotation.rotation_period>259200s
Secret con scadenza impostata expire_time:*
Segreti che scadono prima di una data expire_time<2021-07-31
Versioni attivate o disattivate state:(ENABLED OR DISABLED)
Versioni eliminate, eliminate dopo la data state:DESTROYED AND destroy_time>2021-01-01

Sintassi filtro

La sintassi del filtro è costituita da un'espressione su uno o più campi degli oggetti sottoposti a filtri.

Puoi utilizzare i seguenti operatori di espressione.

Operatore Descrizione
= Uguaglianza.
> Maggiore di.
< Minore di.
>= Maggiore o uguale a.
<= Minore o uguale a.
!=
-
NOT
Diseguaglianza. I seguenti valori sono equivalenti:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Contenimento. Si tratta di una corrispondenza di sottostringa senza distinzione tra maiuscole e minuscole.

Ad esempio, name:"myapp" filtra le risorse che contengono myapp (senza distinzione tra maiuscole e minuscole) nel nome della risorsa.

AND

Operatore AND logico.

Uno spazio è equivalente a AND, quindi quanto segue è equivalente:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR OR logico.
*

Carattere jolly.

Può essere utilizzato come autonomo se field:* indica che è impostato field.

In linea con l'API Cloud Search, OR ha la precedenza su AND per impostazione predefinita. Le parentesi possono essere utilizzate per indicare la priorità dell'operazione desiderata.

Quando filtri in base ai valori time, codifica l'ora come stringa nel formato RFC 3399, ad esempio 2020-10-15T01:30:15Z.

Quando accedi a un sottocampo, utilizza la sintassi dei punti. Ad esempio, la risorsa Secret può includere il campo labels il cui valore è una coppia chiave-valore map. Se viene utilizzata un'etichetta color, puoi filtrare i risultati Secret nel sottocampo labels.color nel seguente modo:

labels.color=red

Se vuoi elencare solo i secret con l'etichetta color impostata, utilizza un carattere jolly:

labels.color:*

Una stringa tra virgolette viene interpretata come un singolo valore anziché come una sequenza di valori.

Campi filtro

Puoi filtrare in base a qualsiasi campo dell'oggetto Secret o SecretVersion.

Metodo di elenco Link ai campi filtrabili
projects.secrets.list Campi segreti
projects.secrets.versions.list Campi SecretVersion

Conteggio dei risultati totali

Se filter è impostato in una richiesta di elenco, la risposta non indica il numero totale di risultati (total_size=0 nella risposta).

Passaggi successivi