למה ניהול סודות ב Docker Swarm

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

ניהול סודות נכון הוא אבן הפינה של תאוריית מכולות ברמה הייצור. על ידי מינוף התכונה של Docker של סודות בנוי-in, צוותים יכולים להפחית את פני השטח של ההתקפה, לפשט את הציות לסטנדרטים כגון PCI-DSS או SOC 2, ולשמור על שביל ביקורת ברור של אילו שירותים יש גישה אליו סודות. מאמר זה מספק מדריך סמכותי, צעד אחר צעד ליישום ניהול ב Dockerrm, המכסה את כל דבר מתקדם כדי לקדם מושגים.

הבנת סודות דוקרים ב- Depth

מה הם סודות דוקרים?

סודות דוקר הם כתמים מוצפנים של נתונים רגישים המאוחסנים בחנות הנתונים הפנימית של הנחיל (מנוהלים על ידי קבוצת הקונצנזוס רפט) ונמסרים רק למכלים שזקוקים להם.בניגוד למשתנים סביבתיים, סודות לעולם אינם גלויים דרך (FLT:0 או בסביבתו של המכולה - הם רכובים כקבצים בתוך מערכת הקבצים של המכולה, בדרך כלל תחת LTF-1) גישה זו מבטיחה בטעות סודיות או כלי חשוף באמצעות אטומים, או אטומים, או אטומים, או אטומים, או אטומים, או אטומים, או אטומים, או אטומים, או אטומים, או אטומים, או אטומים אטומים, או חשוף בטעות, או אטומים, או אטומים, או אטומים, הם אטומים אטומים, או אטומים, או , או אטומים , הם , או , הם אטומים, הם , הם אטומים, או , או אטומים, הם אטומים, הם , הם אטומים אטומים אטומים אטומים חשוף בטעות, הם אטומים אטומים

כיצד סודות סווממים מתפרעים מגישות אחרות

פתרונות תזוזה רבים מסתמכים על חנויות חשאיות חיצוניות (HashiCorp Vault, מנהל AWS Secrets, Azure Key Vault) ודורשים מכולות אחרות או אינטגרציה של SDK.Docker Swarm's מובנה-in מספק נתיב פשוט ומשולב: אין שירותים נוספים, ללא מנעול ספק מנעול-אין, ואין סודות מורכבים מקודים מוצפנים אוטומטית באמצעות שכבת ההצפנה של Swarm (A-256GCM-Ax) וגרסאות מתקדמות עבור כלי בקרה.

דמויות מפתח של Docker Swarm Secrets

  • (בקיצור:0) קידוד מנוחה ובמעבר: ההרחבה: סודות מוצפנים כאשר נשמרים בגלקוד רפט של חיל האוויר, וכאשר מועברים למנהלים ולעמודי עבודה.
  • (ב) ⁇ :0) ⁇ : 1FLT 1 פעם נוצר, סוד לא ניתן לשנות. "להפוך" סוד, עליך ליצור שירות חדש וחדשני אשר מתייחס אליו.
  • (FLT:0)-privilege גישה: ⁇ 1 סודות רק לתוך מיכלים שהגדרת השירות שלהם כוללת במפורש את הסוד.
  • (ב) אין דליפה משתנה לסביבה: FLT:1 בשונה (FLT:2, סודות אינם מועברים דרך משתנים סביבתיים, צמצום הסיכון לחשיפה מקרית בתהליכים ילדים או צווי גילוח.
  • (FLT:0) ניקוי אוטומטי: 1FLT כאשר שירות מוסר, הקבצים הסודיים הקשורים נמחקים ממערכת הקבצים של מיכל.

הצעות נוספות לשימוש בסודות Docker Swarm

לפני צלילה ליישום, ודא שהסביבה שלך עומדת בדרישות אלה:

  • אשכול של Docker Swarm (חילה חד-פעמית מספיקה לבדיקה, אך הייצור צריך להשתמש במספר מנהלים).
  • Docker Engine 1.13 או מאוחר יותר (סודות הוצגו ב-Docker 1.13/ API v1.25).
  • כל הצומתים בחיל האוויר חייבים להיות חלק מאותה אשכול ותזמון (NTP מומלץ) כדי להימנע מבעיות אימות תעודה.
  • (ב) ,ב"ה, "המנהלים" (ה) , וכל צומת עובדים הצטרף אל החריץ.

צעד-על-ידי-Step Guide to Implementing Secrets in Docker Swarm

יצירת סוד

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

יצירת סוד מקובץ

echo "my-super-secure-password" > secret-file.txt
docker secret create db_password secret-file.txt

הפקודה מחזירה את זהות הסוד (מחרוזת של 25 כריזלר) ניתן לאמת את הבריאה עם 5.

יצירת סוד מסנטדין (ללא להשאיר קובץ על דיסק)

printf "my-api-token" | docker secret create api_token -

השימוש ב-FLT 7 במקום ב-FLT:8 מונע קו חדש נוסף מהוספת (בהתאם ל-OS).הההפנופן מציין כי הסוד נקרא מ stdin, שהוא השיטה הבטוחה ביותר בעת תסריט.

יצירת סוד מערך ליטרל (לא מומלץ לתסריט)

docker secret create my_secret "literal-value"

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

רשימות ותובנות

כדי להציג את כל הסודות ב-Slef:

docker secret ls

כדי לבדוק פרטים (מטאדאטה בלבד - הערך הסודי לעולם לא נחשף):

docker secret inspect db_password

הפלט כולל את התעודה, שם היצירה, תאריך הבריאה והלייבלים (אם בכלל), אך לעולם לא את הנתונים הסודיים האמיתיים.

שירות זה משתמש סוד

כאשר אתה יוצר או מעדכנת שירות, אתה נותן גישה לסודות עם דגל FLT:12 , הסוד הוא רכוב כקובץ בתוך מיכל ב-FLT:13 .

יצירת שירות עם סוד יחיד

docker service create \
 --name web_app \
 --secret db_password \
 --publish 80:80 \
 my_alatest

בתוך מיכל, הקובץ (FLT:15) מכיל את הערך הסודי.הבקשה קוראת קובץ זה כדי להשיג את הסיסמה.

להתאים את הר היעד

אם אתה צריך להניף את הסוד בדרך אחרת או עם שם אחר, השתמש בדגל ה-FLT:16 עם FLT:17 ו-FLT 18:

docker service create \
 --name web_app \
 --secret src=db_password,target=/etc/app/db_pass \
 my_alatest

הסוד זמין ב-FLT:20 בתוך מיכל.

סודות בתוך ה- Container

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

cat /run/secrets/db_password

בתסריט Python:

with open('/run/secrets/db_password', 'r') as f:
 db_password = f.read().strip()

סודות לעולם לא נחשפים באמצעות בדיקת הסביבה של ה-FLT:23; הקובץ הוא בבעלות שורש ורק על ידי המשתמש של מיכל אם אישור ברירת המחדל של הסוד (0400) מתאים, אתה יכול לקבל אישורים באמצעות ה-FLT:24 אפשרויות FLT 25, FLT:26, ו-FLT:27 אם צריך (למשל, LTF:28).

סוד (Rotation)

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

  1. יצירת סוד חדש: «
  2. עדכון השירות לשימוש בסודות החדשים ולהסיר את הישן:30
  3. להסיר את הסוד הישן לאחר אישור השירות כראוי:

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

הסרת סודות

סודות שאינם מתייחסים יותר על ידי כל שירות יכול להיות הוסרו.הניסיון להסיר סוד עדיין בשימוש נכשל עם טעות.

docker secret rm db_password_v2

תמיד לוודא כי אין שירות פועל תלוי הסוד לפני המחיקה. השתמש ב-FLT:33 ולבדוק את ההפניות הסודיות.

שיקולים מתקדמים ועיסוקים טובים

הצפנה ואבטחת אחסון

Docker Swarm מצפין סודות ב יומן רפאט (חנות המדינה מבוזרת) באמצעות מפתח הנגזר מתעודות TLS של נחילה.מפתח הצפנה הוא אף פעם לא מאוחסן על דיסק בטקסט פשוט.עם זאת, הנתונים הסודיים מוקרן על ידי מנהל כאשר מועבר לעובדים.כדי להגן על סודות אפילו יותר, לשקול שימוש במודול אבטחה חומרה (HSM) או שירות ניהול מרכזי (KMS) אם נדרש תצורה של Microsoft-DPS2K.

Least-Privilege Access and Segmentation

  • סודות גרנט רק לשירותים הספציפיים שצריכים אותם לחלוטין להימנע משימוש בדגלים פרועים או "כל הסודות"
  • יצירת סודות ושירותים לאכיפת גבולות ארגוניים (למשל, FLT:34).
  • השתמש בסודות נפרדים לסביבות שונות (התחברות נגד הייצור) במקום לשתף את אותו סוד על פני ערימה.

רוטציה ונשימה

  • סיבוב סודי באמצעות צינורות CI /CD. צור סוד חדש, לעדכן את השירות, להסיר את הסוד הישן.
  • לקבוע לוח זמנים (למשל, כל 90 יום או אחרי אירוע אבטחה).
  • עבור סביבות אבטחה גבוהות, לשקול שילוב עם HashiCorp Vault או כלים דומים לדור הסודי דינמי וניהול החכירה, אם כי זה מוסיף מורכבות.

ביקורת ובדיקה

  • ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • מעקב אחר יצירה סודית, עדכון והסרת אירועים באמצעות אירועים דוקרים: (FLT:37).
  • צפה בניסיונות גישה סודיים בלתי צפויים על ידי בדיקת יומני יישומים או מערכת הנקראת ביקורת (למשל, FLT:38).

שילוב עם חנויות חיצוניות

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

מלכודות נפוצות וכיצד להימנע מהם

  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (הופנה מהדף ההרחבה:0) ,(הדגשה:0) מוצפנת באופן אוטומטי בסודות מוצפנים באופן אוטומטי בכל עת.FLT:2Mitigation:IRFLT 3: 3) ודא כי גרסת הדוקר שלך תומכת בסודות (1.13+) וכי החימוש הוא ראשוני כראוי.

דוגמה אמיתית לעולם: שינוי חיבור מסד נתונים ב- Multi-Service Stack

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

  1. « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «
  2. שירות MySQL: FLT:43
  3. שירות WordPress: FLT:44

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

משאבים חיצוניים וקריאה נוספת

  • (ב) ,0) ביצוע מסמך רשמי: ניהול נתונים רגישים עם Docker SecretsFLT:1
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) ,Docker Swarm Mode Architecture and SecurityFirLT 1
  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇
  • (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇

מסקנה

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

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