تأمين OpenReplay
تقييد الوصول إلى العقدة
Section titled تقييد الوصول إلى العقدةيُوصى بشدة بالسماح فقط بالمنفذين المفتوحين 80/443 إلى الجهاز باستخدام مجموعات الأمان. هناك بعض المكونات التي تستمع إلى العنوان 0.0.0.0 لتسهيل الاتصال الشبكي، مثل واجهة برمجة تطبيقات خادم k3s وواجهة برمجة تطبيقات flannel وما إلى ذلك.
تكوين SSL
Section titled تكوين SSLإذا كنت تستخدم شهادتك الخاصة، فأنشئ سرّ SSL باستخدام الأمر التالي: kubectl create secret tls openreplay-ssl -n app --key="private_key_file.pem" --cert="certificate.crt".
ملاحظة: إذا لم تكن لديك شهادة، فأنشئ شهادة تتجدد تلقائيًا للنطاق الفرعي الخاص بك (النطاق الذي قدمته أثناء التثبيت) باستخدام Let’s Encrypt. ما عليك سوى الاتصال بمثيل OpenReplay، وتشغيل
cd openreplay/scripts/helmcharts && bash certmanager.shواتباع الخطوات.
إذا كنت ترغب في تمكين إعادة التوجيه من http إلى https (موصى به)، فقم بإلغاء التعليق على الكتلة أدناه، ضمن قسم ingress-nginx:
ingress-nginx: &ingress-nginx
controller:
config:
ssl-redirect: true
force-ssl-redirect: true
ملاحظة: يعمل
ingress-nginxلدينا افتراضيًا على المنفذين80|443، ولكن يمكن تغيير ذلك بسهولة، إذا لزم الأمر، فيopenreplay -e:
ingress-nginx: &ingress-nginx
controller:
service:
ports:
http: 80
https: 443
احفظ واخرج باستخدام :wq لإعادة تحميل الخدمة.
تعزيز X-Frame-Options
Section titled تعزيز X-Frame-Optionsللإشارة إلى ما إذا كان ينبغي السماح للمتصفح بعرض صفحة داخل <frame>, <iframe>, <embed> أو <object> وتجنب هجمات اختطاف النقرات (click-jacking)، عيّن ترويسة الاستجابة X-Frame-Options عن طريق تحرير التكوين باستخدام openreplay -e:
ingress-nginx: &ingress-nginx
controller:
addHeaders:
X-Frame-Options: "SAMEORIGIN"
ثم احفظ واخرج باستخدام :wq لإعادة تحميل الخدمة.
إعداد reCaptcha
Section titled إعداد reCaptchaيدعم OpenReplay تقنية reCaptcha (الإصدار v2) لمزيد من الأمان. لتمكين هذه الحماية:
- احصل على مفتاح reCaptcha من الإصدار v2 من Google، مع تمكين الوضع
invisible، أي عدم المطالبة بـtick I am not a human. - شغّل
openreplay -eثم قم بإلغاء التعليق وتحديث متغيرات البيئة أدناه في قسمchalice:
captcha_server: عنوان URL لخدمة reCaptcha الخاصة بك (مثال: https://www.google.com/recaptcha/api/siteverify)captcha_key: مفتاح reCaptcha السري الخاص بك
- حرّر
.envفيopenreplay/frontend/(انسخ.env.sampleإذا لم يكن موجودًا) واستبدل المتغيرCAPTCHA_SITE_KEYبمفتاح موقع reCaptcha الخاص بك. - أعد بناء الواجهة الأمامية:
cd openreplay/frontend
IMAGE_TAG=my-custom-image PUSH_IMAGE=1 DOCKER_REPO=my-docker-user-name bash -x build.sh
- شغّل
openreplay -eوحدد صورة الواجهة الأمامية التي أنشأتها حديثًا في كتلةfrontend:
frontend:
image:
repository: "my-docker-username/frontend"
tag: "my-custom-image"
- أعد تشغيل خدمات الواجهة الأمامية وخادم الويب حتى تدخل التغييرات حيز التنفيذ:
openreplay -R
سياسة أمان المحتوى (CSP)
Section titled سياسة أمان المحتوى (CSP)فيما يلي مثال على سياسة (CSP) تسمح لـ OpenReplay بتسجيل الجلسات. يجب تكييف هذه السياسة بناءً على نطاقك ومتطلبات الأمان الخاصة بك:
worker-src ‘self’ blob: https://openreplay.mycompany.com https://*.openreplay.com; script-src ‘self’ https://openreplay.mycompany.com https://*.openreplay.com;
لتطبيق سياسة CSP الخاصة بك على NGINX، اتصل بمثيل OpenReplay الخاص بك واتبع الخطوات أدناه:
- شغّل
openreplay -eوأضف سياسة CSP الخاصة بك في كتلةfrontend. تأكد من التحديث
frontend:
ingress:
cspSnippet: |
add_header Content-Security-Policy "worker-src 'self' blob: https://openreplay.mycompany.com https://*.openreplay.com; script-src 'self' https://openreplay.mycompany.com https://*.openreplay.com;";
ملاحظة: تأكد من استبدال كل ظهور لـ
https://openreplay.mycompany.comفي سياسة CSP أعلاه باسم نطاق OpenReplay الخاص بك. يجب أن تكون القيمة هي نفسهاDOMAIN_NAMEعند تشغيلopenreplay -e.
- احفظ واخرج باستخدام
:wqلتطبيق سياسة CSP التي أضفتها حديثًا
تمكين CORS
Section titled تمكين CORSيُسمح بطلبات النطاقات المتقاطعة، افتراضيًا، من جميع المصادر (Access-Control-Allow-Origin: *). إذا كنت ترغب في تقييد التسجيلات على عدد قليل من النطاقات فقط، فشغّل openreplay -e وحدّث كتلة http بإضافة التعليقات التوضيحية أدناه:
http:
ingress:
annotations:
nginx.ingress.kubernetes.io/cors-allow-methods: POST
nginx.ingress.kubernetes.io/cors-allow-headers: Content-Type,Authorization,Content-Encoding
nginx.ingress.kubernetes.io/cors-allow-origin: https://app1.mycompany.com,https://app2.mycompany.com,https://*.mycompany.com
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-expose-headers: "Content-Length"
ثم احفظ واخرج باستخدام :wq لتطبيق سياسة CSP التي أضفتها حديثًا.
هل لديك أسئلة؟
Section titled هل لديك أسئلة؟إذا كانت لديك أي أسئلة حول هذه العملية، فلا تتردد في التواصل معنا عبر Slack الخاص بنا أو الاطلاع على المنتدى الخاص بنا.