الوكلاء
أمان أداة قاعدة البيانات
كيف تُحمى سلسلة الاتصال الخاصة بك، ولماذا أدوات قواعد البيانات للقراءة فقط، وما الذي يراه الوكيل، وما الذي يُحفظ ويُسجَّل.
ربط قاعدة البيانات يمنح إيكونوڤا بيانات اعتماد حية إلى بياناتك، لذلك حدّد بيانات الاعتماد وقائمة الأسئلة مع أخذ ذلك في الاعتبار. تغطي هذه الصفحة ما يستطيع الوكيل فعله بالاتصال، وما ينبغي أن تمنحه إياه، وما يُحفظ بعد ذلك. الخطوات موجودة في ربط قاعدة بيانات ومراجعة أسئلة قاعدة البيانات واعتمادها.
للقراءة فقط، وثابتة مسبقًا
هذه الميزة تقرأ فقط. لا يوجد مسار يكتب، والمحركات الثلاثة المدعومة كلها مصادر للقراءة فقط. كل سؤال معتمد هو قراءة.
والأهم من ذلك أن الوكيل لا يكتب SQL أثناء المحادثة. يختار من الأسئلة التي اعتمدتها، وكل سؤال منها استعلام ثابت بمعاملات مسماة، ويزوّد الوكيل قيم المعاملات. السؤال الذي لم يعتمده أحد لا يكون موجودًا في المحادثة أصلًا، فسطح الوصول للوكيل هو القائمة التي وقّعت عليها، ولا شيء غيرها.
عند تسجيل الاتصال، تتحقق إيكونوڤا مما إذا كان TLS قد تحقق، وما إذا كان المستخدم يبدو للقراءة فقط، وتعرض النتيجتين على الاتصال: شارة TLS، وعند عدم نجاح الفحص الثاني شارة للقراءة فقط: إرشادي مع العبارة «يمكن للدور إنشاء جداول مؤقتة. وتُفرض صلاحية القراءة فقط على الجلسات في جميع الأحوال — وهذه المعلومة إرشادية فقط.» هذه النتيجة الثانية إرشادية وليست مانعًا.
أعطه أصغر مستخدم ممكن
الفحص الإرشادي ليس بديلًا عن مستخدم مقيّد. أي شيء يستطيع الاعتماد فعله، يستطيع سؤال معتمد عليه فعله.
أنشئ مستخدم قاعدة بيانات مخصصًا للقراءة فقط لإيكونوڤا، وامنحه صلاحية SELECT على الجداول التي يحتاجها الوكيل فقط، ولا شيء غيرها. لا يمكن قراءة سلسلة الاتصال أو تعديلها بعد حفظها، فالمستخدم الذي يملك صلاحيات أكثر مما قصدت يجب إصلاحه من طرفك، ثم إعادة تسجيل الاتصال.
الموصى به
CREATE ROLE echonova_ro LOGIN PASSWORD '…';
GRANT CONNECT ON DATABASE shop TO echonova_ro;
GRANT USAGE ON SCHEMA public TO echonova_ro;
GRANT SELECT ON orders, order_lines, shipments TO echonova_ro;
ALTER ROLE echonova_ro SET default_transaction_read_only = on;الأقل فاعلية
CREATE ROLE echonova_ro LOGIN PASSWORD '…';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO echonova_ro;هناك خياران آخران يستحقان قرارًا متعمدًا:
- وجّه الاتصال إلى نسخة للقراءة (read replica) بدلًا من الخادم الرئيسي عندما تتوفر لديك. تعمل الاستعلامات أثناء المحادثات المباشرة، فتتنافس مع حركتك أنت.
- اشترط TLS على المستخدم أو على الخادم، حتى لا ينجح اتصال بدونه أصلًا، بدلًا من الاعتماد على سلسلة الاتصال لتطلبه.
وأي شيء لا يراه مستخدم القراءة فقط يكون غير مرئي للصياغة أيضًا، وهذه أنظف طريقة لإبعاد جدول عن قائمة الأسئلة كليًا.
أين تُحفظ سلسلة الاتصال
تُشفَّر سلسلة الاتصال لحظة وصولها، ولا تُحفظ بنص واضح أبدًا. تُشفَّر بخوارزمية AES-256-GCM بمفتاح تصدره AWS KMS لذلك الاتصال وحده، ومرتبط بمساحة عملك، فلا يمكن فتح سلسلة مشفّرة تحت مساحة عمل أخرى.
لا شيء يعيدها. يعيد التسجيل معرّف الاتصال، والحالة، والمحرك، واسم المضيف واسم قاعدة البيانات، ونتيجتي الفحص. وتضيف قائمة الاتصالات الاسم الذي أعطيته، وبصمة البنية، وعدد الأسئلة. لا يتلقى متصفحك سلسلة الاتصال أبدًا، بأي شكل وفي أي مرحلة. ولا يمكن تسجيل السلسلة نفسها مرتين في مساحة العمل الواحدة، والكشف عن ذلك لا يتطلب الاحتفاظ بنسخة ثانية منها.
تُفتح السلسلة المشفّرة فقط عند الحاجة: لبدء محادثة، ولإعادة مزامنة الاتصال، ولإعادة فحص سؤال عدّلته. والقيمة المفتوحة تبقى في الذاكرة خمس دقائق على الأكثر، ولا تُكتب في أي مكان.
اعتماداتك هي السلطة
اعتماد السؤال هو ما يحدد إن كان الوكيل يستطيع استدعاءه، حتى لو لم تصل إعادة تسمية إلى النص المطابق الذي تُقارن به كلمات المتصل. عندما يختلف الاثنان، اضغط إعادة المزامنة على الاتصال، فهي تعيد بناء النص المطابق من الأسئلة المعتمدة.
ما يحصل عليه الوكيل
في بداية كل محادثة يتلقى الوكيل، لكل اتصال يسمح له بالاستعلام منه: سلسلة الاتصال، ووصف النشاط الذي كتبته، والمحرك، واسم المضيف واسم قاعدة البيانات، وبصمة البنية، والأسئلة المعتمدة لديك مع معاملاتها، وحدود الصفوف والوقت، وتلميحات النتائج. تُنفَّذ الاستعلامات على قاعدة بياناتك مباشرة، للقراءة فقط، ولا تُسجَّل سلسلة الاتصال في أي سجل.
ما لا يحصل عليه محدد بالقدر نفسه:
- الأسئلة التي لم تعتمدها. تُستبعد قبل إرسال أي شيء.
- الاتصالات غير المرتبطة بذلك الوكيل، أو غير الجاهزة، أو التي تنتمي إلى مساحة عمل أخرى. يُتخطّى كل منها، والوكيل الذي لا يملك اتصالًا صالحًا لا يملك قاعدة بيانات يستعلم منها.
- أي شيء على الإطلاق عندما تكون قواعد البيانات معطّلة لدى الوكيل.
ما يُحفظ بعد ذلك
سجل المحادثة لا يحتوي سلسلة الاتصال أبدًا، إذ تُزال قبل كتابة السجل.
يُحفظ الاستعلام الذي يقف خلف كل سؤال معتمد، لأنه ما يُنفَّذ فعليًا، ولا يُعاد أبدًا: لا تعرض أي شاشة ولا أي استجابة SQL، لا لك ولا لمتصل.
لا تُكتب سلاسل الاتصال ولا أجسام الطلبات في السجلات.
من يستطيع فعل ذلك
عناصر التحكم في قواعد البيانات تحتاج إلى الوصول إلى مساحة العمل ولا تحتاج إلى صلاحية إضافية. لذلك يستطيع أي عضو في مساحة العمل تسجيل قاعدة بيانات، واعتماد سؤال أو إلغاء اعتماده، وإعادة مزامنة اتصال، وحذف الاتصال مع أسئلته.
كل إجراء محصور في مساحة العمل التي سجلت الدخول إليها.
الأسئلة الشائعة
هل يستطيع الوكيل تشغيل SQL يمليه عليه المتصل؟
لا. يختار الوكيل من الأسئلة المعتمدة، ويملأ معاملاتها المسماة. لا يستطيع كتابة استعلام، ولا تعديله، ولا الوصول إلى سؤال لم تعتمده.
هل تستطيع إيكونوڤا الكتابة في قاعدة بياناتي أو الحذف منها؟
لا. كل سؤال معتمد هو قراءة، ولا يوجد في الميزة أي مسار للكتابة. ومنح المستخدم صلاحية SELECT فقط يجعل ذلك صحيحًا من طرفك أنت أيضًا.
هل أستطيع تغيير سلسلة الاتصال دون أن أفقد اعتماداتي؟
لا. سلسلة الاتصال ثابتة بعد حفظها. تدوير كلمة مرور قاعدة البيانات يعني تسجيل اتصال جديد واعتماد أسئلته من جديد.
هل يجب أن تكون قاعدة بياناتي متاحة من الإنترنت؟
يجب أن تكون متاحة لإيكونوڤا عبر TLS. تُنفَّذ الاستعلامات على قاعدة بياناتك مباشرة أثناء المحادثات، فاسمح بهذا المسار عن قصد، وأبقِ المستخدم للقراءة فقط.
ماذا يحدث للبيانات التي يعيدها السؤال؟
تذهب إلى الوكيل لذلك الدور حتى يجيب المتصل، وتظهر في نص المحادثة كجزء مما قيل. انظر الاحتفاظ بالبيانات لمعرفة مدة حفظ المحادثات.
صفحات ذات صلة
- ربط قاعدة بيانات: تسجيل الاتصال ومستخدمه
- مراجعة أسئلة قاعدة البيانات واعتمادها: تحديد ما يحق للوكيل أن يسأله
- الاحتفاظ بالبيانات: مدة حفظ المحادثات ومحتوياتها