בדף הזה מוסבר איך לגשת לגרסה של סוד. כשניגשים לגרסה סודית, מקבלים את התוכן הסודי ומטא-נתונים נוספים על הגרסה הסודית. כדי לגשת לגרסת סוד באמצעות Google Cloud CLI או Secret Manager API, צריך לציין את מזהה הגרסה או את הכינוי שלה, אם הוקצה לה כינוי. אפשר לגשת לגרסה האחרונה של סוד גם על ידי ציון latest כמזהה הגרסה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לגישה לגרסה של סוד, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) בסוד.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
גישה לגרסה של סוד
כדי לגשת לסוד, משתמשים באחת מהשיטות הבאות:
המסוף
-
נכנסים לדף Secret Manager במסוף Google Cloud .
-
בדף Secret Manager, לוחצים על סוד כדי לגשת לגרסאות שלו.
-
בדף הפרטים של הסוד, בכרטיסייה גרסאות, בוחרים את גרסת הסוד שרוצים לגשת אליה.
-
לוחצים על התפריט פעולות שמשויך לגרסת הסוד, ואז לוחצים על הצגת ערך הסוד.
-
מופיעה תיבת דו-שיח עם הערך של גרסת הסוד. לוחצים על סיום כדי לצאת מתיבת הדו-שיח.
gcloud
גישה לגרסה של סוד
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- VERSION_ID: שם המשאב של גרסת הסוד
- SECRET_ID: מזהה הסוד
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID
גישה לגרסה בינארית של סוד
כדי לכתוב בייטים גולמיים לקובץ, משתמשים בדגל --out-file:
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- VERSION_ID: המזהה של גרסת הסוד
- SECRET_ID: מזהה הסוד
- PATH_TO_SECRET: הנתיב המלא (כולל שם הקובץ) שבו רוצים לשמור את ערך הסוד שאוחזר
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --out-file="PATH_TO_SECRET"
Windows (PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --out-file="PATH_TO_SECRET"
Windows (cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --out-file="PATH_TO_SECRET"
קבלת הבייטים הגולמיים
כדי לקבל את הבייטים הגולמיים, צריך להגדיר את Cloud SDK להדפסת התגובה בקידוד base64 ולפענח אותה:
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- VERSION_ID: המזהה של גרסת הסוד
- SECRET_ID: מזהה הסוד
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --format='get(payload.data)' | tr '_-' '/+' | base64 -d
Windows (PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --format='get(payload.data)' | tr '_-' '/+' | base64 -d
Windows (cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --format='get(payload.data)' | tr '_-' '/+' | base64 -d
התשובה מכילה את הגרסה של הסוד.
REST
גישה לגרסה של סוד
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט Google Cloud
- SECRET_ID: מזהה הסוד
- VERSION_ID: המזהה של גרסת הסוד
ה-method של ה-HTTP וכתובת ה-URL:
GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:access
גוף בקשת 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/SECRET_ID/versions/VERSION_ID:access"
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/SECRET_ID/versions/VERSION_ID:access" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID",
"payload": {
"data": "c2VDcjN0Cg==",
"dataCrc32c": "3131222104"
}
}
שליפת הסוד באמצעות הכלי jq
התשובה payload.data היא התוכן של גרסת הסוד בקידוד base64.
הפקודה הבאה היא דוגמה לחילוץ הסוד באמצעות הכלי jq.
$ curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
| jq -r ".payload.data" | base64 --decode
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את Secret Manager C# SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Secret Manager Go SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Secret Manager Java SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Secret Manager Node.js SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב-Google Cloud ולהתקין את Secret Manager PHP SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת Python ולהתקין את Secret Manager Python SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Secret Manager Ruby SDK. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.
עקביות המשאבים
ב-Secret Manager, הוספה של גרסת סוד וגישה מיידית לגרסת הסוד הזו לפי מספר הגרסה היא פעולה עקבית מאוד.
לפעולות אחרות ב-Secret Manager יש מודל עקביות הדרגתי. בדרך כלל, פעולות עם עקביות סופית מתכנסות תוך דקות, אבל יכול להיות שהתהליך יימשך כמה שעות.
הפצת הרשאות IAM היא עקבית באופן הדרגתי. כלומר, יכול להיות שיעבור זמן עד שהענקת גישה לסודות או ביטול הגישה לסודות ייכנסו לתוקף. מידע נוסף זמין במאמר הפצת שינוי גישה.