Architecture Decision Record

Active theme: Light

← أمثلة على سجلات القرارات

تخزين الأسرار

المحتويات:

الملخص

المسألة

نحتاج إلى تخزين الأسرار، مثل كلمات المرور والمفاتيح الخاصة ورموز المصادقة وغيرها.

بعض الأسرار موجَّهة للمستخدم. فمثلًا، يريد مطورنا أن يستطيع استخدام هاتفه الجوّال للبحث عن كلمة مرور خدمة.

وبعض الأسرار موجَّهة للنظام. فمثلًا، يحتاج خط التسليم المستمر لدينا إلى أن يستطيع البحث عن بيانات اعتماد استضافتنا السحابية.

القرار

Bitwarden للأسرار الموجَّهة للمستخدم.

Vault by HashiCorp للأسرار الموجَّهة للنظام.

الحالة

تم القرار. ونحن منفتحون على بدائل جديدة كلما ظهرت.

التفاصيل

الافتراضات

لهذا الغرض، وفي وضعنا الحالي، نقدّر الراحة الموجَّهة للمستخدم، مثل تطبيقات الجوّال القابلة للاستخدام.

  • نريد ضمان وصول سريع وسهل أثناء التنقل، كما في حالة مطور يعمل في هندسة موثوقية الأنظمة أثناء المناوبة.

  • نريد أن نتمكن من مشاركة بعض الأسرار بين أشخاص مختارين، مثل فريق.

لا نحاول الحل لمزوّد وحيد، مثل تخزين كل الأسرار حصريًا على Amazon أو Azure أو Google.

لا نريد مناهج ارتجالية مثل «احفظها في ذاكرتك» أو «اكتبها في ورقة» أو «دبّر طريقتك الخاصة لتخزينها».

ونموذجنا الأمني لهذا الغرض لا يمانع استخدام موردين تجاريين جاهزين (COTS) محترمين، مثل أدوات إدارة كلمات المرور SaaS.

القيود

نريد الآن شيئًا سهلًا، أي لا حاجة إلى كتابة شيفرة، ولا حاجة إلى تثبيت خوادم، ولا حاجة إلى التزام كبير، ولا حاجة إلى توحيد الجميع.

المواقف

نظرنا في:

  1. مديرو كلمات المرور الجاهزون الموجَّهون للمستخدم: LastPass و1Password وBitwarden وDashlane وKeePass وpass وGPG وغيرها.

  2. مديرو كلمات المرور COTS الموجَّهون للنظام: AWS KMS وVault by HashiCorp وEnvKey وSecret Server by Thycotic وDevolutions Password Server وConfidant by Lyft.

  3. مناهج موجَّهة للمشاركة: استخدام مستند Google مشترك، أو قناة Slack مشتركة، أو مجلد شبكة مشترك، وغيرها.

  4. مناهج ارتجالية منخفضة التقنية، مثل الحفظ في الذاكرة أو كتابة ملاحظة أو الاعتماد على كل مستخدم ليدبّر نهجه الخاص.

الحجة

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 by HashiCorp

Vault هو بالضبط ما تريده هنا.

لكن لا تضع Vault مباشرةً في الإنتاج، بل شغّله أولًا في بيئة اختبار، لأن توثيق HashiCorp قد يكون ناقصًا جدًا حتى لو كانت منتجاتها مذهلة.

منحنى التعلم حاد جدًا وتشغيله ليس هينًا.

الإعداد الأولي مزعج قليلًا. لكنه يستحق العناء تمامًا، وسيدعمه المجتمع بما يكفي لتتدبر أمرك.

توثيق فظيع، لكن هناك كثيرًا من الأدلة على الإنترنت لأشخاص أعدّوه، وإذا جمعت بعضها فسيكون لديك إعداد يعمل.

تطلب الإعداد الأولي العبث بمخططات helm الخاصة بهم (vault وconsul). ورغم أنه يمكنك تقنيًا استخدام كثير من الواجهات الخلفية الأخرى، فإنني حقًا لا أوصي بذلك. ويمكن أن تكون الواجهة الخلفية/consul صغيرة جدًا إن لم يكن لديك بيانات كثيرة لتخزينها.

تعوّد بالتأكيد على استخدام سطر الأوامر (CLI)، لأن الواجهة الرسومية أقرب إلى إثبات مفهوم/بوابة إعلانية لنسخة المؤسسات لديهم.

كونك لا تستطيع ببساطة «ملأه» أمر مزعج. فمثلًا إذا كان لديك 5 حقول، عليك إضافة كل حقل يدويًا لكل عنصر. فليس الأمر أنك تعرّف مسبقًا حقولًا لفئة معينة وتملأ تلك الحقول لكل العناصر في تلك الفئة، بل هو أقرب إلى «تولّد كل شيء في كل مرة»، وهو (في رأيي) أمر مزعج.

قد ترغب أيضًا في النظر إلى goldfish بوصفه واجهة مستخدم فوق vault. فهو يجعل إقناع فريقك به أمرًا لطيفًا. ولديهم عرض توضيحي أيضًا. 1. أعدّ consul. 2. أعدّ vault يشير إلى consul. 3. أعدّ goldfish يشير إلى vault. 3. أعدّ مهمة cron لتشغيل consul snapshot للنسخ الاحتياطي.

LastPass

LastPass Teams. نستخدمه، وفيه قوالب مخصصة وACL، ولا ينقصه شيء في رأيي.

نفّذت LastPass في مؤسستي وأعطيه تقدير C+/B-. أكبر مشكلة في الآونة الأخيرة هي نقص الموثوقية. ففي آخر 90 يومًا كانت هناك ساعات متعددة أُجبرت فيها الخزائن (vaults) على الدخول في وضع عدم الاتصال. وهذا غير مثالي لمؤسستي لأن لدينا، حرفيًا، أكثر من 4,000 كلمة مرور مخزنة في أكثر من 20 مجلدًا مشتركًا. وكما يمكنك أن تتخيل، مع هذا العدد من كلمات المرور يُحدَّث أو يُضاف بعضها على الأقل يوميًا. ولدينا خطة تعافٍ من الكوارث إذا استمرت المشكلات أكثر من ساعة أو ساعتين: نص برمجي يوقّع ويشفّر كل ليلة تفريغ CSV للخزينة يمكن استيراده في keepass.

وقد شهد LastPass انقطاعات غير مُبلَّغ عنها في الخدمة: تسجيل الدخول «يعمل» لكنه لا يجلب المواقع، وميزات عشوائية معطلة في لوحة الإدارة، ولا تُشارَك المفاتيح بشكل صحيح للمجلدات المشتركة الجديدة من المستوى الأعلى. ولدي مستخدم محدد لـ«دفع المفاتيح»/النسخ الاحتياطي موجود في كل مجموعة. وعادةً ما يحل تسجيل الدخول بهذا المستخدم أي مشكلة في مشاركة المفاتيح، لكن ليس عندما تكون الخدمة متدهورة، مهما قالت صفحة الحالة...

وفيما يخص التكامل، قد يكون سهلًا إذا كانت لديك ACL مناسبة بنموذج أقل الامتيازات، مثلًا إذا كان للمستخدم قراءة وكتابة وقراءة فقط على إدخال أو مجلد فإنه يحصل على أذونات القراءة فقط. ولسوء الحظ، ACL في مؤسستي ليست الأفضل، فانتهى بي الأمر إلى استخدام واجهة التزويد JSON البرمجية ونحو 500 سطر من python لأن الطبيعة الاعتمادية لمئات ACL لدينا لا تتوافق جيدًا مع نموذج أقل الامتيازات. وفي النهاية جلبت كل ACL التي كان المستخدم ضمنها وأجريت نوعًا من المشي عبر الاعتماديات.

وإذا كان هيكل ACL أو المجموعات لديك مبنيًا بالفعل مع أخذ بنية أقل الامتيازات في الحسبان، فسيعمل جيدًا أداة المزامنة AD/LDAP لنظام Windows.

تواصل مع فريق مبيعاتهم ويمكنهم منحك تجربة مؤسسية أطول. وتأكد من فهم حدودها بالكامل قبل اتخاذ القرار. مررنا بعدد لا بأس به من آلام النمو، لكن بصرف النظر عن الانقطاعات أو الاختلالات من جهة الخادم، كان الأمر سلسًا بشكل لا يصدق.

Bitwarden

لدى Bitwarden أدوات جيدة حوله (واجهة ويب وسطر أوامر وجوّال وسطح مكتب). يمكن استضافته ذاتيًا وإعداده سهل نسبيًا. توثيق جيد نسبيًا، وهو أداة موصى بها من PrivacyTools.

EnvKey

https://www.envkey.com/ خدمة SaaS. سهلة جدًا في التنفيذ والدمج والإدارة.

الميزات:

  • حماية مفاتيح الواجهات البرمجية وبيانات الاعتماد.

  • إبقاء الإعدادات متزامنة في كل مكان.

  • إدارة ذكية للإعدادات والأسرار مشفّرة من طرف إلى طرف.

  • منع المشاركة غير الآمنة وتشتت الإعدادات.

  • الدمج في دقائق.

القدرات:

  • إدارة الإعدادات ومستويات الوصول لكل تطبيقاتك وبيئاتك وفرقك في مكان واحد.

  • إعداد أي بيئة تطوير أو خادم بمتغير بيئة واحد فقط.

المزايا:

  • صفحة رئيسية جيدة.

  • عرض قيمة واضح.

  • تطبيق ويب ممتاز بصريًا.

  • بيانات نموذجية متفوقة، مثل Algolia وAWS وDatadog وGitHub وStripe وغيرها.

  • تحدثت مع المؤسس 30 دقيقة عن الشركة وواجهة المستخدم وغيرها. يبدو Dane واسع الاطلاع، وصريحًا بشأن الإيجابيات والسلبيات، وشريكًا قابلًا للتطبيق.

  • الشركة في الأساس شركة نموذجية من Y Combinator، بمؤسس واحد. جمعت 120 ألف دولار في 2018-01.

  • التركيز على الوصول إلى ميزات المؤسسات، خصوصًا الانتقال من الاستضافة السحابية لـEnvKey إلى الاستضافة المحلية أو BYOC.

  • مسار محتمل للمضي قدمًا: البدء بـEnvKey لسهولة الاستخدام، ثم لاحقًا (أو بالتوازي) إضافة Vault.

Confidant by 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 by Thycotic

https://thycotic.com/products/secret-server/

ميزات النسخة المحلية (on-premise):

  • تحكم كامل في أنظمة الأمان والبنية التحتية من طرف إلى طرف

  • انشر البرمجيات داخل مركز بياناتك المحلي أو نسخة السحابة الخاصة الافتراضية لديك

  • استوفِ الالتزامات القانونية والتنظيمية التي تتطلب بقاء كل البيانات والأنظمة محليًا

ميزات النسخة السحابية:

  • يتيح نموذج البرمجيات بوصفها خدمة التسجيل والبدء فورًا

  • قابلية توسع مرنة مع نموك

  • ضوابط وتكرار توفرهما Azure باتفاقية مستوى خدمة (SLA) بتوافر 99.9%

ملاحظات المستخدمين:

  • كنا نستخدم ذلك المنتج. كان من السهل جدًا تجاوزه وتعمل القواعد مع الأذكياء فقط. ويمكن للمستخدمين الكسالى أو الأغبياء إفساده بسهولة في منطقة الفريق. الأسعار قابلة للتفاوض عند التحدث معهم.

  • يمكنك تشغيله باستخدام SQL express وجهاز Win 7.

  • رخيص.