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, |
AND |
Logika AND.
Spasi setara dengan |
OR |
Logika OR. |
* |
Karakter pengganti.
Dapat digunakan sebagai mandiri dengan |
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
- Pelajari cara mengedit secret.
- Pelajari cara menetapkan tanggal habis masa berlaku untuk secret.