נתונים סודיים הם בלתי ניתנים לשינוי, ורוב הפעולות מתבצעות בגרסאות סודיות. גרסת סוד מכילה את נתוני הסוד בפועל, יחד עם מצב ומטא-נתונים לגבי הסוד. בדף הזה מוסבר איך להוסיף גרסה של סוד.
מידע נוסף על ניהול גרסאות זמין בסרטון הזה בנושא ניהול גרסאות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להוספת גרסה של סוד, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בסוד:
- Secret Manager Secret Version Adder (
roles/secretmanager.secretVersionAdder) - Secret Manager Secret Version Manager (
roles/secretmanager.secretVersionManager)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אי אפשר להעניק תפקידי IAM בגרסה של סוד.
הוספת גרסה של סוד
כדי להוסיף גרסה של סוד, משתמשים באחת מהשיטות הבאות:
המסוף
-
נכנסים לדף Secret Manager במסוף Google Cloud .
-
בדף Secret Manager, מאתרים את הסוד שרוצים להוסיף לו גרסה חדשה.
-
לוחצים על התפריט פעולות שמשויך לסוד, ואז לוחצים על הוספת גרסה חדשה. מופיעה תיבת הדו-שיח Add new version.
-
בשדה Secret value (ערך הסוד), מזינים ערך לסוד, כמו
abcd1234. אפשרות אחרת היא להעלות קובץ שמכיל את הערך הסודי. -
לוחצים על הוספת גרסה חדשה.
gcloud
הוספת גרסה של סוד מתוכן של קובץ בדיסק
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SECRET_ID: מזהה הסוד
- FILE_PATH: הנתיב המלא (כולל שם הקובץ) לקובץ שמכיל את פרטי הגרסה
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
התשובה מכילה את הגרסה החדשה של הסוד.
הוספת גרסה סודית ישירות בשורת הפקודה
אפשר גם להוסיף גרסה סודית ישירות בשורת הפקודה, אבל לא מומלץ לעשות את זה כי היא מופיעה כטקסט לא מוצפן ברשימת התהליכים, ויכול להיות שמשתמשים אחרים במערכת יוכלו לראות אותה. שימו לב שהפקודה עם הטקסט הרגיל תופיע גם בהיסטוריית המעטפת.
echo -n "SECRET_DATA" | \
gcloud secrets versions add SECRET_ID --data-file=-מחליפים את מה שכתוב בשדות הבאים:
- SECRET_DATA: הנתונים שרוצים לאחסן בגרסת הסוד
- SECRET_ID: המזהה של הסוד או המזהה המוגדר במלואו של הסוד
אופציונלי: הוספת גרסה מתוכן של קובץ כשיוצרים סוד בפעם הראשונה
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SECRET_ID: מזהה הסוד
- FILE_PATH: הנתיב המלא (כולל שם הקובץ) לקובץ שמכיל את פרטי הגרסה
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
התשובה מכילה את הגרסה החדשה של הסוד.
REST
מבצעים קידוד Base64 לנתונים הסודיים ושומרים אותם כמשתנה של מעטפת.
$ SECRET_DATA=$(echo "seCr3t" | base64)
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט Google Cloud
- SECRET_ID: מזהה הסוד
ה-method של ה-HTTP וכתובת ה-URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID:addVersion
גוף בקשת JSON:
{"payload": {"data": "${SECRET_DATA}"}}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-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:addVersion"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID:addVersion" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/1",
"createTime": "2024-03-25T08:24:13.153705Z",
"state": "ENABLED",
"etag": "\"161477e6071da9\""
}
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.
מצבים של גרסאות סוד
גרסה של סוד יכולה להיות באחד מהמצבים הבאים בכל רגע נתון:
-
מופעלת – במצב הזה, אפשר לגשת לגרסת הסוד ולתאר אותה. זהו מצב ברירת המחדל של גרסה חדשה של סוד.
-
מושבתת – במצב הזה, אי אפשר לגשת לגרסת הסוד, אבל התוכן של הסוד עדיין קיים. אפשר להפעיל מחדש את גרסת הסוד כדי לשחזר את הגישה.
-
הושמדה – במצב הזה, התוכן של גרסת הסוד נמחק. אי אפשר לשנות את הגרסה הסודית למצב אחר.
אתם מחויבים על גרסאות סודות שהופעלו וגם על גרסאות סודות שהושבתו. לא נחייב אתכם על גרסאות סודיות שנמצאות במצב השמדה.