בדף הזה מוסבר תהליך הסינון של סודות וגרסאות של סודות ב-Secret Manager. בסביבות עם סודות רבים, סינון עוזר לזהות במהירות סודות או גרסאות ספציפיים בלי לגלול ידנית בכל הרשימה. אפשר לסנן לפי קריטריונים כמו תוויות, תאריכי יצירה או דפוסים ספציפיים בשמות של סודות, וכך לנהל בצורה ממוקדת קבוצות ספציפיות של סודות.
ב-Secret Manager, אפשר לסנן סודות וגרסאות של סודות באמצעות האפשרות Filter במסוף Google Cloud , או על ידי ציון קריטריוני סינון בקריאה ל-API. ב-Google Cloud CLI, אפשר לסנן סודות וגרסאות של סודות על ידי הוספת מחרוזת filter כשמציגים את רשימת הסודות.
סינון סודות
כדי לסנן סוד, משתמשים באחת מהשיטות הבאות:
המסוף
-
נכנסים לדף Secret Manager במסוף Google Cloud .
-
בטבלה Secrets (סודות), לוחצים על השדה Filter (מסנן).
-
בוחרים מאפיין של מסנן ואת הערך המתאים לו, לדוגמה
Location:asia-east1.הטבלה מסוננת אוטומטית על סמך הערכים שהוזנו. התוצאות ממוינות לפי שם בסדר עולה.
gcloud
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- FILTER: מחרוזת המסנן, לדוגמה
name:asecret OR name:bsecret. ב-CLI של gcloud יש גם תמיכה בביטויים רגולריים, למשלname ~ "secret_ab.*".
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets list --filter="FILTER"
Windows (PowerShell)
gcloud secrets list --filter="FILTER"
Windows (cmd.exe)
gcloud secrets list --filter="FILTER"
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- FILTER: מחרוזת הסינון. המסננים מוגדרים כפרמטר של מחרוזת השאילתה
filterוחייבים להיות מקודדים בכתובת ה-URL. לדוגמה, המסנןname:asecret OR name:bsecretיקודד לכתובת URL כ-name%3Aasecret+OR+name%3Absecret. אין תמיכה בביטויים רגולריים ב-API.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER
גוף בקשת JSON:
{}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"secrets": [
{
"name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
"createTime": "2024-09-02T07:14:00.281541Z",
"etag": "\"16211dd90b37e7\""
}
]
}
סינון גרסה של סוד
כדי לסנן גרסה של סוד:
-
במסוף Google Cloud , בוחרים סוד כדי לגשת לגרסאות שלו, ואז משתמשים באפשרות Filter בטבלה Versions.
-
אם אתם משתמשים ב-Google Cloud CLI או ב-Secret Manager API, צריך לכלול מחרוזת
filterכשמציגים רשימה של גרסאות סודות.
דוגמאות למסננים
| תרחיש שימוש | מסנן |
|---|---|
סודות שהשם שלהם מכיל את מחרוזת המשנה mysecret |
name:mysecret |
| סודות עם תווית ספציפית | labels.environment=production |
| סודות שנוצרו בטווח תאריכים/שעות | create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T01:00:00Z |
| סודות עם שכפול אוטומטי | replication.automatic:* |
| סודות עם שכפול בניהול המשתמש, אבל לא מאוחסנים באף אחד מהאזורים שצוינו | replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1) |
| סודות שמוצפנים באמצעות מפתחות CMEK | replication.user_managed.replicas.customerManagedEncryption:* |
| סודות שמוצפנים באמצעות מפתח CMEK ספציפי | replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key |
| סודות ללא תקופת רוטציה | NOT rotation.next_rotation_time:* |
| סודות עם תקופת רוטציה של יותר מ-30 ימים | rotation.rotation_period>259200s |
| סודות עם תפוגה מוגדרת | expire_time:* |
| סודות שתוקף שלהם יפוג לפני תאריך מסוים | expire_time<2021-07-31 |
| גרסאות שמופעלות או מושבתות | state:(ENABLED OR DISABLED) |
| גרסאות שהושמדו, הושמדו אחרי תאריך | state:DESTROYED AND destroy_time>2021-01-01 |
תחביר של מסננים
תחביר המסנן מורכב מביטוי בשדה אחד או יותר של האובייקטים שמסננים.
אפשר להשתמש באופרטורים הבאים של ביטויים.
| אופרטור | תיאור |
|---|---|
= |
שוויון. |
> |
גדול מ-. |
< |
פחות מ. |
>= |
גדול מ- או שווה ל- |
<= |
קטן מ- או שווה ל-. |
!=-NOT |
אי-שוויון. הביטויים הבאים שקולים:name!="topsecret"-name="topsecret"NOT name="topsecret"
|
: |
בלימה. זוהי התאמה של מחרוזת משנה שלא תלויה באותיות רישיות.
לדוגמה, |
AND |
'וגם' לוגי.
מרחב שווה ערך ל- |
OR |
OR לוגי. |
* |
תו כללי לחיפוש.
אפשר להשתמש בו כערך עצמאי, כאשר |
בדומה ל-Cloud Search API, פעולות OR מוערכות לפני פעולות AND, אלא אם משתמשים בסוגריים כדי להגדיר במפורש סדר שונה.
כשמסננים לפי ערכים של time, צריך לקודד את הזמן כמחרוזת בפורמט RFC 3399, כמו 2020-10-15T01:30:15Z.
כשניגשים לשדה משנה, משתמשים בתחביר נקודה. לדוגמה, משאב Secret עשוי לכלול את השדה labels שהערך שלו הוא צמד מפתח/ערך map.
אם משתמשים בתווית color, אפשר לסנן את התוצאות Secret בשדה המשנה labels.color באופן הבא:
labels.color=red
אם רוצים להציג רק סודות עם התווית color, משתמשים בתו כללי:
labels.color:*
מחרוזת שתחומה במירכאות מתפרשת כערך יחיד ולא כרצף של ערכים.
שדות מסנן
אפשר לסנן לפי כל שדה של אובייקט Secret או SecretVersion.
| שיטת הרשימה | קישור לשדות שאפשר לסנן |
|---|---|
projects.secrets.list
|
שדות סודיים |
projects.secrets.versions.list
|
שדות SecretVersion |
מספר התוצאות הכולל
אם הערךfilter מוגדר בבקשת רשימה, התגובה לא מציינת את המספר הכולל של התוצאות (total_size=0 בתגובה).