‫حسنًا
‫، إذن ميزة جديدة في 1. 13. 1 كان الدعم الكامل للأسرار.
‫إذا اضطررت إلى إنشاء سطر تعريف لما هو هذا ، فهو في الأساس الحل الآمن الأسهل لتخزين الأسرار في Swarm.
‫'أقول
‫إنه الأسهل لأنه مدمج في Swarm ، ويخرج من الصندوق ، ولا
‫يوجد ما تحتاج إلى القيام به لاستخدامه. طالما أنك قمت بتهيئة سربك ونسختك
‫في الإصدار 1. 13 أو أحدث
‫، لديك أسرار. أقول إنه آمن لأنه تم تصميمه من الألف إلى الياء ليتم
‫تشفيره على القرص ليتم تشفيره أثناء النقل ويكون متاحًا فقط في الأماكن التي يحتاجها.
‫وهذا حقًا ما نحتاجه.
‫إذن ما هو السر؟ السر ، في هذه الحالة ، هو تصنيف أي شيء لا تريده على
‫الصفحة الأولى من الصحيفة. إذا ظهرت على الصفحة الأولى وكان عليك
‫تغييرها ، فهذا سر.
‫إنه اسم مستخدم أو كلمة
‫مرور ، إنه شهادة TLS أو مفاتيح لذلك
‫، إنه مفتاح SSH ، إنه
‫مفتاح Twitter API ، إنه مفتاح أمازون ، إنه أي شيء تحتاجه للسماح بالاتصال بين الأشياء ربما
‫يكون سرًا ويجب عليك تحميها.
‫حتى الآن لم يكن لدينا الكثير من الخيارات الرائعة لـ Swarm.
‫من المؤكد أن هناك الكثير من الخيارات المتاحة مثل Vault والأدوات الرائعة الأخرى لتخزين الأسرار
‫، لكنها لم تكن مدمجة وكانت تتطلب إعداد بنية تحتية منفصلة حتى تتمكن من البدء في
‫استخدامها.
‫لذا ، يمكننا أن نخزن هنا أي شيء يصل إلى سلسلة أو ثنائي. 5 ميغا بايت في الحجم.
‫وأروع جزء في هذا الأمر هو أنه لا يتطلب في الواقع إعادة كتابة تطبيقك من أجل
‫استخدامه.
‫لست مضطرًا لأن يتحدث تطبيقك إلى خدمة ويب في مكان آخر من أجل الحصول عليها.
‫لذلك دعونا نرى كيف يعمل.
‫اعتبارًا من 1. 13. 0 يتم تشفير قاعدة بيانات Swarm Raft على القرص افتراضيًا. إذا قمت بتثبيت Docker وقمت
‫بإجراء سرب كما فعلنا من قبل ، فهذه قاعدة
‫بيانات مشفرة.
‫وعندما تغلق الخدمة ، يتم تشفيرها بالمفاتيح المخزنة بأمان.
‫يتم تخزينه فقط على قرص عقد المدير وهم الوحيدون الذين لديهم مفاتيح
‫لفتحه أو فك تشفيره.
‫هذا موجود بالفعل في Swarm ، ولكن الطريقة التي تصل بها المفاتيح
‫إلى الحاويات هي من خلال مستوى التحكم أو اتصالات شبكة TLS المشفرة
‫بين المديرين والعاملين. وكان هذا الاتصال آمنًا بالفعل ، فقد استخدم بالفعل TLS ومصادقة
‫PKI المتبادلة ، لذلك كانت طريقة رائعة لاستخدام تلك القناة الحالية لإحضار هذه الأسرار إلى حاوياتنا.
‫الطريقة التي نحصل عليها بها هي أننا في الواقع نضعها أولاً في قاعدة بيانات Swarm باستخدام أوامر Docker
‫secrets.
‫ثم نقوم بتعيينهم للخدمات سواء استخدمنا أوامر الخدمة بأنفسهم أو ملف مكدس لإخبار
‫Swarm بمن يُسمح له باستخدام هذا السر. المفتاح هنا هو أنه لمجرد وجود حاوية على مضيف أو على عقدة
‫وقمت بتعيين المفتاح لتلك الخدمة ، لا يعني أنه يمكن للحاويات الأخرى الوصول
‫إليها.
‫نظرًا لأن هذا مدمج في Docker Engine ، فإن عامل Docker يحافظ على هذا المفتاح آمنًا في الذاكرة فقط ولا يصل إلا إلى
‫الحاويات الموجودة على تلك العقدة التي تحتاجها.
‫الآن ، كيف يتم تقديمها في نظام الملفات إلى الحاوية ، هل تبدو كملف على القرص الصلب لتطبيقاتك
‫داخل الحاوية.
‫لكن الأمر ليس كذلك في الواقع. انهم لا يعملون في الواقع على القرص. إنهم في الذاكرة فقط باستخدام
‫نظام ملفات ramfs وستصل إليهم أسفل الدليل / run / secrets حيث سيكون ، افتراضيًا ، الاسم
‫الذي أعطيته للسر كملف.
‫ثم عندما تصل إلى هذا الملف ، سترى السر الوحيد الموجود فيه.
‫إذا كنت تعتقد أن هذا مثل مخزن القيمة
‫الرئيسية ، فإن المفتاح هو اسم الملف والقيمة هي ما بداخله.
‫يمكننا أيضًا إعداد الأسماء المستعارة حتى نتمكن من الحصول على أسماء متعددة لنفس المفتاح وسنرى كيف يتم
‫تشغيل ذلك لاحقًا.
‫بالنسبة للتطوير المحلي ، إذا كنت تستخدم ملف مكدس يحتوي على مهام سرية فيه ، فسيعمل بالفعل في Docker
‫Compose على جهازك المحلي.
‫الآن مرة أخرى ، يجب عدم استخدام docker-compose ، سطر الأوامر ، في الإنتاج على خادم الإنتاج.
‫في هذه الحالة على وجه الخصوص ، هو في الواقع مزيف للأمن.
‫إذن ما يحدث هو أننا نريد حقًا أن يتمكن مطور Docker أو مستخدم Docker على أجهزتهم من استخدام
‫ملفات المكدس قدر الإمكان.
‫لذا فإن الحاويات التي تقوم بتشغيلها على جهازك المحلي ، سترى الأسرار تمامًا كما
‫لو كانت في Swarm.
‫لكن ليس لدينا Swarm على أجهزتنا المحلية ما لم نهيئها هناك ، وهو
‫ما لن يفعله معظم الناس.
‫والطريقة التي نخزن بها الأسرار موجودة في قاعدة بيانات Swarm.
‫لذلك قد يكون هذا واضحًا بالنسبة لك ولكن الأسرار تعتمد على Swarm. إنه شيء سرب فقط. إذا لم يكن لديك Swarm ،
‫فلا يمكنك استخدام الأسرار.
‫ومع ذلك ، يحتوي أمر docker-compose على حل بديل حيث يقوم بالفعل بتثبيت الأسرار في ملف نصي
‫واضح في الحاوية المحلية.
‫الآن هذا ليس آمنًا ، لكنه يسمح لنا باستخدام الأسرار محليًا على أجهزتنا.
‫إنه ليس شيئًا تريد استخدامه في الإنتاج ، ولهذا السبب لدينا متجر آمن لـ
‫Swarm.