GCP Secret Manager: מדריך מלא לניהול סודות

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

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

GCP Secret Manager: כאשר סודות חיים בקוד

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

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

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

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

מה נותן אחסון מרוכז של סודות

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

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

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

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

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

אפשרויות ארגון גישה: השוואת גישות

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

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

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

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

שלבי הטמעה: מביקורת ועד מסירה

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

  1. מיפוי סודות: אוספים את כל המקומות שבהם מפתחות נמצאים כעת — קבצי תצורה, משתני סביבה, מאגרי קוד, התכתבויות ורשימות של מהנדסים. בפלט מתקבל מרשם עם בעלים, ייעוד, תוחלת חיים וקריטיות של כל רשומה.
  2. תכנון מדיניות גישה: מסמנים למי ומה דרושות הרשאות, מפרידים בין קריאה לניהול, ומקשרים גישה לחשבונות שירות ולא לאנשים. בנפרד קובעים מי יכול ליצור גרסאות חדשות ולמחוק ישנות.
  3. תכנון מיגרציה: מעבירים סודות בקבוצות לפי שירותים, עם קריאה כפולה בתקופת מעבר, כדי שהאפליקציה תקלוט את הערך מהמאגר החדש ולא תהיה תלויה במקור הישן.
  4. הגדרת רוטציה: קובעים תקופת החלפת ערכים וכללים לשמירת גרסאות קודמות — רוטציה מתוכננת לא צריכה לשבור שירות פעיל וחייבת להשאיר חלון לחזרה אחורה.
  5. בדיקת רוטציה בכשל: מחליפים ערך בסביבה חיה ובודקים אם הוא נקלט בלי התערבות ידנית. בנפרד בודקים התנהגות השירות כשהמאגר לא זמין זמנית.
  6. מסירה לתפעול: מוסרים מרשם סודות, סכימת גישה, לוח זמנים לרוטציה וסדר פעולות באירוע. קובעים אחראים ונקודה לפנייה בשינוי מתאר.

ערכת תיעוד, תרשימים ותקנות

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

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

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

מקרה בוחן: רוטציה של מפתחות גישה בלי עצירת שירותים

הלקוח — שירות תשלומים, שמונה אפליקציות במתאר הפעיל, גישות למסדי נתונים ול-API חיצוניים נשמרו במשתני סביבה ובחלקם במאגר תצורות. רוטציה של מפתח אחד ארכה 3–4 ימים: מהנדס שינה ערך, הפעיל מחדש אפליקציות בתורו וסבב בין הצוותים כדי שאף אחד לא ישכח לעדכן קובץ מקומי. ברבעון הצטברו 14 מפתחות פעילים, שבעליהם כבר לא עבדו בפרויקט.

מה שינו

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

מדד לפני אחרי
זמן רוטציה מלא של מפתח 3–4 ימים ~25 דקות
מפתחות בלי בעלים 14 0
שלילת גישה לעובד שפוטר 1–2 ימים 4–6 דקות
סודות שנקראים ישירות מתצורות רובם 0

תוצאה

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

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

במה שונה מאגר מנוהל ממשתני סביבה?

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

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

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

ספקות טכניים: בידוד, שלילה, ביקורת

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

האם אפשר לעשות שימוש חוזר בסוד אחד בכמה סביבות?

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

מי רואה את התוכן והאם אפשר להצפין במפתחות שלנו?

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

מה נכנס ליומן הגישה?

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

מה עושים עם גיבוי וחזרה אחורה?

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

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

כדי שההערכה תהיה עניינית, ולא «פחות או יותר רבעון», השיחה הראשונה מתחילה בניתוח הסכימה הנוכחית. די לנו בתיאור של איך הסודות חיים כעת: היכן מפתחות למסדי נתונים, לשירותי תשלום ולשירותים חיצוניים, מי קורא אותם ומה קורה בעת החלפה.

כך אנחנו מבינים את היקף העבודה למעבר ל-GCP Secret Manager וחוזרים עם תוכנית והערכת זמנים בימי עבודה.

מה לשלוח לפני הפגישה:

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

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