Filtrare gli elenchi di secret e versioni dei secret

Questo argomento illustra il supporto per l'applicazione di filtri nel seguente elenco di risorse chiamate in Secret Manager:

Utilizzo

L'intento di filtro in un'operazione list è indicato dalla presenza dell'elemento filter nel campo stringa nel corpo della richiesta di 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 corrispondente a questi secret. I risultati vengono ordinati per nome in ordine crescente.

gcloud

I filtri vengono specificati utilizzando il flag --filter. Se il filtro contiene un parametro uno spazio o un altro carattere speciale, devono essere racchiusi tra virgolette.

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

Google Cloud CLI supporta anche 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 stampa-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

I filtri sono specificati come parametro della stringa di query filter e devono essere Codificato come URL. Ad esempio, il filtro name:asecret OR name:bsecret avere la codifica URL 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 entro l'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:*
Secret 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 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:*
Secret in scadenza 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 consiste in un'espressione su uno o più campi degli oggetti essere filtrati.

Puoi utilizzare i seguenti operatori di espressione.

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

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

Ad esempio, name:"myapp" filtra in base alle risorse che contiene myapp (senza distinzione tra maiuscole e minuscole) nel nome della risorsa.

AND

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 usato come autonomo, se field:* indica che field impostato.

In modo coerente con l'API Cloud Search, OR ha la precedenza su AND per impostazione predefinita. È possibile utilizzare le parentesi per indicare la priorità dell'operazione desiderata.

Quando filtri i valori time, codifica l'ora come stringa nel RFC 3399 come 2020-10-15T01:30:15Z.

Quando accedi a un sottocampo, utilizza la sintassi dot. 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 come segue:

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 e i relativi valori.

Filtra campi

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

Metodo elenco Link ai campi filtrabili
projects.secrets.list Campi con dati sensibili
projects.secrets.versions.list Campi SecretVersion

Conteggio totale dei risultati

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

Passaggi successivi