סינון רשימות של סודות וגרסאות של סודות

בדף הזה מוסבר תהליך הסינון של סודות וגרסאות של סודות ב-Secret Manager. בסביבות עם סודות רבים, סינון עוזר לזהות במהירות סודות או גרסאות ספציפיים בלי לגלול ידנית בכל הרשימה. אפשר לסנן לפי קריטריונים כמו תוויות, תאריכי יצירה או דפוסים ספציפיים בשמות של סודות, וכך לנהל בצורה ממוקדת קבוצות ספציפיות של סודות.

ב-Secret Manager, אפשר לסנן סודות וגרסאות של סודות באמצעות האפשרות Filter במסוף Google Cloud , או על ידי ציון קריטריוני סינון בקריאה ל-API. ב-Google Cloud CLI, אפשר לסנן סודות וגרסאות של סודות על ידי הוספת מחרוזת filter כשמציגים את רשימת הסודות.

סינון סודות

כדי לסנן סוד, משתמשים באחת מהשיטות הבאות:

המסוף

  1. נכנסים לדף Secret Manager במסוף Google Cloud .

    מעבר אל Secret Manager

  2. בטבלה Secrets (סודות), לוחצים על השדה Filter (מסנן).

  3. בוחרים מאפיין של מסנן ואת הערך המתאים לו, לדוגמה 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"
:

בלימה. זוהי התאמה של מחרוזת משנה שלא תלויה באותיות רישיות.

לדוגמה, name:"myapp" מסנן משאבים שמכילים את myapp (לא תלוי באותיות רישיות) בשם המשאב.

AND

'וגם' לוגי.

מרחב שווה ערך ל-AND, ולכן הדוגמאות הבאות שוות ערך:
name:"myapp" AND name:"secret1"
name:"myapp" name:"secret1"

OR OR לוגי.
*

תו כללי לחיפוש.

אפשר להשתמש בו כערך עצמאי, כאשר field:* מציין ש-field מוגדר.

בדומה ל-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 בתגובה).

המאמרים הבאים