ניהול סודי
ניהול סודי
1) מדוע ומה בדיוק אנו רואים ב ”סוד”
סודי - כל חומר שגילויו מוביל לפשרה של המערכת או נתונים: סיסמאות, אסימונים של API, מפתחות פרטיים של OAuth/JWT, מפתחות SSH, תעודות, מפתחות הצפנה (KEK/DEK), מפתחות חתימה של Webhook, מסדי נתונים/מטמונים של DSN ספקי SMS), מלחי עוגיות/פלפל, אסימונים בוט/צ 'אט, רישיונות.
סודות חיים בקוד, הגדרה, סביבה, תמונות מכולות, CI/CD, Terraform/Ansible, יומנים/זורקים - משימה לניהול סודות: account accort process production process extreme returation process accription.
2) עקרונות ארכיטקטורה
ריכוז. שכבה נאמנה אחת (מנהל סודי/ענן/KMS) לאחסון, הוצאה וביקורת.
הרשאות מינימום (PoLP). גישה רק לשירותים/תפקידים הדרושים, לתקופה מינימלית.
חיים קצרים. סודות דינמיים/זמן עם TTL/חכירה מועדפים.
זריזות מוצפנת. יכולת לשנות אלגוריתמים/אורכי מפתח ללא השבתה.
הפרדת סודות מקוד/תמונות. אין סיסמאות במאגרים, אין תמונות של דוקר.
יכולת תצפית וביקורת. כל פעולה של הנפקת/קריאת סודות מחוברת ונמחקת.
סיבוב אוטומטי. סיבוב הוא תהליך בצינור, לא פעולה ידנית.
3) פתרונות טיפוסיים ותפקידי רכיב
KMS/HSM. אמון שורש, הצפנה/עטיפת מפתח פעולות (מעטפה).
מנהל סודי/כספת. חנות גרסאות סודיות, ACL, ביקורת חשבונות, סודות דינמיים (DB, ענן-IAM, PKI), תבניות סיבוב.
PKI/CA. הנפקת חתימות קצרות טווח של mTLS/SSH/JWT.
סוכן/סירה. משלוח סודות לזמן הרצה (tmpfs, in-memory k/v, hot-reload files).
נהגי מז "פ/מפעילים. אינטגרציה עם קוברנטס (Secret Store CSI Driver, Cert-manager).
שכבת הצפנה בגיט. SOPS/age, git-cript (עבור קוד תשתית).
4) סיווג ומדיניות
סודות נפרדים על ידי ביקורתיות (P0/P1/P2) ונפח הנזק (דייר-מפוקפק, סביבה-מפוקפקת, org-wide). עבור כל מחלקה, ציין:- TL/חכירה ותדר סיבוב;
- שיטת פלט (דינמיקה נגד סטטית), פורמט, מדיה;
- מדיניות גישה (מי/איפה/מתי/למה), MTLS ודרישות אימות הדדי;
- ביקורת חשבונות (שנרשום כמה אנחנו מאחסנים, מי מבקר);
- נוהלי זכוכית שבורה ונזכר.
5) מחזור חיים סודי
1. יצירה: באמצעות API מנהל סודי עם metadata (בעלים, תגיות, היקף).
2. אחסון: מוצפן (מעטפה: DEK עטוף ב ־ KEK מ ־ KMS/HSM).
3. משלוח: לבקשת ישות מורשית (OIDC/JWT, SPIFE/SVID, mTLS).
4. שימוש: אך ורק בזיכרון/ב ־ tmpfs; איסור על כריתת עצים/השלכות.
5. סיבוב: על ידי TTL או אירוע (פשרה); תמיכה בגרסאות מקבילות (N-1)
6. החזרה/חסימה: תפוגה מיידית של חכירה, פירוק חשבון/מפתח במערכת המטרה.
7. סילוק: השמדת גרסאות/חומר, שרשרת ביקורת ברורה.
6) סודות דינמיים (מומלץ כברירת מחדל)
הרעיון: הסוד מונפק לזמן קצר ופג תוקף אוטומטית. דוגמאות:- אישורי בסיס נתונים (Postgres/MySQL) עם TTL 15-60 דקות.
- מפתחות ענן זמניים (AWS/GCP/Azure) על ידי תפקיד שירות.
- תעודות SSH (5-30 דקות), תעודות X.509 (שעה/יום).
- ג 'יי-וי-טי זמני לחתימה על בקשות, מתווכי כרטיסים.
- יתרונות: רדיוס פיצוץ מינימלי, זיכרון מפושט (שום דבר לא ”יישאר” בעולם).
7) משלוח סודות בזמן ריצה
קוברנטס:- Secret Store CSI Driver. Accomment Secreting Manager חיצוני לתא בתור קבצים (tmpfs).
- הימנע מקוברנטס סודי כמקור היחיד (base64 excryption); אם יש צורך, אפשר לספק KMS עבור etcd.
- סוכן סיד (כספת סוכן/חנות סודות) עם השכרת רנבל אוטומטית וטעינה מחדש.
- VM/Bare-Metal: system + mTLS to Vault/Secret Manager, מטמון בזיכרון, TCB מינימלי.
- Serverless: אינטגרציה ענן עם החלפה שקופה של סודות כמשתני סביבה/קבצים, אך הימנעות מקבצים ארוכי חיים - רצוי קבצים/בזיכרון.
דוגמה (קוברנטס + CSI, מבחינה רעיונית)
yaml apiVersion: v1 kind: Pod metadata: { name: app }
spec:
serviceAccountName: app-sa # is associated with a role in Secret Manager volumes:
- name: secrets csi:
driver: secrets-store. csi. k8s. io readOnly: true volumeAttributes:
secretProviderClass: app-spc containers:
- name: app volumeMounts:
- mountPath: /run/secrets name: secrets readOnly: true
8) שילוב CI/CD ו ־ IAC
CI: עובדים מקבלים אסימונים קצרי ימים על פי OIDC (Workload Identity). איסור על סודות ”רעולי פנים” שנכנסים ליומנים; שלב ”דליפת סריקה” (כמהין/גיטליקס).
CD: פריסה לוקחת סודות בזמן התצוגה, לא כותבת אותם לחפצים.
IAC: Terraform מאחסן משתנים ב-Secret Manager; המדינה מוצפנת וגישה מוגבלת.
SOPS/AGE: עבור מניפסטים מוצפנים, מפתחות - תחת שליטת KMS.
דוגמה (רסיס SOPS)
yaml apiVersion: v1 kind: Secret metadata: { name: app }
data:
PASSWORD: ENC[AES256_GCM,data:...,sops:...]
sops:
kms:
- arn: arn:aws:kms:...
encrypted_regex: '^(data stringData)$'
version: '3. 8. 0'
9) מדיניות גישה ואימות עומס עבודה
זהות עומס עבודה: SPIFFE/SPIRE, Kubernetes SA # OIDC # IAM-operates, mTLS.
אסימונים זמניים: TTL קצר, היקף צר.
ABAC/RBAC במנהל סודי: ”מי שיכול לקרוא את הסוד X בסביבה Y” הוא נפרד מ ”מי יכול ליצור/לסובב”.
ריבוי דירות: אספות שמות נפרדות/טבעות מפתח לדייר; מדיניות ודיווח פרטניים.
10) סיבוב, גרסאות ותאימות
הפרד בין תעודת הזהות הסודית לבין הגרסה שלה (”secret/app/db # v17”).
תמוך בשתי גרסאות פעילות (N ו-N-1) לסיבוב ללא עצירה.
סיבוב הוא על בסיס אירוע: עם פיטורים, פשרה, שינוי של ספק, נדידה של אלגוריתמים.
אוטומט: Cron/backend rotation in Vault/Secret Manager + webhook triggers עבור יישום מחדש/reneval.
מתכון מיני ”דו-מפתח” webhook סיבוב
text
T0: we publish two secrets in the provider: current, next
T1: the application starts accepting signatures by both current and next
T2: external system switches signature to next
T3: we do next -> current, re-release new next
11) אחסון זמן ריצה: גיבויים וחפצים
לעולם אל תכנס לחפצים (תמונות, ארכיוני יומן, מצרכים).
גיבויים של מנהל סודי - הצפנה, מפתחות אחסון מחוץ לאותה לולאה (הפרדת חובות).
תגיות וסריקות DLP: גילוי סודות S3/Blob/GCS, Git, חפצי מודיע.
12) יכולת תצפית, ביקורת חשבונות ו ־ SLO
מטריצות: מספר נושאים/שירות חשאי, נתח של חכירה שפג תוקפה, TTL ממוצע, זמן סיבוב, זמן התכנסות (שניות/דקות לפני ”קבלת” הגרסה החדשה).
רישומי ביקורת: מי/מה/מתי/איפה/למה; אחסון בנפרד, גם מוצפן.
SLO: 99% פלט <200 ms; 0 דליפות ביומנים; 100% מהסודות יש בעלים/TTL/תגיות; 100% סודות קריטיים - דינמי או סיבוב 30 יום.
התראות: סוד פג <7 ימים (עבור סטטי), קפיצה בכשלי אימות לאחסון, אין סוד קורא> ימים (מתים), מקורות גיאו/ASN בלתי צפויים.
13) טעויות תכופות וכיצד להימנע מהן
סודות בגיט/דימויים. השתמש ב SOPS/גיל וסורקים; מדיניות לאסור שורות ”חשופות”.
מערבולת כמדיום לטווח ארוך. תן העדפה לקבצי tmpfs/in-memory; לנקות את הסביבה במזלגות/פסולת.
אותם סודות עבור dev/stage/prod. התחלק בסביבה.
סיסמאות סטטיות ארוכות חיים. לעבור לדינמי/קצר ימים.
מפתח מאסטר אחד "לכל דבר. "הפרד בדייר/פרויקט/שירות.
אין טעינה חמה. היישום דורש הפעלה מחדש של חלון הפגיעות במהלך הסיבוב.
14) דוגמאות של אינטגרציות (סכמות)
גישת Postgres דינמית של הכספת
hcl
Vault: role -> issues the user to the database with TTL 30m and privileges only to the app path "database/creds/app-role" {
capabilities = ["read"]
}
Application requests/database/creds/app-role -> receives (user, pass, ttl)
חתימת JWT של בקשות (טווח קצר)
המפתח הפרטי מאוחסן ב ”מנהל סודי”; השירות מבקש אות חתימה קצר ימים והסוכן המקומי חותם על המטען (המפתח אינו מועבר ליישום כמחרוזת).
תעודות SSH למנהלים
הנפקת SSH-Cert למשך 10 דקות באמצעות SSO (OIDC), ללא הפצת מפתחות קבועים.
15) בטיחות בקצוות
רישומים/שבילים/מדדים: מחטאים, מסננים עבור מפתחות/תבניות ידועות; שדות ”סודיים” - מסווה ב APM.
Dupps/Crush Reports: Cut by default; אם יש צורך - להצפין ולנקות.
יישומים/ניידים: מזעור סודות לא מקוונים, שימוש בפלטפורמה אחסון (Keychain/Keystore), קשירת התקן, סיכת TLS עם גלגול חירום.
16) ציות
PCI DSS: אוסר על אחסון פאן/סודות ללא הצפנה; בקרת גישה קפדנית וסבב.
ISO 27001/SOC 2 - ניהול נכסים, כריתת עצים, בקרת גישה, דרישות הגדרה מחדש
GDPR/ויסות מקומי: מזעור, גישה לפי הצורך, ביקורת.
17) תהליכים וספר ריצות
הזמנה
1. מלאי של סודות (מאגרים, מודיע, תמונות, זמן ריצה, גיבויים).
2. סיווג ותגים (בעלים, סביבה, דייר, מדיניות סיבוב).
3. קמרון/ענן SM + KMS/HSM אינטגרציה.
4. הגדרת פלט על ידי זהות טעינת עבודה (OIDC/SPIRE).
5. אפשר סודות דינמיים עבור DB/Cloud/PKI.
6. סיבוב אוטומטי וטעינה מחדש; התראות על תפוגה.
7. הגדרת סורקי דליפה וקטלוג נתונים/ET.
תרחישי חירום
דליפה חשודה: רשימת עצירות גישה, סיבוב מיידי, שלילת תעודות/מפתחות, הנפקה מחדש של אסימונים, אפשרות לביקורת מוגברת, RCA.
מנהל סודי אינו זמין: מטמון מקומי בזיכרון עם TTL נמוך, הפלת פונקציות, הגבלת חיבורים חדשים, מדרגות זכוכית פריצה ידניות.
פשרת מפתח שורש: התחדשות היררכית מפתח, ראפ מחדש של כל DEKs, בדיקת כל החשיפה לחלון הסיכון.
18) רשימות בדיקה
לפני המכירה
[ ] סודות הוסרו מקוד/תמונות; סורקי דליפה כולל.
[ ] המנגנונים הדינמיים מאפשרים סודות קריטיים.
[ משלוח ] באמצעות סירה/CSI/tmpfs עם-מחדש חם, ללא מערבולת עמידה.
[ ] מדיניות IAM/ABAC מוגדרת, מחויבת להעמיס זהות.
[ ] סיבוב אוטומטי וגרסאות כפולות (N, N-1) לתאימות.
[ ] Metrics/Audits/Audits operated; מבחני השפלה עברו.
מבצע
דו "ח חודשי : בעלים, TTL, סודות שפג תוקפם, ללא שימוש.
[ ] סיבובים תקופתיים ומבחני חדירה של נתיבי דליפה (רישומים, מצרכים, חפצים).
[ ] תכנית קריפטו-זריזות והחלפת חירום של CA/שורשים.
19) FAQ
קיו: האם המנהל הסודי ללא KMS מספיק?
א. ברמה הבסיסית - כן, אבל עדיף להשתמש בהצפנת מעטפות: KEK ב- KMS/HSM, סודות עטופים. זה מפשט משוב וציות.
ש: מה לבחור - סטטי או דינמיקה?
א ': ברירת המחדל היא דינמיקה. השאר סטטי רק היכן שאין ספקים נתמכים, וצרוב TTL עד ימים/שעות + סיבוב אוטומטי.
ש: איך להשליך סודות בבטחה לתוך המיקרו-רוטב?
Designate: Workload identity # MTLS Manager Secret # Sidecar/CSI + hot-reload. בלי בולי עץ, בלי קנאים ”לנצח”.
קיו: האם אני יכול לשמור סודות בסוד קוברנטס?
א ': רק עם הצפנת etcd מאופשרת עם ספק KMS ומדיניות קפדנית. מעדיף אחסון חיצוני וזיהוי פלילי.
קיו: איך אתה ”מוחק” גישה של דייר?
A: לבטל/לחסום את מדיניותו ב-Secret Manager, לבטל את כל החכירה, סיבוב מפתח/התחדשות; כאשר משתמשים ב ־ KMS - לא ניתן לנטרל את ה ־ KEK המתאים.
- ”בהצפנת מנוחה”
- ”בהצפנת מעבר”
- ”ניהול מפתח וסבב”
- ”אימות S2S”
- ”לחתום ולאמת בקשות”