تنظیمات فایروال با API

در فیلد firewall می‌توانید محصولات امنیت ابری را فعال کنید و برای مثال اجازه دسترسی به برخی کاربران با مشخصات خاص را ندهید. برای این کار لازم است یک سری rule تعریف کنید و شرایط اعمال rule را در بخش constraint تعیین کنید. سپس در فیلد action می‌توانید تعیین کنید که اگر یک ریکوئست با constraint‌ مورد نظر match شده چه اتفاقی بیفتد. برای اطلاعات بیشتر به این لینک مراجعه کنید.

ValueTypefirewall
true | flaseboolenabled
array of objectsrules
ValueTypefirewall.rule
true | flaseboolenabled
Max length: 64 charactersstringname
array of array of objectsconstraints
objectaction

هر constraint می‌تواند انواع مختلفی داشته باشد که بر اساس مشخصه‌های ریکوئست تعیین می‌شود. برای مثال می‌توانید بگویید اگر method ریکوئست GET بود این rule اعمال شود. با استفاده از negate می‌توانید اثر constraint برای match شدن را معکوس کنید (مشابه اپراتور لاجیکال NOT). برای اطلاعات بیشتر به این لینک (بخش ویژگی‌های قابل استفاده در شرط‌های فایروال) مراجعه کنید.

valueTypefirewall.rule.constraint
asn | cookie | country | header | ip | method | uri | path | args | http_version | tls | known_botsstring enumtype
True | falseboolnegate
objectasn
objectcookie
objectcountry
objectheader
objectip
objectmethod
objecturi
objectpath
objectargs
objecthttp-version
objecttls
objectknown-bots
ValueTypefirewall.rule.constraint.asn
equals | lesser | greaterstring enumoperator
Max Length: 10, numbers >= 0array of int32expected
ValueTypefirewall.rule.constraint.cookie
equals | contains | starts_with | ends_with | matchesstring enumoperator
Max Length: 128stringname
<= 10 strings with 0-4096 charactersarray of stringsexpected
ValueTypefirewall.rule.constraint.country
equalsstring enumoperator
<= 10 strings with 0-10 charactersarray of stringsexpected
ValueTypefirewall.rule.constraint.header
equals | contains | starts_with | ends_with | matchesstring enumoperator
Max Length: 128stringname
<= 10 strings with 0-4096 charactersarray of stringsexpected
ValueTypefirewall.rule.constraint.ip
ip_matchesstring enumoperator
<= 10 CIDRv4array of stringsexpected
ValueTypefirewall.rule.constraint.method
equalsstring enumoperator
<= 10 GET | POST | PURGE | PUT | HEAD | OPTIONS | DELETE | PATCHarray of string enumsexpected
ValueTypefirewall.rule.constraint.uri
equals | contains | starts_with | ends_with | matchesstring enumoperator
<= 10 strings with 0-4096 charactersarray of stringexpected
ValueTypefirewall.rule.constraint.path
equals | contains | starts_with | ends_with | matchesstring enumoperator
<= 10 strings with 0-4096 charactersarray of stringexpected
ValueTypefirewall.rule.constraint.args
equals | contains | starts_with | ends_with | matchesstring enumoperator
Max Length: 128stringname
<= 10 strings with 0-4096 charactersarray of stringexpected
ValueTypefirewall.rule.constraint.http_version
equalsstring enumoperator
<= 10 HTTP/1.0 | HTTP/1.1 | HTTP/1.2 | HTTP/2 | HTTP/3array of string enumsexpected
ValueTypefirewall.rule.constraint.tls
equalsstring enumoperator
true | falseboolexpected
ValueTypefirewall.rule.constraint.known_bots
equalsstring enumoperator
true | falseboolexpected

در فیلد action می‌توانید عملیاتی را که باید بعد از match شدن constraint انجام شود، تعیین کنید. برای مثال می‌توانید یک چالش تعریف کنید و یا نرخ دسترسی کاربر را محدود کنید. برای اطلاعات بیشتر به این مستند مراجعه کنید.

ValueTypefirewall.action
allow | block | js | captcha | bypass | cookie | ratelimitstring enumtype
objectcookie
objectjs
objectcaptcha
objectratelimit

برای تعریف چالش cookie لازم است نام کوکی را در فیلد name تعریف کنید. با استفاده از فیلد ttl مدت زمان اعتبار کوکی تعیین می‌شود. مقدار فیلد salt در محاسبه hash مقدار کوکی دخیل می‌شود، برای مثال می‌توانید یک مقدار رشته‌ای رندوم برای این فیلد تعیین کنید.

ValueTypefirewall.rule.action.cookie
Max Length: 128stringname
30-3600 secondsint32ttl
8-64 charactersstringsalt

برای تعریف چالش Javascript لازم است نام کوکی را در فیلد name تعریف کنید (این کوکی بعد از حل چالش توسط browser استفاده می‌شود). با استفاده از فیلد ttl مدت زمان اعتبار کوکی (چالش حل شده) تعیین می‌شود. مقدار فیلد salt در محاسبه hash مقدار کوکی دخیل می‌شود، برای مثال می‌توانید یک مقدار رشته‌ای رندوم برای این فیلد تعیین کنید. در بخش template فعلا فقط مقدار default قابل قبول است.

ValueTypefirewall.rule.action.js
Max Length: 128stringname
30-3600 secondsint32ttl
8-64 charactersstringsalt
defaultstring enumtemplate

برای تعریف چالش Captcha لازم است نام کوکی را در فیلد name تعریف کنید (این کوکی بعد از حل چالش توسط کاربر استفاده می‌شود). با استفاده از فیلد ttl مدت زمان اعتبار کوکی (چالش حل شده) تعیین می‌شود. مقدار فیلد salt در محاسبه hash مقدار کوکی دخیل می‌شود، برای مثال می‌توانید یک مقدار رشته‌ای رندوم برای این فیلد تعیین کنید. در بخش template فعلا فقط مقدار default قابل قبول است. در قسمت backend سرویس نمایش‌دهنده کپچا تعیین می‌شود که در حال حاضر فقط از reCAPTCHA پشتیبانی می‌شود.

ValueTypefirewall.rule.action.captcha
Max Length: 128stringname
30-3600 secondsint32ttl
8-64 charactersstringsalt
defaultstring enumtemplate
recaptchastring enumbackend
objectrecaptcha

مقادیر مربوط به تنظیمات reCAPTCHA از طریق این لینک قابل دریافت است.

ValueTypefirewall.rule.action.captcha.recaptcha
1-128 charactersstringsecret_key
1-128 charactersstringsite_key

برای محدود کردن نرخ دسترسی کاربران، می‌توانید از ratelimit استفاده کنید. در حال حاضر فقط از الگوریتم sliding_window پشتیبانی می‌شود. بصورت پیش‌فرض برای ریکوئست‌های غیرمجاز خطای 429 ارسال می‌شود و برای ریکوئست‌هایی که identifier اشتباه دارند خطای 412 برگردانده می‌شود. برای تغییر این دو خطا به ترتیب می‌توانید مقادیر statusCode و validationStatusCode را تغییر دهید. همچنین برای تغییر صفحه پیش‌فرض که با خطای 429 نمایش داده می‌شود مقدار فیلد template را تغییر دهید. برای اطلاعات بیشتر به این لینک (بخش محدود کردن نرخ دسترسی) مراجعه کنید.

ValueTypefirewall.rule.action.ratelimit
sliding_windowstring enumalgorithm
>= 1int32rate
1-60 secondsint32period
200-499intstatusCode
200-499intvalidationStatusCode
HTML (Max Characters: 5120)stringtemplate
objectidentifier
ValueTypefirewall.rule.action.ratelimit.identifier
ip | jwtstring enumtype
objectjwt
ValueTypefirewall.rule.action.ratelimit.identifier.jwt
non-emptystringsecret
non-emptystringpayloadKey
non-emptystringheaderName

در فیلد logForwarder می‌توانید access log خود را دریافت کنید. برای دریافت access log لازم است که یک سرویس بعنوان sink داشته باشید. در حال حاضر access log با فرمت زیر ارسال می‌شود (در صورت تغییر این فرمت به مشتریان اطلاع‌رسانی خواهد شد):

برای اطلاع از مقدار هر متغیر (که با $ شروع می‌شود) به این لینک مراجعه کنید.

ValueTypelogForwarder
true | falseboolenabled
objectsink

در حال حاضر از kafka, clickhouse, elasticsearch و socket بعنوان sink پشتیبانی می‌شود. توجه کنید که بالا آوردن این سرویس‌ها بعهده خود مشتری می‌باشد و ستون مسئولیتی برای نگهداری و پیاده‌سازی این سرویس‌ها ندارد. بعد از تعیین type لازم است که اطلاعات دسترسی به آن سرویس را در فیلد مربوطه (هم‌نام سرویس) وارد کنید.

ValueTypelogForwarder.sink
kafka | clickhouse | elasticsearch | socketstring enumtype
objectkafka
objectclickhouse
objectelasticsearch
objectsocket

برای دریافت access log روی kafka لازم است که آدرس سرورهای bootstrap کافکا و همچنین topic مورد نظر را وارد کنید.

ValueTypelogForwarder.sink.kafka
URLstringbootstrapServers
1-255 charactersstringtopic
1-255 charactersstringtable

برای دریافت لاگ روی elasticsearch لازم است که آدرس دسترسی به سرویس را تعیین کنید. همچنین می‌توانید مقادیر index و pipeline را در صورت نیاز وارد کنید.

ValueTypelogForwarder.sink.elasticsearch
URLstringendpoint
Max Length: 255 charactersstringindex
Max Length: 255 charactersstringpipeline

درصورتی که قصد دارید access log را روی سرویس دیگری غیر از kafka, elasticsearch یا clickhouse دریافت کنید می‌توانید از نوع socket بعنوان sink استفاده کنید. در حال حاضر از پروتکل‌های TCP و UDP پشتیبانی می‌شود.

ValueTypelogForwarder.sink.socket
tcp | udpstring enumprotocol
hostname:portstringaddress
آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید

sotoon

کلیه حقوق مادی و معنوی محفوظ است. © ۱۴۰۳ ستون/ شرکت رایانش ابری واحد هزاردستان