Filtrare gli elenchi di secret e versioni dei secret

Questa pagina spiega la procedura di filtro dei secret e delle versioni dei secret in Secret Manager. In ambienti con numerosi secret, il filtro consente di identificare rapidamente secret o versioni specifici senza scorrere manualmente l'intero elenco. Puoi filtrare in base a criteri come etichette, date di creazione o pattern specifici all'interno dei nomi dei secret, consentendo una gestione mirata di gruppi specifici di secret.

In Secret Manager, puoi filtrare i secret e le relative versioni utilizzando l'opzione Filtra nella console Google Cloud o specificando i criteri di filtro all'interno di una chiamata API. In Google Cloud CLI, puoi filtrare i secret e le versioni dei secret includendo una stringa filter quando elenchi i secret.

Filtrare i secret

Per filtrare un secret, utilizza uno dei seguenti metodi:

Console

  1. Nella console Google Cloud , vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Nella tabella Secrets (Secret), fai clic sul campo Filter (Filtro).

  3. Scegli una proprietà filtro e il relativo valore, ad esempio Location:asia-east1.

    La tabella viene filtrata automaticamente in base ai valori inseriti. I risultati sono ordinati per nome in ordine crescente.

gcloud

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • FILTER: la stringa di filtro, ad esempio name:asecret OR name:bsecret. gcloud CLI supporta anche le espressioni regolari, ad esempio name ~ "secret_ab.*".

Esegui questo 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

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto Google Cloud
  • FILTER: la stringa di filtro. I filtri vengono specificati come parametro della stringa di query filter e devono essere codificati nell'URL. Ad esempio, il filtro name:asecret OR name:bsecret verrebbe codificato nell'URL come name%3Aasecret+OR+name%3Absecret. Le espressioni regolari non sono supportate nell'API.

Metodo HTTP e URL:

GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER

Corpo JSON della richiesta:

{}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente:

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

Filtrare una versione del secret

Per filtrare una versione del secret:

  • Nella console Google Cloud , seleziona un secret per accedere alle relative versioni, quindi utilizza l'opzione Filtro nella tabella Versioni.

  • Se utilizzi Google Cloud CLI o l'API Secret Manager, includi una stringa filter quando elenchi le versioni dei secret.

Esempi di filtri

Caso d'uso Filtro
Secret il cui nome contiene la sottostringa mysecret name:mysecret
Secret con un'etichetta specifica labels.environment=production
Secret creati nell'intervallo di data/ora 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 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 che vengono filtrati.

Puoi utilizzare i seguenti operatori di espressione.

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

Contenimento. Si tratta di una corrispondenza di sottostringa che non distingue 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

AND logico.

Uno spazio equivale a AND, quindi i seguenti sono equivalenti:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR OR logico.
*

Carattere jolly.

Può essere utilizzato come valore autonomo in cui field:* indica che field è impostato.

In linea con l'API Cloud Search, le operazioni OR vengono valutate prima delle operazioni AND a meno che non vengano utilizzate le parentesi per definire esplicitamente un ordine diverso.

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 campo secondario, utilizza la sintassi con il punto. 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 segreti con l'etichetta color impostata, utilizza un carattere jolly:

labels.color:*

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

Campi filtro

Puoi applicare un filtro a qualsiasi campo dell'oggetto Secret o SecretVersion.

Metodo di elenco Link ai campi filtrabili
projects.secrets.list Campi secret
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