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

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

ثلاث فئات، ثلاثة قرارات

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

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

ما يحتاجه العملاء، ولا شيء أكثر

اسمح لمصادر التطبيقات المقصودة بالوصول إلى نقاط نهاية العملاء للإصدار المنشور، وأبقِ خدمات العنقود والإدارة غير ذات الصلة خارج ذلك النطاق. ثم تحقق من كيفية اكتشاف برنامج التشغيل للعُقد. نقطة اتصال أولية يمكن الوصول إليها لا تثبت أن كل عنوان عقدة يختاره برنامج التشغيل بعد ذلك يمكن الوصول إليه من سياق العميل ذلك، لأن برنامج التشغيل يسأل العنقود عن الأقران ثم يتصل بكل العناوين التي يعلنها العنقود.

لهذا ينتج عدم تطابق واحد في العنوان الخاص النمط المألوف: اتصال أول ناجح تتبعه مهل. اضبط العناوين المعلنة وتوجيه العميل بشكل مقصود؛ فنشر العنقود كله على الإنترنت لإصلاح عدم تطابق واحد يقايض خطأ توجيه بتعرّض لا يمكن التراجع عنه.

أبقِ مصادقة قاعدة بيانات التطبيق وأذونات الأدوار في مكانها أيضًا. عنوان VPN مشترك ومترجم قد يمثل مستخدمين أو خدمات كثيرة، لذا فهو ليس بديلاً أبدًا عن هويات قاعدة بيانات متمايزة.

شفّر الاتصال بين العميل والعقدة وبين العُقد بشكل منفصل

تتعامل وثائق الأمان الخاصة بـ Apache مع التشفير بين العميل والعقدة وبين العُقد كإعدادين منفصلين، وتمكين أحدهما لا يمكّن الآخر. هذا التمييز ينطبق داخل VPN أيضًا، لأن النفق يحمي مقطعه الخاص ولا يمتد تلقائيًا من عملية التطبيق إلى عملية قاعدة البيانات أو بين كل زوج من أعضاء العنقود.

الإعداد الذي يمكّن كليهما صراحةً، بدلاً من وراثة قيمة افتراضية من قالب، يبدو تقريبًا هكذا:

client_encryption_options:
  enabled: true
  optional: false
server_encryption_options:
  internode_encryption: all

في إعدادات الخادم التي تسمح بتشفير العميل الاختياري، يمكن أن يتعايش قبول TLS مع قبول اتصالات غير مشفرة، لذا اقرأ السياسة الفعلية لا النية. خطط لأسماء الشهادات وتوزيع الثقة وتجديدها لنقاط النهاية التي يتصل بها كل عميل فعلاً؛ فاستبدال اسم مضيف بعنوان IP يغيّر فحص هوية العميل، وليس مساره فقط.

أبقِ الإدارة على مسارها الخاص

تحتاج حركة الاتصال بين العُقد إلى مجموعة الأقران المسموح بها وإلى سياسة حماية خاصة بها. الوصول الإداري، بما في ذلك JMX حيث يُستخدم، يحتاج إلى فئة منفصلة ومصادقة خاصة به. التطبيق المسموح له بإصدار استعلامات عادية لا يحتاج بذلك إلى كل قدرة إدارية، والعكس أسوأ: المسار الإداري المكشوف لمقطع التطبيق هو أقصر طريق من خطأ برمجي إلى إعادة بناء. اكتب هاتين الفئتين بشكل منفصل، وسمِّ مالكيهما، لأنهما عادةً فريقان مختلفان دُمجت قواعدهما بالخطأ.

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

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

ما يَعِد به التصميم

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

اختم بثلاث جمل في وثيقة التصميم: أي عملاء يمكنهم الاستعلام، وأي عُقد يمكنها التواصل، وأي مشغّلين يمكنهم الإدارة. كونك خلف VPN معلومة طوبولوجيا مفيدة، لكنها ليست إجابة على أي من هذه الأسئلة الثلاثة.

مقالات ذات صلة