Listen von Secrets und Secret-Versionen filtern

In diesem Thema wird die Unterstützung für das Filtern in den folgenden Aufrufen zur Ressourcenauflistung in Secret Manager erläutert:

Nutzung

Wenn ein Intent in einem list-Vorgang gefiltert wird, ist im Listenanfragetext das Stringfeld filter vorhanden. Die API verwendet eine einfache Sprache, um auf die Felder in dem Objekt zu verweisen, das gefiltert wird.

In den folgenden Beispielen wird davon ausgegangen, dass eine Teilmenge von Secrets entweder den Teilstring "asecret" oder "bsecret" enthält. Geben Sie einen Filter an, der diesen Secrets entspricht. Die Ergebnisse werden in aufsteigender Reihenfolge nach Name sortiert.

gcloud

Filter werden mit dem Flag --filter angegeben. Wenn der Filter ein Leerzeichen oder ein anderes Sonderzeichen enthält, müssen Sie dieses in Anführungszeichen setzen.

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

Die Google Cloud CLI unterstützt auch reguläre Ausdrücke (Regex), z. B.:

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

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

Filter werden als filter-Abfragestringparameter angegeben und müssen URL-codiert sein. Der Filter name:asecret OR name:bsecret wäre beispielsweise als name%3Aasecret+OR+name%3Absecret URL-codiert.

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

Regex wird in der API nicht unterstützt.

Beispiele

Szenario Filtern
Secrets, deren Name den Teilstring "mysecret" enthält name:mysecret
Secrets mit einem bestimmten Label labels.environment=production
Secrets, die innerhalb des Datums-/Zeitbereichs erstellt wurden create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
Secrets mit automatischer Replikation replication.automatic:*
Secrets mit vom Nutzer verwalteter Replikation, die aber in keiner der angegebenen Regionen gespeichert sind replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Mit CMEK-Schlüsseln verschlüsselte Secrets replication.user_managed.replicas.customerManagedEncryption:*
Secrets, die mit einem bestimmten CMEK-Schlüssel verschlüsselt wurden replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Secrets ohne Rotationszeitraum NOT rotation.next_rotation_time:*
Secrets mit einem Rotationszeitraum > 30 d rotation.rotation_period>259200s
Secrets mit festgelegtem Ablauf expire_time:*
Secrets, die vor einem Datum ablaufen expire_time<2021-07-31>
Aktivierte oder deaktivierte Versionen state:(ENABLED OR DISABLED)
Nach dem Datum gelöschte Versionen state:DESTROYED AND destroy_time>2021-01-01

Filtersyntax

Die Filtersyntax besteht aus einem Ausdruck für ein oder mehrere Felder der zu filternden Objekte.

Sie können die folgenden Operatoren verwenden.

Operator Beschreibung
= Gleich.
> Größer als.
< Kleiner als.
>= Größer als oder gleich.
<= Kleiner als oder gleich.
!=
-
NOT
Ungleich. Folgendes ist äquivalent:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Eingrenzung. Dies ist ein Teilstring-Abgleich, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird.

Beispielsweise filtert name:"myapp" nach Ressourcen, deren Ressourcenname myapp enthält (ohne Berücksichtigung der Groß-/Kleinschreibung).

AND

Logisches UND.

Ein Leerzeichen ist gleichbedeutend mit AND. Daher ist Folgendes äquivalent:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR Logisches ODER.
*

Platzhalter.

Kann eigenständig verwendet werden, wobei field:* angibt, dass field festgelegt ist.

In Übereinstimmung mit der Cloud Search API hat OR standardmäßig Vorrang vor AND. Klammern können verwendet werden, um die gewünschte Vorgangspriorität anzugeben.

Wenn nach time-Werten gefiltert wird, codieren Sie die Zeit als einen String im RFC 3399-Format. Beispiel: 2020-10-15T01:30:15Z

Verwenden Sie für den Zugriff auf ein untergeordnetes Feld die Punktsyntax. Die Ressource Secret kann beispielsweise das Feld labels enthalten, dessen Wert ein Schlüssel/Wert-Paar map ist. Wenn ein color-Label verwendet wird, können Sie Secret-Ergebnisse so nach dem Unterfeld labels.color filtern:

labels.color=red

Wenn Sie nur Secrets mit dem Label color auflisten möchten, verwenden Sie einen Platzhalter:

labels.color:*

Ein String in Anführungszeichen wird als einzelner Wert und nicht als Folge von Werten interpretiert.

Felder filtern

Sie können nach einem beliebigen Feld des Objekts Secret oder SecretVersion filtern.

List-Methode Link zu filterbaren Feldern
projects.secrets.list Secret-Felder
projects.secrets.versions.list SecretVersion-Felder

Gesamtzahl der Ergebnisse

Wenn filter in einer Auflistungsanfrage festgelegt ist, gibt die Antwort nicht die Gesamtzahl der Ergebnisse (total_size=0 in der Antwort) an.

Nächste Schritte