Memfilter daftar secret dan versi secret

Topik ini membahas dukungan untuk pemfilteran dalam panggilan listingan resource berikut di Secret Manager:

Penggunaan

Intent pemfilteran dalam operasi list ditunjukkan dengan adanya kolom string filter dalam isi permintaan daftar. API menggunakan bahasa sederhana untuk merujuk ke kolom dalam objek yang difilter.

Dalam contoh berikut, mari kita asumsikan bahwa sebagian secret berisi substring "asecret" atau "bsecret". Tentukan filter yang cocok dengan secret ini. Hasil diurutkan menurut nama dalam urutan menaik.

gcloud

Filter ditentukan menggunakan flag --filter. Jika filter berisi spasi atau karakter khusus lainnya, Anda harus mengapitnya dalam tanda kutip.

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

Google Cloud CLI juga mendukung ekspresi reguler (regex), misalnya:

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

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

Filter ditentukan sebagai parameter kueri string filter dan harus dienkode URL. Misalnya, filter name:asecret OR name:bsecret akan dienkode ke URL sebagai name%3Aasecret+OR+name%3Absecret.

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

Ekspresi reguler tidak didukung di API.

Contoh

Skenario Filter
Secret yang namanya berisi substring "mysecret" name:mysecret
Secret dengan label tertentu labels.environment=production
Secret yang dibuat dalam rentang tanggal/waktu create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z
Secret dengan replikasi otomatis replication.automatic:*
Secret dengan replikasi yang dikelola pengguna, tetapi tidak disimpan di salah satu region yang ditentukan replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Secret yang dienkripsi dengan kunci CMEK replication.user_managed.replicas.customerManagedEncryption:*
Secret yang dienkripsi dengan kunci CMEK tertentu replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Secret tanpa periode rotasi NOT rotation.next_rotation_time:*
Secret dengan periode rotasi > 30 hari rotation.rotation_period>259200s
Secret dengan masa berlaku yang ditetapkan expire_time:*
Secret yang masa berlakunya habis sebelum tanggal tertentu expire_time<2021-07-31
Versi yang diaktifkan atau dinonaktifkan state:(ENABLED OR DISABLED)
Versi yang dihancurkan, dihancurkan setelah tanggal state:DESTROYED AND destroy_time>2021-01-01

Filter sintaksis

Sintaksis filter terdiri dari ekspresi pada satu atau beberapa kolom objek yang difilter.

Anda dapat menggunakan operator ekspresi berikut.

Operator Deskripsi
= Kesetaraan.
> Lebih besar dari.
< Kurang dari.
>= Lebih dari atau sama dengan.
<= Kurang dari atau sama dengan.
!=
-
NOT
Ketidaksetaraan. Berikut ini setara:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

Pembatasan. Ini adalah pencocokan substring yang tidak peka huruf besar/kecil.

Misalnya, name:"myapp" memfilter resource yang berisi myapp (tidak peka huruf besar/kecil) dalam nama resource.

AND

Logika AND.

Spasi setara dengan AND, sehingga hal berikut setara:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR Logika OR.
*

Karakter pengganti.

Dapat digunakan sebagai mandiri dengan field:* menunjukkan bahwa field ditetapkan.

Secara konsisten dengan Cloud Search API, OR lebih diutamakan daripada AND secara default. Tanda kurung dapat digunakan untuk menunjukkan prioritas operasi yang diinginkan.

Saat memfilter nilai time, encode waktu sebagai string dalam format RFC 3399, seperti 2020-10-15T01:30:15Z.

Saat mengakses subkolom, gunakan sintaksis titik. Misalnya, resource Secret dapat menyertakan kolom labels yang nilainya adalah map nilai kunci. Jika label color digunakan, Anda dapat memfilter hasil Secret di subkolom labels.color sebagai berikut:

labels.color=red

Jika Anda hanya ingin mencantumkan secret dengan label color yang ditetapkan, gunakan karakter pengganti:

labels.color:*

String yang diapit tanda kutip ditafsirkan sebagai satu nilai, bukan urutan nilai.

Kolom filter

Anda dapat memfilter kolom apa pun dari objek Secret atau SecretVersion.

Metode daftar Menautkan ke kolom yang dapat difilter
projects.secrets.list Kolom secret
projects.secrets.versions.list Kolom SecretVersion

Total jumlah hasil

Jika filter ditetapkan dalam permintaan daftar, respons tidak menunjukkan jumlah hasil total (total_size=0 dalam respons).

Langkah selanjutnya