التكوين الدقيق لـ Wallarm Ingress Controller المستند إلى NGINX¶
تعرف على خيارات التكوين الدقيق المتاحة لوحدة التحكم Wallarm Ingress للحصول على الحد الأقصى من حل Wallarm.
التوثيق الرسمي لـ NGINX Ingress Controller
التكوين الدقيق لـ Wallarm Ingress Controller مشابه إلى حد كبير لـ NGINX Ingress Controller والذي ذكر في التوثيق الرسمي. عند العمل مع Wallarm، تكون جميع الخيارات لإعداد نص الأصلي NGINX Ingress Controller متاحة.
إعدادات إضافية لـ Helm Chart¶
يتم تعريف الإعدادات في ملف values.yaml
. بشكل افتراضي، يظهر الملف على النحو التالي:
controller:
wallarm:
enabled: false
apiHost: api.wallarm.com
apiPort: 443
apiSSL: true
token: ""
nodeGroup: defaultIngressGroup
existingSecret:
enabled: false
secretKey: token
secretName: wallarm-api-token
tarantool:
kind: Deployment
service:
annotations: {}
replicaCount: 1
arena: "1.0"
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
metrics:
enabled: false
service:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /wallarm-metrics
prometheus.io/port: "18080"
## List of IP addresses at which the stats-exporter service is available
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 18080
type: ClusterIP
synccloud:
resources: {}
collectd:
resources: {}
لتغيير هذا الإعداد، نوصي باستخدام الخيار --set
من helm install
(إذا كان يتم تثبيت وحدة التحكم Ingress) أو helm upgrade
(إذا كان يتم تحديث معلمات وحدة التحكم Ingress المثبتة). على سبيل المثال:
يتم تقديم وصف للمعلمات الرئيسية التي يمكنك إعدادها أدناه. تأتي المعلمات الأخرى بقيم افتراضية ونادراً ما تحتاج إلى تغييرها؛ تتوفر أوصافها في هذا الرابط.
controller.wallarm.enabled¶
يتيح لك تمكين أو تعطيل وظائف Wallarm.
القيمة الافتراضية: false
controller.wallarm.apiHost¶
نقطة النهاية لواجهة Wallarm API. يمكن أن يكون:
القيمة الافتراضية: api.wallarm.com
controller.wallarm.token¶
قيمة رمز العقدة التصفية. هو مطلوب للوصول إلى واجهة Wallarm API.
يمكن أن يكون الرمز أحد هذه الأنواع:
-
رمز API (موصى به) - مثالي إذا كنت بحاجة إلى إضافة / إزالة مجموعات العقدة بشكل ديناميكي لتنظيم واجهة المستخدم أو إذا كنت ترغب في التحكم في دورة حياة الرمز لزيادة الأمان. لتوليد رمز API:
لتوليد رمز API:
-
رمز العقدة - مناسب عندما تعرف بالفعل المجموعات العقدة التي ستُستخدم.
لتوليد رمز العقدة:
يتم تجاهل المعلمة إذا كانت controller.wallarm.existingSecret.enabled: true
.
القيمة الافتراضية: لم يُحدد
controller.wallarm.nodeGroup¶
بدءًا من إصدار Helm chart 4.6.8، يُحدد هذا اسم مجموعة العقد التصفية التي تريد إضافة العقد المنشورة حديثًا إليها. إن تجميع العقد بهذه الطريقة متاح فقط عندما تقوم بإنشاء وربط العقد بالسحابة باستخدام رمز API بدور Deploy (يتم تمرير قيمته في المعلمة controller.wallarm.token
).
القيمة الافتراضية: defaultIngressGroup
controller.wallarm.existingSecret¶
بدءًا من إصدار Helm chart 4.4.1 ، يمكنك استخدام كتلة التكوين هذه لسحب قيمة رمز العقدة Wallarm من أسرار Kubernetes. من المفيد للبيئات ذات الإدارة المنفصلة للأسرار (مثل إذا كنت تستخدم عامل أسرار خارجي).
لتخزين رمز العقدة في أسرار K8s وسحبه إلى الرسم البياني لـ Helm:
-
قم بإنشاء سر Kubernetes مع رمز العقدة Wallarm:
kubectl -n <KUBERNETES_NAMESPACE> create secret generic wallarm-api-token --from-literal=token=<WALLARM_NODE_TOKEN>
<KUBERNETES_NAMESPACE>
هو الفضاء الاسمي Kubernetes الذي قمت بإنشائه للإصدار Helm مع وحدة التحكم Wallarm Ingresswallarm-api-token
هو اسم سر Kubernetes<WALLARM_NODE_TOKEN>
هو قيمة رمز العقدة Wallarm المنسوخة من واجهة المستخدم Wallarm Console
إذا كنت تستخدم بعض عامل الأسرار الخارجي، اتبع الوثائق المناسبة لإنشاء سر.
-
ضع التكوين التالي في
values.yaml
:
القيمة الافتراضية: existingSecret.enabled: false
التي تنطلق إلى الرسم البياني البياني للحصول على رمز العقدة Wallarm من controller.wallarm.token
.
controller.wallarm.tarantool.replicaCount¶
عدد الأحداث المتداولة لـ postanalytics. يتم استخدام postanalytics للكشف عن الهجمات المستندة إلى السلوك.
القيمة الافتراضية: 1
controller.wallarm.tarantool.arena¶
تحدد كمية الذاكرة المخصصة لخدمة postanalytics. يوصى بتحديد قيمة كافية لتخزين بيانات الطلب للـ 5-15 دقيقة الأخيرة.
القيمة الافتراضية: 0.2
controller.wallarm.metrics.enabled¶
هذا التبديل يتحول بين جمع المعلومات والمقاييس. إذا تم تثبيت Prometheus في مجموعة Kubernetes، لا يتطلب التكوين الإضافي.
القيمة الافتراضية: false
إعدادات الوحدة التحكم العالمية¶
مستندًا عبر ConfigMap.
بجانب المعياريات ، يتم دعم المعلمات الإضافية التالية:
-
enable-wallarm
- يتيح وحدة Wallarm في NGINX
التعليقات المنسوبة لـ Ingress¶
تُستخدم هذه التعليقات لضبط معلمات لمعالجة مثيلات فردية لـ Ingress.
Besides the standard ones, الإعدادات الإضافية المدعومة هي:
-
nginx.ingress.kubernetes.io/wallarm-mode, القيمة الافتراضية:
"off"
تطبيق التعليق المنسوب على مورد Ingress¶
لتطبيق الإعدادات على Ingress الخاص بك، يرجى استخدام الأمر التالي:
kubectl annotate --overwrite ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> <ANNOTATION_NAME>=<VALUE>
-
<YOUR_INGRESS_NAME>
هو اسم Ingress الخاص بك -
<YOUR_INGRESS_NAMESPACE>
هو مجال اسم Ingress الخاص بك -
<ANNOTATION_NAME>
هو اسم التعليق المنسوب من القائمة أعلاه -
<VALUE>
هو قيمة التعليق المنسوب من القائمة أعلاه
أمثلة على التعليقات المنسوبة¶
تكوين الصفحة القابلة للحظر ورمز الخطأ¶
يُستخدم التعليق المنسوب nginx.ingress.kubernetes.io/wallarm-block-page
لتكوين الصفحة القابلة للحظر ورمز الخطأ المرتجع في الرد على الطلب المحظور للأسباب التالية:
-
يحتوي الطلب على أحمال ضارة من الأنواع التالية: هجمات التحقق من الإدخال, هجمات vpatch, أو هجمات مكتشفة بناءً على التعبيرات العادية.
-
الطلب الذي يحتوي على أحمال ضارة من القائمة أعلاه ينشأ من عنوان IP في ال قائمة الرمادية والعقدة تُصفي الطلبات في وضع الحظر الآمن.
-
الطلب ينشأ من denylisted IP address.
على سبيل المثال، لإرجاع صفحة الحظر الافتراضية لـ Wallarm ورمز الخطأ 445 في الرد على أي طلب تم حظره:
kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-block-page="&/usr/share/nginx/html/wallarm_blocked.html response_code=445 type=attack,acl_ip,acl_source"
المزيد من التفاصيل حول أساليب تكوين الصفحة المحظورة ورمز الخطأ →
إدارة وضع libdetection¶
وضع libdetection الافتراضي
الوضع الافتراضي لمكتبة libdetection هو on
(مكَّن).
يمكنك التحكم في وضع libdetection باستخدام أحد الخيارات:
-
تطبيق التعليق المنسوب
nginx.ingress.kubernetes.io/server-snippet
التالي على مورد Ingress: -
أضف المعلمة
controller.config.server-snippet
إلى الرسم البياني لـ Helm:helm install --set controller.config.server-snippet='wallarm_enable_libdetection off;' <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
هناك أيضًا معلمات أخرى مطلوبة لتثبيت وحدة التحكم Ingress بشكل صحيح. يرجى تمريرها في الخيار
--set
أيضًا.