שיטות מומלצות לשימוש ב-Secret Manager

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

בקרת גישה

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

נדרשים פרטי כניסה כדי לבצע אימות ל-Secret Manager API. כל ספריות הלקוח משתמשות באותה אסטרטגיה לחיפוש פרטי כניסה, שנקראת Application Default Credentials.

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

שיטות תכנות

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

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

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

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

    • האם מאגר הנתונים מרחיב את הגישה לסוד?

    • האם אפשר לבדוק את הגישה לסוד?

    • האם מאגר הנתונים עומד בדרישות ההצפנה של נתונים במנוחה והחלוקה לאזורים?

מומלץ להשתמש ב-Secret Manager API ישירות באמצעות אחת מספריות הלקוח שסופקו, או באמצעות עיון במסמכי התיעוד של REST או של GRPC.

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

ניהול

כשיוצרים סודות, מומלץ לבחור את מדיניות השכפול האוטומטי, אלא אם לעומס העבודה יש דרישות ספציפיות לגבי מיקום (שאפשר לאכוף באמצעות האילוץ constraints/gcp.resourceLocations).

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

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

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

חשוב להחליף את הסודות שלכם באופן קבוע כדי:

  • הגבלת ההשפעה במקרה של סוד שנחשף.

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

  • הפחתת הסבירות להשבתה.

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

  • עוזר לזהות סודות בכל הארגון.

  • זיהוי אי-התאמה לדרישות הארגון, כמו רוטציה, הגדרת הצפנה ומיקום.

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

בנוסף לאמצעי הבקרה של IAM, אפשר להגביל את הגישה ל-Secret Manager API באמצעות אמצעי בקרה מבוססי-רשת על ידי הגדרת service perimeter של VPC Service Controls לארגון.

אפשר להשתמש במדיניות הארגון constraints/iam.allowedPolicyMemberDomains כדי להגביל את הזהויות שאפשר להוסיף למדיניות IAM עבור סודות.

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

תאימות למיקום הנתונים

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