אחסון סודות
תוכן העניינים:
סיכום
בעיה
אנו צריכים לאחסן סודות, כמו סיסמאות, מפתחות פרטיים, אסימוני אימות וכדומה.
חלק מהסודות מוכוונים למשתמשים. לדוגמה, המפתח שלנו רוצה להיות מסוגל להשתמש בטלפון הנייד שלו כדי לחפש סיסמה לשירות.
חלק מהסודות מוכוונים למערכת. לדוגמה, צינור המסירה הרציפה שלנו צריך להיות מסוגל לחפש את פרטי הזיהוי לאירוח הענן שלנו.
החלטה
Bitwarden לסודות מוכוונים למשתמשים
Vault של HashiCorp לסודות מוכוונים למערכת.
מצב
הוחלט. אנו פתוחים לחלופות חדשות כשיופיעו.
פרטים
הנחות
למטרה הזו, ובמצבנו הנוכחי, אנו מעריכים נוחות מוכוונת משתמשים, כמו אפליקציות נייד שימושיות.
אנו רוצים להבטיח גישה מהירה וקלה תוך כדי תנועה, למשל למפתח שעוסק בהנדסת אמינות מערכות בכוננות.
אנו רוצים להיות מסוגלים לשתף כמה סודות בין אנשים נבחרים, כמו צוות.
איננו מנסים לפתור עבור ספק יחיד, כמו אחסון כל הסודות אך ורק ב-Amazon או ב-Azure או ב-Google.
איננו רוצים גישות אד-הוק כמו "לזכור את זה" או "לכתוב את זה על פתק" או "למצוא דרך משלך לאחסן את זה".
מודל האבטחה שלנו למטרה הזו מסתדר עם שימוש בספקי COTS מכובדים, כמו כלי ניהול סיסמאות כ-SaaS.
אילוצים
כרגע אנו רוצים משהו קל, כלומר אין צורך לכתוב קוד, אין צורך להתקין שרתים, אין צורך להתחייב התחייבות גדולה, אין צורך לתקנן את כולם.
עמדות
שקלנו:
מנהלי סיסמאות מוכנים מהמדף מוכווני משתמשים: LastPass, 1Password, Bitwarden, Dashlane, KeePass, pass, GPG וכדומה.
מנהלי סיסמאות COTS מוכווני מערכת: AWS KMS, Vault של HashiCorp, EnvKy, Secret Server של Thycotic, Devolutions Password Server, Confidant של Lyft.
גישות מוכוונות שיתוף: שימוש במסמך Google משותף, או בערוץ Slack משותף, או בתיקיית רשת משותפת וכדומה.
גישות אד-הוק דלות טכנולוגיה, כמו לזכור, לכתוב פתק, או להסתמך על כל משתמש שימצא גישה משלו.
טיעון
Bitwarden, LastPass, 1Password ו-Dashlane כולם מוצרים מוכנים מהמדף מסחריים.
סוגי יכולות דומים למשתמשים, לצוותים, לארגונים וכדומה.
יכולת שולחן עבודה ל-Windows ול-Mac, ויכולת נייד ל-Android ול-iOS.
תוספי דפדפן ל-Chrome ול-Firefox, למילוי אוטומטי של טפסים וכדומה.
ל-Bitwarden יש שני יתרונות על פני האחרים:
Bitwarden היא בקוד פתוח, כלומר אפשר לסקור את האבטחה בסקירת עמיתים וגם החברה זוכה להערכה רחבה בקרב מפתחים מוכווני אבטחה.
אנקדוטות מעובדי תוכנה מתארות העדפה משמעותית ל-Bitwarden על פני האחרים.
כתבה טיפוסית טובה לדוגמה: https://jcs.org/2017/11/17/bitwarden
אתר הצבעה טיפוסי של השוואה זו לצד זו: https://stackshare.io/stackups/bitwarden-vs-dashlane
אנו דוחים את KeyPass, pass, GPG וכדומה כי יש בהם מורכבות נוספת. כל אלה נראים כפתרונות טובים למשתמשים טכניים. GPG נראה טוב במיוחד למשתמשים טכניים שרוצים יכולות בין-מערכתיות מוכוונות פקודה.
אנו דוחים את KMS כי יש בו נעילה אצל ספק יחיד.
אנו בוחרים ב-Vault לצרכים מוכווני מערכת, כי הביקורות חיוביות להפליא, וכי ל-HashiCorp יש רקורד מצוין של תוכנה ותמיכה ברמה הגבוהה ביותר.
אנו פוסלים בווטו גישות שיתוף כמו מסמכים משותפים, ערוצים משותפים, תיקיות רשת משותפות וכדומה. אלה אינן מספקות את איכויות האבטחה שאנו רוצים.
אנו פוסלים בווטו את הגישות האד-הוק דלות הטכנולוגיה, כי כולנו מסכימים שזה לא מסלול קדימה לטווח ארוך.
השלכות
ייתכן שמפתחים יצטרכו לעקוב אחר סודות בשני מקומות: Bitwarden לגישה מוכוונת משתמשים, ו-Vault לגישה מוכוונת מערכת.
נושאים קשורים
החלטות קשורות
ההחלטה איזה שרת CI/CD חייבת לכלול הוכחת יכולת לגישה לסודות.
נצטרך להחליט איך לנהל את הסודות, מבחינת מדיניות, החלפות, ארגונים וכדומה.
דרישות קשורות
לסודות יהיו דרישות קשורות לציות, לביקורת ולקליטה/עזיבה של משאבי אנוש.
תוצרים קשורים
אנו מצפים שנייצא כמה סודות למשתני סביבה.
עקרונות קשורים
הפיך בקלות.
מקבילי בקלות, כלומר קל להשתמש במגוון מנהלי סיסמאות.
זול לניסוי, כלומר יש תקופת ניסיון חינמית וללא התחייבות.
הערות
הערות הערכה כאן. ההערות הן כולן תגובות ציבוריות בלוחות דיון שונים של devops.
Vault של HashiCorp
Vault הוא בדיוק מה שאתם רוצים כאן.
אבל אל תזרקו סתם את Vault לייצור, הקימו אותו תחילה בסביבת בדיקות, כי התיעוד של HashiCorp יכול להיות די חסר גם אם המוצרים שלהם מדהימים.
עקומת למידה תלולה מאוד וההקמה אינה טריוויאלית.
ההקמה הראשונית היא קצת כאב. אבל היא שווה את זה לגמרי, והקהילה תתמוך בו מספיק כדי שתסתדרו.
תיעוד איום אבל יש הרבה מדריכים באינטרנט של אנשים שהקימו אותו ואם תחברו כמה מהם תקבלו הקמה עובדת.
ההקמה הראשונית דרשה התעסקות עם ה-helm charts שלהם (vault ו-consul). אף שטכנית אפשר להשתמש בהרבה backends אחרים, אני ממש ממש לא ממליץ על כך. ה-backend/consul יכול להיות זעיר אם אין לכם המון נתונים לאחסן.
בהחלט תרגלו והכירו את השימוש ב-CLI, כי ה-GUI הוא יותר כמו הוכחת היתכנות / פורטל פרסום לגרסת ה-enterprise שלהם.
העובדה שאי אפשר פשוט "למלא אותו" היא כאב. לדוגמה אם יש לכם 5 שדות צריך להוסיף ידנית כל שדה לכל פריט. כך שזה לא כאילו מגדירים מראש שדות לקטגוריה מסוימת, וממלאים את השדות האלה לכל הפריטים בקטגוריה, זה יותר כמו "מייצרים הכול בכל פעם", וזה (לדעתי) כאב ראש.
אולי כדאי לכם גם להסתכל על goldfish כממשק משתמש מעל vault. הוא הופך את זה לנעים למדי לשכנע את הצוות שלכם. יש להם גם הדגמה. 1. מקימים consul. 2. מקימים vault שמצביע ל-consul. 3. מקימים goldfish שמצביע ל-vault. 3. מגדירים עבודת cron להרצת consul snapshot לגיבויים.
LastPass
LastPass Teams. אנו משתמשים בו, יש לו תבניות מותאמות, ACL, לא חסר דבר לדעתי.
הטמעתי את LastPass בארגון שלי ואני נותן לו C+/B-. הבעיה הגדולה ביותר לאחרונה היא חוסר אמינות. ב-90 הימים האחרונים היו מספר שעות שבהן כספות נאלצו לעבור למצב לא מקוון. זה לא אידיאלי עבור הארגון שלי כי יש, פשוטו כמשמעו, יותר מ-4,000 סיסמאות מאוחסנות ביותר מ-20 תיקיות משותפות. כפי שאפשר לדמיין, עם כל כך הרבה סיסמאות לפחות כמה מתעדכנות או מתווספות מדי יום. יש לנו תוכנית התאוששות מאסון אם התקלות נמשכות יותר משעה או שעתיים: סקריפט חותם ומצפין מדי לילה ייצוא CSV של הכספת שאפשר לייבא ל-keepass.
ל-LastPass היו הפרעות לא מדווחות של שירות מופחת: התחברות 'עובדת' אבל לא מושכת אתרים, יכולות אקראיות בלוח הניהול שבורות, ואי-שיתוף תקין של מפתחות לתיקיות משותפות חדשות ברמה העליונה. יש לי משתמש ייעודי ל'דחיפת מפתחות'/גיבוי שנמצא בכל קבוצה. בדרך כלל התחברות כמשתמש הזה מתקנת כל בעיית שיתוף מפתחות, אבל לא כשהשירות מופחת, למרות מה שדף המצב אומר...
לאינטגרציה זה יכול להיות קל אם יש לכם ACL תקינים עם מודל הרשאות מינימליות, למשל אם למשתמש יש קריאה וכתיבה וגם קריאה בלבד על רשומה או תיקייה, הוא מקבל רק הרשאות קריאה בלבד. למרבה הצער ה-ACL של הארגון שלי אינם הטובים ביותר, ולכן בסופו של דבר השתמשתי ב-JSON provisioning API ובכ-500 שורות Python, מפני שהאופי התלותי של מאות ה-ACL שלנו אינו ממופה היטב למודל ההרשאות המינימליות. בסופו של דבר אספתי את כל ה-ACL שבהם משתמש נמצא וביצעתי מעין הליכה על התלויות.
אם מבנה ה-ACL או הקבוצות שלכם כבר נבנה מתוך מחשבה על מבנה הרשאות מינימליות, כלי הסנכרון AD/LDAP ל-Windows יעבוד היטב.
פנו לצוות המכירות שלהם והם יכולים לספק לכם תקופת ניסיון ארוכה יותר ל-Enterprise. הקפידו להבין היטב את המגבלות שלו לפני שמחליטים. היו לנו לא מעט כאבי גדילה, אבל מלבד הפסקות או פגיעות בצד השרת, זה היה חלק להפליא.
Bitwarden
ל-Bitwarden יש כלים נחמדים סביבו (WebUI, CLI, Mobile, Desktop). באירוח עצמי ודי קל להקמה. תיעוד די טוב וכלי מומלץ על ידי PrivacyTools.
EnvKey
https://www.envkey.com/ הוא saas. ממש קל למימוש, לשילוב ולניהול.
יכולות:
הגנה על מפתחות API ופרטי זיהוי.
שמירה על הגדרות מסונכרנות בכל מקום.
ניהול הגדרות וסודות חכם, מוצפן מקצה לקצה.
מניעת שיתוף לא מאובטח ופיזור הגדרות.
שילוב תוך דקות.
אפשרויות:
ניהול הגדרות ורמות גישה לכל היישומים, הסביבות והצוותים שלכם במקום אחד.
הגדרת כל סביבת פיתוח או שרת עם משתנה סביבה יחיד בלבד.
יתרונות:
דף בית טוב.
הצעת ערך ברורה.
יישום ווב מצוין ויזואלית.
נתוני דוגמה מעולים, למשל Algolia, AWS, Datadog, GitHub, Stripe וכדומה.
שוחחתי עם המייסד 30 דקות על החברה, ממשק המשתמש וכדומה. Dane נשמע מושכל, כן לגבי היתרונות/החסרונות, ושותף ברת קיימא.
החברה היא בעיקרון חברת Y Combinator טיפוסית, עם מייסד אחד. גייסה 120 אלף דולר ב-2018-01.
המיקוד הוא בהגעה ליכולות enterprise, במיוחד מעבר מאירוח ענן של EnvKey ל-on-prem או ל-BYOC.
נתיב קדימה אפשרי: להתחיל ב-EnvKey לנוחות שימוש, ואז בהמשך (או במקביל) להוסיף את Vault.
Confidant של Lyft
https://lyft.github.io/confidant/
Confidant הוא שירות ניהול סודות בקוד פתוח שמספק אחסון וגישה ידידותיים למשתמש לסודות בצורה מאובטחת, ממפתחי Lyft.
אימות KMS: Confidant פותר את בעיית הביצה והתרנגולת של האימות באמצעות AWS KMS ו-IAM כדי לאפשר לתפקידי IAM להפיק אסימוני אימות מאובטחים שאפשר לאמת על ידי Confidant. Confidant גם מנהל מענקי KMS לתפקידי ה-IAM שלכם, מה שמאפשר לתפקידי ה-IAM להפיק אסימונים שאפשר להשתמש בהם לאימות בין שירותים, או להעברת הודעות מוצפנות בין שירותים.
הצפנת סודות מגורסאים במנוחה: Confidant מאחסן סודות באופן של הוספה בלבד ב-DynamoDB, ומפיק מפתח נתונים ייחודי של KMS לכל גרסה של כל סוד, באמצעות קריפטוגרפיה סימטרית מאומתת Fernet.
ממשק ווב ידידותי למשתמש לניהול סודות: Confidant מספק ממשק ווב מבוסס AngularJS שמאפשר למשתמשי קצה לנהל בקלות סודות, את המיפויים של סודות לשירותים ואת היסטוריית השינויים.
Devolutions Password Server
https://server.devolutions.net/
אבטחה, ניהול וניטור של גישה לחשבונות והפעלות בעלי הרשאות.
כספת סיסמאות מקיפה ומאובטחת מאוד שמאפשרת לשלוט בגישה לחשבונות בעלי ההרשאות שלכם, תוך שיפור הנראות הכוללת של הרשת עבור מנהלי מערכות וחוויה חלקה למשתמשי קצה.
יכולות: כספת סיסמאות ארגונית מרכזית, כספת פרטית ייעודית למשתמש, מנהל סיסמאות, הזרקת פרטי זיהוי, שילוב Active Directory, בקרת גישה מבוססת תפקידים, אימות דו-שלבי, מוכנות ארגונית, הגבלות IP, יכולות ניהול, מחולל סיסמאות אוטומטי, גישה מיישום נייד, היסטוריית סיסמאות, דוחות גישה, התראות דוא"ל.
תומך בהצפנת נתונים
תומך במספר סכמות אימות כולל LDAP, O365 ומשתמשים מקומיים עם תמיכה ב-MFA ממקורות מרובים
מספר מאגרים/כספות עם בקרות גישה מדויקות למספר צוותים
ממשק ווב מודרני
כספות פרטיות לפרטי זיהוי וחיבורים אישיים
יישומי נייד ל-iOS/Android
יומני ביקורת לכל רשומה, מי/מה/מתי עם בקשה אופציונלית לציין למה הם ניגשים
תבניות הניתנות להתאמה (אף שהם תומכים באופן מקורי במאות סוגי חיבורים)
עוד המון יכולות ולקוח עבה ל-Windows/Mac (Remote Desktop Manager) שאפשר לסנכרן אליו, שמרחיב מאוד את האפשרויות... חיבורים בלחיצה אחת
התמחור לא כל כך גרוע - עד 15 משתמשים עולה 500 דולר בשנה לשרת הסיסמאות
Secret Server של Thycotic
https://thycotic.com/products/secret-server/
יכולות גרסת on-premise:
שליטה מלאה במערכות ובתשתית האבטחה שלכם מקצה לקצה
פריסת התוכנה בתוך מרכז הנתונים המקומי שלכם או במופע ענן פרטי וירטואלי משלכם
עמידה בהתחייבויות משפטיות ורגולטוריות שדורשות שכל הנתונים והמערכות ימצאו בארגון
יכולות גרסת הענן:
מודל תוכנה כשירות שמאפשר להירשם ולהתחיל מיד
יכולת הרחבה אלסטית ככל שאתם גדלים
בקרות ויתירות שמספקת Azure עם SLA של זמינות 99.9%
משוב משתמשים:
השתמשנו במוצר הזה. אפשר היה לעקוף אותו בקלות כזו והכללים עובדים רק עבור אנשים חכמים. משתמשים עצלנים או טיפשים יכולים בקלות להרוס הכול באזור צוות. מחירים ניתנים למשא ומתן כשמדברים איתם.
אפשר להריץ אותו באמצעות SQL express ומכונת Win 7.
זול.