DAT CMS
ينشئ DAT CMS الشهادات ويحفظها في قاعدة بيانات ويسلّم الشهادات المناسبة لخدمات الإصدار والتحقق. يرد وصف سلوك البروتوكول في مواصفة DAT CMS.
إنشاء إعدادات التشغيل
خدمة إدارة شهادات DAT
الخادم
أمر التشغيل
قاعدة البيانات
شهادة DAT
التحكم في الوصول
التشغيل باستخدام Docker
شغّل الحاوية كمستخدم غير root. وعند استخدام SQLite، صِل دليل بيانات قابلًا للكتابة. مرّر الرموز وكلمات مرور قاعدة البيانات عبر آلية حقن الأسرار بدلًا من سجل الأوامر.
docker run --rm --name dat-cms -p 8088:8088 \
--user 10001:10001 \
-v "$PWD/dat-cms-data:/data" \
-e PORT=8088 \
-e DB_URI='sqlite:/data/data.db' \
-e TOKEN_MASTER='replace-with-a-secret' \
-e TOKEN_CERT_FULL='replace-with-a-secret' \
-e TOKEN_CERT_VERIFY='replace-with-a-secret' \
sarolab/dat-cmsقاعدة البيانات
استخدم DB_URI لإعداد اتصال SQLite أو PostgreSQL أو MySQL. تتصل MariaDB عبر بروتوكول MySQL. يخزّن CMS نتائج استعلامات الشهادات كلقطة مؤقتة ويواصل تقديم آخر لقطة ناجحة عند فشل تحديث المخزن مؤقتًا.
يحدّد DB_CACHE_SECS فاصل تحديث اللقطة، بينما يضع DB_QUERY_TIMEOUT_SECS حدًا زمنيًا لاستعلامات التحديث. إذا لم توجد لقطة ناجحة وتعذرت قراءة المخزن، تعيد الخدمة DAT_STORE_UNAVAILABLE.
أدوار الوصول
| متغير البيئة | الصلاحية | الجهة المستخدمة |
|---|---|---|
TOKEN_MASTER | تسجيل الشهادات وجلب الإصدار المحمي | العمليات |
TOKEN_CERT_FULL | جلب الشهادات الكاملة | خدمات إصدار DAT |
TOKEN_CERT_VERIFY | جلب شهادات التحقق فقط | خدمات التحقق وفك التشفير |
يقبل كل متغير رموزًا أبجدية رقمية مفصولة بفواصل. إذا كانت قائمة رموز أحد الأدوار فارغة، تُفتح endpoints الخاصة به ويُسجل تحذير.
إنشاء الشهادات
يسجّل دور master شهادة بتحديد خوارزمية التوقيع وخوارزمية التشفير وتأخير الانتشار وفترة الإصدار وTTL. وخلال تأخير الانتشار تزامن الخدمات الشهادة الجديدة قبل أن تصبح قابلة للإصدار.
تكامل العميل
- استخدم الرمز الكامل وendpoint الشهادات الكاملة لخدمات الإصدار.
- استخدم رمز التحقق وخيار verify-only لخدمات التحقق.
- افحص نتيجة المزامنة الأولى؛ وإذا كان يجب أن يفشل بدء التشغيل، فاستدعِ API المزامنة الفورية.
- عند تفعيل المزامنة التلقائية، أغلق المدير أثناء إيقاف التطبيق.
راجع أدلة المكتبات لمعرفة builder وسلوك الإغلاق في كل لغة.
فحوص التشغيل
- يبلغ
/healthو/version/apiعن الحالة من دون مصادقة. - يتطلب
/version master token عند إعداد ذلك الدور. - اجمع السجلات من الإخراج القياسي وإخراج الخطأ القياسي.
- مرّر إشارات الإغلاق وامنح قاعدة البيانات وscheduler وقتًا للإغلاق.
Kubernetes
طابق منفذ الحاوية وprobes مع منفذ الخدمة، وصِل دليل البيانات بصلاحية كتابة للمستخدم غير root. احقن الرموز وتفاصيل اتصال قاعدة البيانات عبر Secrets.
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
containers:
- name: dat-cms
image: sarolab/dat-cms
ports: [{ containerPort: 8088 }]
readinessProbe: { httpGet: { path: /health, port: 8088 } }
livenessProbe: { httpGet: { path: /health, port: 8088 } }