Memfilter daftar secret dan versi secret

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

Penggunaan

Memfilter intent dalam operasi list ditunjukkan dengan adanya kolom string filter dalam isi permintaan daftar. API ini menggunakan bahasa sederhana untuk merujuk ke kolom dalam objek yang sedang difilter.

Pada contoh berikut, anggaplah suatu subset secret berisi substring "asecret" atau "bsecret". Tentukan filter yang cocok dengan rahasia ini. Hasilnya diurutkan berdasarkan nama dalam urutan menaik.

gcloud

Filter ditentukan menggunakan tanda --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 mendemonstrasikan 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 string kueri filter dan harus dienkode ke 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"

Regex tidak didukung di API.

Contoh

Skenario Filter
Secret yang namanya berisi substring "mysecret" name:mysecret
Rahasia dengan label tertentu labels.environment=production
Rahasia 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:*
Rahasia dengan replikasi yang dikelola pengguna, tetapi tidak disimpan di region tertentu replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1)
Rahasia yang dienkripsi dengan kunci CMEK replication.user_managed.replicas.customerManagedEncryption:*
Rahasia yang dienkripsi dengan kunci CMEK tertentu replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key
Rahasia tanpa periode rotasi NOT rotation.next_rotation_time:*
Rahasia dengan periode rotasi > 30 hari rotation.rotation_period>259200s
Rahasia dengan tanggal habis masa berlaku ditetapkan expire_time:*
Masa berlaku rahasia berakhir 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 dari.
< Kurang dari.
>= Lebih dari atau sama dengan.
<= Kurang dari atau sama dengan.
!=
-
NOT
Ketidaksetaraan. Parameter berikut setara:
name!="topsecret"
-name="topsecret"
NOT name="topsecret"
:

{i>Containment<i} (Pembatasan). Ini adalah pencocokan substring yang tidak peka huruf besar/kecil.

Sebagai contoh, 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 telah ditetapkan.

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

Saat memfilter nilai time, enkode 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 nilai kunci map. Jika label color digunakan, Anda dapat memfilter hasil Secret di subkolom labels.color sebagai berikut:

labels.color=red

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

labels.color:*

String yang dikutip ditafsirkan sebagai nilai tunggal, bukan urutan nilai.

Filter kolom

Anda dapat memfilter kolom objek Secret atau SecretVersion.

Metode daftar Link ke kolom yang dapat difilter
projects.secrets.list Kolom rahasia
projects.secrets.versions.list Kolom SecretVersion

Jumlah total hasil

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

Langkah selanjutnya