הגדרת תאריך תפוגה לסוד

בדף הזה מוסבר איך להגדיר תאריך תפוגה לסוד חדש או קיים, איך לשנות את תאריך התפוגה של סוד קיים ואיך להסיר תאריך תפוגה שהוגדר בעבר מסוד.

סקירה כללית

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

אם אין לכם דרישות למחיקת הסוד, כדאי להשתמש בתנאי IAM או במצב הגרסה Disabled כדי לבטל את הגישה בצורה בטוחה.

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

אפשר להוסיף תאריך תפוגה לסוד, לעדכן אותו או להסיר אותו בכל שלב.

מגבלות

  • תוקף הסוד לא יכול להיות פחות מ-60 שניות או יותר מ-100 שנים.

שימוש בטוח בסודות שתוקפם פג

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

כדי לנהל את הגישה לסודות בצורה יעילה, צריך להגדיר תנאי מבוסס-זמן להרשאות שניתנות.

  • הגדרת תאריך תפוגה: תוקף ההרשאות צריך לפוג זמן קצר לפני שתוקף הסוד עצמו פג. כך תוכלו לזהות תהליכי עבודה או תהליכים שאולי עדיין משתמשים בסוד באופן לא צפוי.

  • מעקב אחרי שיבושים: אם זרימות עבודה מסוימות מפסיקות לפעול אחרי ביטול ההרשאות, אפשר לשחזר במהירות את הגישה כדי למזער את ההשפעה.

  • מבצעים שינויים לפי הצורך: אם אתם צריכים יותר זמן, אתם יכולים להאריך את תאריך התפוגה של הסוד או אפילו להסיר אותו לגמרי אם הוא כבר לא נחוץ.

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

לדוגמה, נניח שחשבון שירות צריך לגשת לסוד כל יום במשך 30 ימים. אפשר להגדיר את הסוד כך שתוקפו יפוג 60 יום אחרי שהוא נוצר. כך מקבלים תקופת ביניים אחרי השימוש הצפוי. אפשר גם להגדיר קשירת IAM מותנית כדי להעניק לחשבון השירות את התפקיד Secret Accessor למשך 45 ימים. אם חשבון השירות ינסה לגשת לסוד אחרי 45 ימים, הגישה שלו תידחה. כל תהליכי העבודה שמסתמכים על הסוד הזה יפסיקו לפעול. אדמינים יכולים להחזיר את הגישה במהירות על ידי הקצאת התפקיד Secret Accessor (גישה לסודות) בחזרה לחשבון השירות. כך יהיה להם זמן לבדוק למה עדיין נדרש הסוד אחרי תקופת 30 הימים הצפויה, כי הסוד עצמו לא יימחק למשך 15 ימים נוספים.

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

הגדרה של חותמות זמן ומשכי זמן

  • ערכי חותמת הזמן צריכים להיות בפורמט RFC 3339, לדוגמה 2100-01-01T09:00:00-05:00.

  • ערכי משך הזמן צריכים להיות בפורמט של מספר השניות, כולל הסיומת s למשל 86400s.

הגדרת תאריך תפוגה לסוד

אפשר להגדיר תאריך ושעה לתפוגה של סוד באמצעות מסוף Google Cloud , Google Cloud CLI או Secret Manager API.

המסוף

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

    מעבר אל Secret Manager

  2. בדף Secret Manager, לוחצים על Create secret.

  3. בדף יצירת Secret, מזינים שם ל-Secret בשדה שם.

  4. מזינים ערך לסוד (לדוגמה, abcd1234). אפשר גם להעלות קובץ טקסט שמכיל את ערך הסוד באמצעות האפשרות העלאת קובץ. הפעולה הזו יוצרת באופן אוטומטי את גרסת הסוד.

  5. עוברים אל תפוגה ומסמנים את תיבת הסימון הגדרת תאריך תפוגה.

  6. מזינים את תאריך ושעת התפוגה בפורמט Month/Day/Year, Hour:Minute AM/PM, לדוגמה, 7/31/20, 1:00 AM. אפשר גם להשתמש בכלי לבחירת תאריך ושעה כדי להזין את תאריך ושעת התפוגה.

  7. לוחצים על Create secret (יצירת סוד).

gcloud

יצירת סוד עם תוקף באמצעות חותמת זמן

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • SECRET_ID: מזהה הסוד
  • TIMESTAMP: תאריך התפוגה בפורמט RFC 3339, לדוגמה 2100-01-01T09:00:00-05:00

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud secrets create SECRET_ID \
    --replication-policy "automatic" \
    --expire-time "TIMESTAMP"

‏Windows (PowerShell)

gcloud secrets create SECRET_ID `
    --replication-policy "automatic" `
    --expire-time "TIMESTAMP"

Windows‏ (cmd.exe)

gcloud secrets create SECRET_ID ^
    --replication-policy "automatic" ^
    --expire-time "TIMESTAMP"

יצירת סוד עם תוקף מוגבל באמצעות משך זמן

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • SECRET_ID: מזהה הסוד
  • DURATION: משך התפוגה בשניות, לדוגמה 86400s

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud secrets create SECRET_ID \
  --replication-policy "automatic" \
  --ttl "DURATION"

‏Windows (PowerShell)

gcloud secrets create SECRET_ID `
  --replication-policy "automatic" `
  --ttl "DURATION"

Windows‏ (cmd.exe)

gcloud secrets create SECRET_ID ^
  --replication-policy "automatic" ^
  --ttl "DURATION"

REST

יצירת סוד עם תוקף באמצעות חותמת זמן

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט Google Cloud
  • SECRET_ID: מזהה הסוד
  • TIMESTAMP: תאריך התפוגה בפורמט RFC 3339, לדוגמה 2100-01-01T09:00:00-05:00

ה-method של ה-HTTP וכתובת ה-URL:

POST https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID

גוף בקשת JSON:

{
  "replication": {"automatic": {}},
  "expire_time": "TIMESTAMP"
}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

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?secretId=$SECRET_ID"

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?secretId=$SECRET_ID" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

יצירת סוד עם תוקף מוגבל באמצעות משך זמן

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט Google Cloud
  • SECRET_ID: מזהה הסוד
  • DURATION: משך התפוגה בשניות, לדוגמה 86400s

ה-method של ה-HTTP וכתובת ה-URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID

גוף בקשת JSON:

{
  "replication": {"automatic": {}},
  "ttl": "DURATION"
}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

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?secretId=SECRET_ID"

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?secretId=SECRET_ID" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

עדכון תאריך התפוגה של סוד

כדי לעדכן את תאריך ושעת התפוגה של הסוד, משתמשים באחת מהשיטות הבאות:

המסוף

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

    מעבר אל Secret Manager

  2. כדי לערוך Secret, מאתרים את ה-Secret ברשימה ולוחצים על התפריט פעולות שמשויך ל-Secret הזה. בתפריט פעולות, לוחצים על עריכה.

  3. עוברים לקטע תפוגה. מעדכנים את תאריך ושעת התפוגה ולוחצים על עדכון הסוד.

gcloud

עדכון התפוגה של סוד באמצעות חותמת זמן

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • SECRET_ID: מזהה הסוד
  • TIMESTAMP: תאריך התפוגה בפורמט RFC 3339, לדוגמה 2100-01-01T09:00:00-05:00

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud secrets update SECRET_ID \
  --expire-time "TIMESTAMP"

‏Windows (PowerShell)

gcloud secrets update SECRET_ID `
  --expire-time "TIMESTAMP"

Windows‏ (cmd.exe)

gcloud secrets update SECRET_ID ^
  --expire-time "TIMESTAMP"

עדכון תפוגה של סוד באמצעות משך זמן

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • SECRET_ID: מזהה הסוד
  • DURATION: משך התפוגה בשניות, לדוגמה 86400s

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud secrets update SECRET_ID \
    --ttl "DURATION"

‏Windows (PowerShell)

gcloud secrets update SECRET_ID `
    --ttl "DURATION"

Windows‏ (cmd.exe)

gcloud secrets update SECRET_ID ^
    --ttl "DURATION"

REST

עדכון התפוגה של סוד באמצעות חותמת זמן

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט Google Cloud
  • SECRET_ID: מזהה הסוד
  • TOKEN: טוקן גישה משלכם מסוג Oauth2.0
  • TIMESTAMP: תאריך התפוגה בפורמט RFC 3339, לדוגמה 2100-01-01T09:00:00-05:00

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time

גוף בקשת JSON:

{"expire_time": "TIMESTAMP"}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

עדכון תפוגה של סוד באמצעות משך זמן

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט Google Cloud
  • SECRET_ID: מזהה הסוד
  • DURATION: משך התפוגה בשניות, לדוגמה 86400s

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl

גוף בקשת JSON:

{"ttl": "DURATION"}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

הסרת תאריך התפוגה של סוד

כדי להסיר את תאריך התפוגה ואת השעה של הסוד, משתמשים באחת מהשיטות הבאות:

המסוף

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

    מעבר אל Secret Manager

  2. כדי לערוך Secret, מאתרים את ה-Secret ברשימה ולוחצים על התפריט פעולות שמשויך ל-Secret הזה. בתפריט פעולות, לוחצים על עריכה.

  3. עוברים לקטע תפוגה. מבטלים את הסימון בתיבת הסימון הגדרת תאריך תפוגה ואז לוחצים על עדכון הסוד.

gcloud

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • SECRET_ID: מזהה הסוד

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud secrets update SECRET_ID \
  --remove-expiration

‏Windows (PowerShell)

gcloud secrets update SECRET_ID `
  --remove-expiration

Windows‏ (cmd.exe)

gcloud secrets update SECRET_ID ^
  --remove-expiration

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט Google Cloud
  • SECRET_ID: מזהה הסוד
  • TOKEN: טוקן גישה משלכם מסוג Oauth2.0

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time

גוף בקשת JSON:

{}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "etag": "\"162143305d282d\""
}

רישום ביומן של תפוגה

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

תזמון הרישום ביומן סוג אירוע סודי
‫30 ימים לפני תאריך התפוגה EXPIRES_IN_30_DAYS
7 ימים לפני תאריך התפוגה EXPIRES_IN_7_DAYS
יום לפני התפוגה EXPIRES_IN_1_DAY
6 שעות לפני תאריך התפוגה EXPIRES_IN_6_HOURS
שעה לפני תאריך התפוגה EXPIRES_IN_1_HOUR
במועד התפוגה EXPIRED

במדריך למתחילים בנושא רישום ביומן מוסבר איך לצפות ביומנים האלה. אתם יכולים ליצור מדדים מבוססי-יומן ולהשתמש בהם כדי ליצור התראות על תפוגה קרובה.

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