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