Skip to content

Commit 49bac60

Browse files
committed
add unauthenticated request rate limit globally and per IP. create a global limit for incoming paylaod limit
1 parent 350779b commit 49bac60

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

pkg/settings/cresettings/defaults.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"WorkflowLimit": "200",
33
"WorkflowRegistrationQueueLimit": "20",
44
"WorkflowExecutionConcurrencyLimit": "50",
5+
"UnauthenticatedRequestRateLimit": "100rps:-1",
6+
"UnauthenticatedRequestRateLimitPerIP": "1rps:-1",
7+
"IncomingPayloadSizeLimit": "10kb",
58
"PerOrg": {
69
"WorkflowDeploymentRateLimit": "every1m0s:1",
710
"ZeroBalancePruningTimeout": "24h0m0s"
@@ -35,6 +38,7 @@
3538
},
3639
"HTTPTrigger": {
3740
"RateLimit": "every30s:3",
41+
"IncomingPayloadSizeLimit": "10kb"
3842
},
3943
"LogTrigger": {
4044
"RateLimit": "every10s:-1",

pkg/settings/cresettings/defaults.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
WorkflowLimit = '200'
22
WorkflowRegistrationQueueLimit = '20'
33
WorkflowExecutionConcurrencyLimit = '50'
4+
UnauthenticatedRequestRateLimit = '100rps:-1'
5+
UnauthenticatedRequestRateLimitPerIP = '1rps:-1'
6+
IncomingPayloadSizeLimit = '10kb'
47

58
[PerOrg]
69
WorkflowDeploymentRateLimit = 'every1m0s:1'
@@ -36,6 +39,7 @@ RateLimit = 'every30s:1'
3639

3740
[PerWorkflow.HTTPTrigger]
3841
RateLimit = 'every30s:3'
42+
IncomingPayloadSizeLimit = '10kb'
3943

4044
[PerWorkflow.LogTrigger]
4145
RateLimit = 'every10s:-1'

pkg/settings/cresettings/settings.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ func init() {
2323
var Config Schema
2424

2525
var Default = Schema{
26-
WorkflowLimit: Int(200),
27-
WorkflowRegistrationQueueLimit: Int(20),
28-
WorkflowExecutionConcurrencyLimit: Int(50),
26+
WorkflowLimit: Int(200),
27+
WorkflowRegistrationQueueLimit: Int(20),
28+
WorkflowExecutionConcurrencyLimit: Int(50),
29+
UnauthenticatedRequestRateLimit: Rate(rate.Every(time.Second/100), -1),
30+
UnauthenticatedRequestRateLimitPerIP: Rate(rate.Every(time.Second), -1),
31+
IncomingPayloadSizeLimit: Size(10 * config.KByte),
2932

3033
PerOrg: Orgs{
3134
WorkflowDeploymentRateLimit: Rate(rate.Every(time.Minute), 1),
@@ -60,7 +63,8 @@ var Default = Schema{
6063
RateLimit: Rate(rate.Every(30*time.Second), 1),
6164
},
6265
HTTPTrigger: httpTrigger{
63-
RateLimit: Rate(rate.Every(30*time.Second), 3),
66+
RateLimit: Rate(rate.Every(30*time.Second), 3),
67+
IncomingPayloadSizeLimit: Size(10 * config.KByte),
6468
},
6569
LogTrigger: logTrigger{
6670
RateLimit: Rate(rate.Every(10*time.Second), -1), //TODO
@@ -93,9 +97,12 @@ var Default = Schema{
9397
}
9498

9599
type Schema struct {
96-
WorkflowLimit Setting[int] `unit:"{workflow}"`
97-
WorkflowRegistrationQueueLimit Setting[int] `unit:"{workflow}"`
98-
WorkflowExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
100+
WorkflowLimit Setting[int] `unit:"{workflow}"`
101+
WorkflowRegistrationQueueLimit Setting[int] `unit:"{workflow}"`
102+
WorkflowExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
103+
UnauthenticatedRequestRateLimit Setting[config.Rate]
104+
UnauthenticatedRequestRateLimitPerIP Setting[config.Rate]
105+
IncomingPayloadSizeLimit Setting[config.Size]
99106

100107
PerOrg Orgs `scope:"org"`
101108
PerOwner Owners `scope:"owner"`
@@ -150,7 +157,8 @@ type cronTrigger struct {
150157
RateLimit Setting[config.Rate]
151158
}
152159
type httpTrigger struct {
153-
RateLimit Setting[config.Rate]
160+
RateLimit Setting[config.Rate]
161+
IncomingPayloadSizeLimit Setting[config.Size]
154162
}
155163
type logTrigger struct {
156164
RateLimit Setting[config.Rate]

0 commit comments

Comments
 (0)