@horietakehiro/aws-cdk-utul 0.35.3 → 0.35.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,101 +1,104 @@
1
1
  /**
2
- * Description of the entity.
3
- */
4
- export type EntityDescription = string;
5
- export type SizeInspectionLimit = ("KB_16" | "KB_32" | "KB_48" | "KB_64");
6
- /**
7
- * Key of the field to protect.
2
+ * ARN of the WAF entity.
8
3
  */
9
- export type FieldToProtectKeyName = string;
10
- export type DataProtectionAction = ("SUBSTITUTION" | "HASH");
4
+ export type ResourceArn = string;
11
5
  /**
12
- * @minItems 1
6
+ * HTTP header name.
13
7
  */
14
- export type DataProtections = DataProtect[];
8
+ export type CustomHTTPHeaderName = string;
15
9
  /**
16
10
  * HTTP header value.
17
11
  */
18
12
  export type CustomHTTPHeaderValue = string;
19
- /**
20
- * HTTP header name.
21
- */
22
- export type CustomHTTPHeaderName = string;
23
13
  /**
24
14
  * Custom response code.
25
15
  */
26
16
  export type ResponseStatusCode = number;
27
17
  /**
28
- * Priority of the Rule, Rules get evaluated from lower to higher priority.
18
+ * Description of the entity.
29
19
  */
30
- export type RulePriority = number;
20
+ export type EntityDescription = string;
31
21
  /**
32
- * Type of text transformation.
22
+ * Name of the WebACL.
33
23
  */
34
- export type TextTransformationType = ("NONE" | "COMPRESS_WHITE_SPACE" | "HTML_ENTITY_DECODE" | "LOWERCASE" | "CMD_LINE" | "URL_DECODE" | "BASE64_DECODE" | "HEX_DECODE" | "MD5" | "REPLACE_COMMENTS" | "ESCAPE_SEQ_DECODE" | "SQL_HEX_DECODE" | "CSS_DECODE" | "JS_DECODE" | "NORMALIZE_PATH" | "NORMALIZE_PATH_WIN" | "REMOVE_NULLS" | "REPLACE_NULLS" | "BASE64_DECODE_EXT" | "URL_DECODE_UNI" | "UTF8_TO_UNICODE");
24
+ export type EntityName = string;
35
25
  /**
36
- * Priority of Rule being evaluated.
26
+ * Id of the WebACL
37
27
  */
38
- export type TextTransformationPriority = number;
28
+ export type EntityId = string;
39
29
  /**
40
- * The parts of the request to match against using the MatchPattern.
30
+ * Use CLOUDFRONT for CloudFront WebACL, use REGIONAL for Application Load Balancer and API Gateway.
41
31
  */
42
- export type MapMatchScope = ("ALL" | "KEY" | "VALUE");
32
+ export type Scope = ("CLOUDFRONT" | "REGIONAL");
43
33
  /**
44
- * Handling of requests containing oversize fields
34
+ * Priority of the Rule, Rules get evaluated from lower to higher priority.
45
35
  */
46
- export type OversizeHandling = ("CONTINUE" | "MATCH" | "NO_MATCH");
36
+ export type RulePriority = number;
47
37
  /**
48
- * The parts of the JSON to match against using the MatchPattern.
38
+ * String that is searched to find a match.
49
39
  */
50
- export type JsonMatchScope = ("ALL" | "KEY" | "VALUE");
40
+ export type SearchString = string;
41
+ /**
42
+ * Base64 encoded string that is searched to find a match.
43
+ */
44
+ export type SearchStringBase64 = string;
45
+ /**
46
+ * Handling of requests containing oversize fields
47
+ */
48
+ export type OversizeHandling = ("CONTINUE" | "MATCH" | "NO_MATCH");
51
49
  /**
52
50
  * JSON pointer path in the web request's JSON body
53
51
  */
54
52
  export type JsonPointerPath = string;
55
53
  /**
56
- * The inspection behavior to fall back to if the JSON in the request body is invalid.
54
+ * The parts of the JSON to match against using the MatchPattern.
57
55
  */
58
- export type BodyParsingFallbackBehavior = ("MATCH" | "NO_MATCH" | "EVALUATE_AS_STRING");
56
+ export type JsonMatchScope = ("ALL" | "KEY" | "VALUE");
59
57
  /**
60
- * Base64 encoded string that is searched to find a match.
58
+ * The inspection behavior to fall back to if the JSON in the request body is invalid.
61
59
  */
62
- export type SearchStringBase64 = string;
60
+ export type BodyParsingFallbackBehavior = ("MATCH" | "NO_MATCH" | "EVALUATE_AS_STRING");
63
61
  /**
64
- * Position of the evaluation in the FieldToMatch of request.
62
+ * The parts of the request to match against using the MatchPattern.
65
63
  */
66
- export type PositionalConstraint = ("EXACTLY" | "STARTS_WITH" | "ENDS_WITH" | "CONTAINS" | "CONTAINS_WORD");
64
+ export type MapMatchScope = ("ALL" | "KEY" | "VALUE");
67
65
  /**
68
- * String that is searched to find a match.
66
+ * Priority of Rule being evaluated.
69
67
  */
70
- export type SearchString = string;
71
- export type RateLimit = number;
72
- export type EvaluationWindowSec = (60 | 120 | 300 | 600);
68
+ export type TextTransformationPriority = number;
73
69
  /**
74
- * Name of the WebACL.
70
+ * Type of text transformation.
75
71
  */
76
- export type EntityName = string;
72
+ export type TextTransformationType = ("NONE" | "COMPRESS_WHITE_SPACE" | "HTML_ENTITY_DECODE" | "LOWERCASE" | "CMD_LINE" | "URL_DECODE" | "BASE64_DECODE" | "HEX_DECODE" | "MD5" | "REPLACE_COMMENTS" | "ESCAPE_SEQ_DECODE" | "SQL_HEX_DECODE" | "CSS_DECODE" | "JS_DECODE" | "NORMALIZE_PATH" | "NORMALIZE_PATH_WIN" | "REMOVE_NULLS" | "REPLACE_NULLS" | "BASE64_DECODE_EXT" | "URL_DECODE_UNI" | "UTF8_TO_UNICODE");
77
73
  /**
78
- * ARN of the WAF entity.
74
+ * Position of the evaluation in the FieldToMatch of request.
79
75
  */
80
- export type ResourceArn = string;
81
- export type LabelMatchScope = ("LABEL" | "NAMESPACE");
82
- export type LabelMatchKey = string;
76
+ export type PositionalConstraint = ("EXACTLY" | "STARTS_WITH" | "ENDS_WITH" | "CONTAINS" | "CONTAINS_WORD");
83
77
  /**
84
78
  * Sensitivity Level current only used for sqli match statements.
85
79
  */
86
80
  export type SensitivityLevel = ("LOW" | "HIGH");
81
+ export type UsageOfAction = ("ENABLED" | "DISABLED");
82
+ export type SensitivityToAct = ("LOW" | "MEDIUM" | "HIGH");
83
+ export type RegexPatternString = string;
84
+ export type RegularExpressionList = Regex[];
85
+ export type RateLimit = number;
86
+ export type EvaluationWindowSec = (60 | 120 | 300 | 600);
87
+ export type LabelMatchScope = ("LABEL" | "NAMESPACE");
88
+ export type LabelMatchKey = string;
87
89
  /**
88
90
  * Name of the Label.
89
91
  */
90
92
  export type LabelName = string;
91
93
  /**
92
- * List of domains to accept in web request tokens, in addition to the domain of the protected resource.
94
+ * Key of the field to protect.
93
95
  */
94
- export type TokenDomains = string[];
96
+ export type FieldToProtectKeyName = string;
97
+ export type DataProtectionAction = ("SUBSTITUTION" | "HASH");
95
98
  /**
96
- * Use CLOUDFRONT for CloudFront WebACL, use REGIONAL for Application Load Balancer and API Gateway.
99
+ * @minItems 1
97
100
  */
98
- export type Scope = ("CLOUDFRONT" | "REGIONAL");
101
+ export type DataProtections = DataProtect[];
99
102
  /**
100
103
  * Valid values are TEXT_PLAIN, TEXT_HTML, and APPLICATION_JSON.
101
104
  */
@@ -105,121 +108,50 @@ export type ResponseContentType = ("TEXT_PLAIN" | "TEXT_HTML" | "APPLICATION_JSO
105
108
  */
106
109
  export type ResponseContent = string;
107
110
  /**
108
- * Id of the WebACL
111
+ * List of domains to accept in web request tokens, in addition to the domain of the protected resource.
109
112
  */
110
- export type EntityId = string;
113
+ export type TokenDomains = string[];
114
+ export type SizeInspectionLimit = ("KB_16" | "KB_32" | "KB_48" | "KB_64");
111
115
  /**
112
116
  * Contains the Rules that identify the requests that you want to allow, block, or count. In a WebACL, you also specify a default action (ALLOW or BLOCK), and the action for each Rule that you add to a WebACL, for example, block requests from specified IP addresses or block requests from specified referrers. You also associate the WebACL with a CloudFront distribution to identify the requests that you want AWS WAF to filter. If you add more than one Rule to a WebACL, a request needs to match only one of the specifications to be allowed, blocked, or counted.
113
117
  */
114
118
  export interface _AWS_WAFV2_WEBACL {
119
+ Arn?: ResourceArn;
120
+ Capacity?: number;
121
+ DefaultAction: DefaultAction;
115
122
  Description?: EntityDescription;
116
- AssociationConfig?: AssociationConfig;
117
- ChallengeConfig?: ChallengeConfig;
118
- DataProtectionConfig?: DataProtectionConfig;
119
- OnSourceDDoSProtectionConfig?: unknown;
123
+ Name?: EntityName;
124
+ Id?: EntityId;
125
+ Scope: Scope;
120
126
  /**
121
127
  * Collection of Rules.
122
128
  */
123
129
  Rules?: Rule[];
124
130
  VisibilityConfig: VisibilityConfig;
125
- LabelNamespace?: LabelName;
126
- Name?: EntityName;
127
- TokenDomains?: TokenDomains;
128
- DefaultAction: DefaultAction;
129
- Scope: Scope;
130
- Capacity?: number;
131
- CustomResponseBodies?: CustomResponseBodies;
132
- Id?: EntityId;
133
- Arn?: ResourceArn;
134
- CaptchaConfig?: CaptchaConfig;
131
+ DataProtectionConfig?: DataProtectionConfig;
135
132
  /**
136
133
  * @minItems 1
137
134
  */
138
135
  Tags?: Tag[];
139
- }
140
- /**
141
- * AssociationConfig for body inspection
142
- */
143
- export interface AssociationConfig {
144
- RequestBody?: RequestBody;
145
- }
146
- /**
147
- * Map of AssociatedResourceType and RequestBodyAssociatedResourceTypeConfig
148
- */
149
- export interface RequestBody {
150
- [k: string]: RequestBodyAssociatedResourceTypeConfig;
151
- }
152
- /**
153
- * Configures the inspection size in the request body.
154
- *
155
- * This interface was referenced by `RequestBody`'s JSON-Schema definition
156
- * via the `patternProperty` "^(CLOUDFRONT|API_GATEWAY|COGNITO_USER_POOL|APP_RUNNER_SERVICE|VERIFIED_ACCESS_INSTANCE)$".
157
- */
158
- export interface RequestBodyAssociatedResourceTypeConfig {
159
- DefaultSizeInspectionLimit: SizeInspectionLimit;
160
- }
161
- export interface ChallengeConfig {
162
- ImmunityTimeProperty?: ImmunityTimeProperty;
163
- }
164
- export interface ImmunityTimeProperty {
165
- ImmunityTime: number;
166
- }
167
- /**
168
- * Collection of dataProtects.
169
- */
170
- export interface DataProtectionConfig {
171
- DataProtections: DataProtections;
172
- }
173
- export interface DataProtect {
174
- Field: FieldToProtect;
175
- Action: DataProtectionAction;
176
- ExcludeRateBasedDetails?: boolean;
177
- ExcludeRuleMatchDetails?: boolean;
178
- }
179
- /**
180
- * Field in log to protect.
181
- */
182
- export interface FieldToProtect {
183
- /**
184
- * List of field keys to protect
185
- */
186
- FieldKeys?: FieldToProtectKeyName[];
187
- /**
188
- * Field type to protect
189
- */
190
- FieldType: ("SINGLE_HEADER" | "SINGLE_COOKIE" | "SINGLE_QUERY_ARGUMENT" | "QUERY_STRING" | "BODY");
191
- }
192
- /**
193
- * Rule of WebACL that contains condition and action.
194
- */
195
- export interface Rule {
196
- Action?: RuleAction;
197
- Priority: RulePriority;
198
- Statement: Statement;
199
- ChallengeConfig?: ChallengeConfig;
200
- OverrideAction?: OverrideAction;
201
- /**
202
- * Collection of Rule Labels.
203
- */
204
- RuleLabels?: Label[];
205
- VisibilityConfig: VisibilityConfig;
136
+ LabelNamespace?: LabelName;
137
+ CustomResponseBodies?: CustomResponseBodies;
206
138
  CaptchaConfig?: CaptchaConfig;
207
- Name: EntityName;
139
+ ChallengeConfig?: ChallengeConfig;
140
+ TokenDomains?: TokenDomains;
141
+ AssociationConfig?: AssociationConfig;
142
+ OnSourceDDoSProtectionConfig?: OnSourceDDoSProtectionConfig;
208
143
  }
209
144
  /**
210
- * Action taken when Rule matches its condition.
145
+ * Default Action WebACL will take against ingress traffic when there is no matching Rule.
211
146
  */
212
- export interface RuleAction {
213
- Captcha?: CaptchaAction;
214
- Block?: BlockAction;
215
- Count?: CountAction;
147
+ export interface DefaultAction {
216
148
  Allow?: AllowAction;
217
- Challenge?: ChallengeAction;
149
+ Block?: BlockAction;
218
150
  }
219
151
  /**
220
- * Checks valid token exists with request.
152
+ * Allow traffic towards application.
221
153
  */
222
- export interface CaptchaAction {
154
+ export interface AllowAction {
223
155
  CustomRequestHandling?: CustomRequestHandling;
224
156
  }
225
157
  /**
@@ -237,8 +169,8 @@ export interface CustomRequestHandling {
237
169
  * HTTP header.
238
170
  */
239
171
  export interface CustomHTTPHeader {
240
- Value: CustomHTTPHeaderValue;
241
172
  Name: CustomHTTPHeaderName;
173
+ Value: CustomHTTPHeaderValue;
242
174
  }
243
175
  /**
244
176
  * Block traffic towards application.
@@ -263,75 +195,77 @@ export interface CustomResponse {
263
195
  ResponseHeaders?: CustomHTTPHeader[];
264
196
  }
265
197
  /**
266
- * Allow traffic towards application.
267
- */
268
- export interface CountAction {
269
- CustomRequestHandling?: CustomRequestHandling;
270
- }
271
- /**
272
- * Allow traffic towards application.
273
- */
274
- export interface AllowAction {
275
- CustomRequestHandling?: CustomRequestHandling;
276
- }
277
- /**
278
- * Checks that the request has a valid token with an unexpired challenge timestamp and, if not, returns a browser challenge to the client.
198
+ * Rule of WebACL that contains condition and action.
279
199
  */
280
- export interface ChallengeAction {
281
- CustomRequestHandling?: CustomRequestHandling;
200
+ export interface Rule {
201
+ Name: EntityName;
202
+ Priority: RulePriority;
203
+ Statement: Statement;
204
+ Action?: RuleAction;
205
+ OverrideAction?: OverrideAction;
206
+ /**
207
+ * Collection of Rule Labels.
208
+ */
209
+ RuleLabels?: Label[];
210
+ VisibilityConfig: VisibilityConfig;
211
+ CaptchaConfig?: CaptchaConfig;
212
+ ChallengeConfig?: ChallengeConfig;
282
213
  }
283
214
  /**
284
215
  * First level statement that contains conditions, such as ByteMatch, SizeConstraint, etc
285
216
  */
286
217
  export interface Statement {
287
- SizeConstraintStatement?: SizeConstraintStatement;
288
- AndStatement?: AndStatement;
289
- XssMatchStatement?: XssMatchStatement;
290
- NotStatement?: NotStatement;
291
218
  ByteMatchStatement?: ByteMatchStatement;
292
- RateBasedStatement?: RateBasedStatement;
219
+ SqliMatchStatement?: SqliMatchStatement;
220
+ XssMatchStatement?: XssMatchStatement;
221
+ SizeConstraintStatement?: SizeConstraintStatement;
293
222
  GeoMatchStatement?: GeoMatchStatement;
294
223
  RuleGroupReferenceStatement?: RuleGroupReferenceStatement;
295
- LabelMatchStatement?: LabelMatchStatement;
296
- RegexMatchStatement?: RegexMatchStatement;
297
- SqliMatchStatement?: SqliMatchStatement;
224
+ IPSetReferenceStatement?: IPSetReferenceStatement;
298
225
  RegexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
299
- OrStatement?: OrStatement;
300
226
  ManagedRuleGroupStatement?: ManagedRuleGroupStatement;
301
- IPSetReferenceStatement?: IPSetReferenceStatement;
227
+ RateBasedStatement?: RateBasedStatement;
228
+ AndStatement?: AndStatement;
229
+ OrStatement?: OrStatement;
230
+ NotStatement?: NotStatement;
231
+ LabelMatchStatement?: LabelMatchStatement;
232
+ RegexMatchStatement?: RegexMatchStatement;
233
+ AsnMatchStatement?: AsnMatchStatement;
302
234
  }
303
235
  /**
304
- * Size Constraint statement.
236
+ * Byte Match statement.
305
237
  */
306
- export interface SizeConstraintStatement {
307
- ComparisonOperator: ("EQ" | "NE" | "LE" | "LT" | "GE" | "GT");
308
- TextTransformations: TextTransformation[];
309
- Size: number;
238
+ export interface ByteMatchStatement {
239
+ SearchString?: SearchString;
240
+ SearchStringBase64?: SearchStringBase64;
310
241
  FieldToMatch: FieldToMatch;
311
- }
312
- /**
313
- * Text Transformation on the Search String before match.
314
- */
315
- export interface TextTransformation {
316
- Type: TextTransformationType;
317
- Priority: TextTransformationPriority;
242
+ TextTransformations: TextTransformation[];
243
+ PositionalConstraint: PositionalConstraint;
318
244
  }
319
245
  /**
320
246
  * Field of the request to match.
321
247
  */
322
248
  export interface FieldToMatch {
249
+ SingleHeader?: {
250
+ Name: string;
251
+ };
252
+ /**
253
+ * One query argument in a web request, identified by name, for example UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.
254
+ */
255
+ SingleQueryArgument?: {
256
+ Name: string;
257
+ };
323
258
  /**
324
259
  * All query arguments of a web request.
325
260
  */
326
261
  AllQueryArguments?: {
327
262
  [k: string]: unknown;
328
263
  };
329
- JA3Fingerprint?: JA3Fingerprint;
330
264
  /**
331
- * One query argument in a web request, identified by name, for example UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.
265
+ * The path component of the URI of a web request. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg.
332
266
  */
333
- SingleQueryArgument?: {
334
- Name: string;
267
+ UriPath?: {
268
+ [k: string]: unknown;
335
269
  };
336
270
  /**
337
271
  * The query string of a web request. This is the part of a URL that appears after a ? character, if any.
@@ -339,40 +273,53 @@ export interface FieldToMatch {
339
273
  QueryString?: {
340
274
  [k: string]: unknown;
341
275
  };
342
- Headers?: Headers;
276
+ Body?: Body;
343
277
  /**
344
278
  * The HTTP method of a web request. The method indicates the type of operation that the request is asking the origin to perform.
345
279
  */
346
280
  Method?: {
347
281
  [k: string]: unknown;
348
282
  };
349
- UriFragment?: UriFragment;
350
283
  JsonBody?: JsonBody;
351
- /**
352
- * The path component of the URI of a web request. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg.
353
- */
354
- UriPath?: {
355
- [k: string]: unknown;
356
- };
284
+ Headers?: Headers;
357
285
  Cookies?: Cookies;
286
+ JA3Fingerprint?: JA3Fingerprint;
358
287
  JA4Fingerprint?: JA4Fingerprint;
359
- Body?: Body;
360
- SingleHeader?: {
361
- Name: string;
362
- };
288
+ UriFragment?: UriFragment;
363
289
  }
364
290
  /**
365
- * Includes the JA3 fingerprint of a web request.
291
+ * The body of a web request. This immediately follows the request headers.
366
292
  */
367
- export interface JA3Fingerprint {
368
- FallbackBehavior: ("MATCH" | "NO_MATCH");
293
+ export interface Body {
294
+ OversizeHandling?: OversizeHandling;
295
+ }
296
+ /**
297
+ * Inspect the request body as JSON. The request body immediately follows the request headers.
298
+ */
299
+ export interface JsonBody {
300
+ MatchPattern: JsonMatchPattern;
301
+ MatchScope: JsonMatchScope;
302
+ InvalidFallbackBehavior?: BodyParsingFallbackBehavior;
303
+ OversizeHandling?: OversizeHandling;
304
+ }
305
+ /**
306
+ * The pattern to look for in the JSON body.
307
+ */
308
+ export interface JsonMatchPattern {
309
+ /**
310
+ * Inspect all parts of the web request's JSON body.
311
+ */
312
+ All?: {
313
+ [k: string]: unknown;
314
+ };
315
+ IncludedPaths?: JsonPointerPath[];
369
316
  }
370
317
  /**
371
318
  * Includes headers of a web request.
372
319
  */
373
320
  export interface Headers {
374
- MatchScope: MapMatchScope;
375
321
  MatchPattern: HeaderMatchPattern;
322
+ MatchScope: MapMatchScope;
376
323
  OversizeHandling: OversizeHandling;
377
324
  }
378
325
  /**
@@ -396,39 +343,12 @@ export interface HeaderMatchPattern {
396
343
  */
397
344
  ExcludedHeaders?: string[];
398
345
  }
399
- /**
400
- * The path component of the URI Fragment. This is the part of a web request that identifies a fragment uri, for example, /abcd#introduction
401
- */
402
- export interface UriFragment {
403
- FallbackBehavior?: ("MATCH" | "NO_MATCH");
404
- }
405
- /**
406
- * Inspect the request body as JSON. The request body immediately follows the request headers.
407
- */
408
- export interface JsonBody {
409
- MatchScope: JsonMatchScope;
410
- MatchPattern: JsonMatchPattern;
411
- InvalidFallbackBehavior?: BodyParsingFallbackBehavior;
412
- OversizeHandling?: OversizeHandling;
413
- }
414
- /**
415
- * The pattern to look for in the JSON body.
416
- */
417
- export interface JsonMatchPattern {
418
- /**
419
- * Inspect all parts of the web request's JSON body.
420
- */
421
- All?: {
422
- [k: string]: unknown;
423
- };
424
- IncludedPaths?: JsonPointerPath[];
425
- }
426
346
  /**
427
347
  * Includes cookies of a web request.
428
348
  */
429
349
  export interface Cookies {
430
- MatchScope: MapMatchScope;
431
350
  MatchPattern: CookieMatchPattern;
351
+ MatchScope: MapMatchScope;
432
352
  OversizeHandling: OversizeHandling;
433
353
  }
434
354
  /**
@@ -453,260 +373,213 @@ export interface CookieMatchPattern {
453
373
  ExcludedCookies?: string[];
454
374
  }
455
375
  /**
456
- * Includes the JA4 fingerprint of a web request.
376
+ * Includes the JA3 fingerprint of a web request.
457
377
  */
458
- export interface JA4Fingerprint {
378
+ export interface JA3Fingerprint {
459
379
  FallbackBehavior: ("MATCH" | "NO_MATCH");
460
380
  }
461
381
  /**
462
- * The body of a web request. This immediately follows the request headers.
463
- */
464
- export interface Body {
465
- OversizeHandling?: OversizeHandling;
466
- }
467
- export interface AndStatement {
468
- Statements: Statement[];
469
- }
470
- /**
471
- * Xss Match Statement.
382
+ * Includes the JA4 fingerprint of a web request.
472
383
  */
473
- export interface XssMatchStatement {
474
- TextTransformations: TextTransformation[];
475
- FieldToMatch: FieldToMatch;
476
- }
477
- export interface NotStatement {
478
- Statement: Statement;
384
+ export interface JA4Fingerprint {
385
+ FallbackBehavior: ("MATCH" | "NO_MATCH");
479
386
  }
480
387
  /**
481
- * Byte Match statement.
388
+ * The path component of the URI Fragment. This is the part of a web request that identifies a fragment uri, for example, /abcd#introduction
482
389
  */
483
- export interface ByteMatchStatement {
484
- SearchStringBase64?: SearchStringBase64;
485
- TextTransformations: TextTransformation[];
486
- PositionalConstraint: PositionalConstraint;
487
- SearchString?: SearchString;
488
- FieldToMatch: FieldToMatch;
489
- }
490
- export interface RateBasedStatement {
491
- AggregateKeyType: ("CONSTANT" | "IP" | "FORWARDED_IP" | "CUSTOM_KEYS");
492
- /**
493
- * Specifies the aggregate keys to use in a rate-base rule.
494
- *
495
- * @maxItems 5
496
- */
497
- CustomKeys?: RateBasedStatementCustomKey[];
498
- ForwardedIPConfig?: ForwardedIPConfiguration;
499
- Limit: RateLimit;
500
- EvaluationWindowSec?: EvaluationWindowSec;
501
- ScopeDownStatement?: Statement;
390
+ export interface UriFragment {
391
+ FallbackBehavior?: ("MATCH" | "NO_MATCH");
502
392
  }
503
393
  /**
504
- * Specifies a single custom aggregate key for a rate-base rule.
394
+ * Text Transformation on the Search String before match.
505
395
  */
506
- export interface RateBasedStatementCustomKey {
507
- Cookie?: RateLimitCookie;
508
- ForwardedIP?: RateLimitForwardedIP;
509
- QueryArgument?: RateLimitQueryArgument;
510
- JA3Fingerprint?: RateLimitJA3Fingerprint;
511
- Header?: RateLimitHeader;
512
- HTTPMethod?: RateLimitHTTPMethod;
513
- QueryString?: RateLimitQueryString;
514
- UriPath?: RateLimitUriPath;
515
- IP?: RateLimitIP;
516
- JA4Fingerprint?: RateLimitJA4Fingerprint;
517
- LabelNamespace?: RateLimitLabelNamespace;
396
+ export interface TextTransformation {
397
+ Priority: TextTransformationPriority;
398
+ Type: TextTransformationType;
518
399
  }
519
400
  /**
520
- * Specifies a cookie as an aggregate key for a rate-based rule.
401
+ * Sqli Match Statement.
521
402
  */
522
- export interface RateLimitCookie {
403
+ export interface SqliMatchStatement {
404
+ FieldToMatch: FieldToMatch;
523
405
  TextTransformations: TextTransformation[];
524
- /**
525
- * The name of the cookie to use.
526
- */
527
- Name: string;
406
+ SensitivityLevel?: SensitivityLevel;
528
407
  }
529
408
  /**
530
- * Specifies the first IP address in an HTTP header as an aggregate key for a rate-based rule.
409
+ * Xss Match Statement.
531
410
  */
532
- export interface RateLimitForwardedIP {
533
- [k: string]: unknown;
411
+ export interface XssMatchStatement {
412
+ FieldToMatch: FieldToMatch;
413
+ TextTransformations: TextTransformation[];
534
414
  }
535
415
  /**
536
- * Specifies a query argument in the request as an aggregate key for a rate-based rule.
416
+ * Size Constraint statement.
537
417
  */
538
- export interface RateLimitQueryArgument {
418
+ export interface SizeConstraintStatement {
419
+ FieldToMatch: FieldToMatch;
420
+ ComparisonOperator: ("EQ" | "NE" | "LE" | "LT" | "GE" | "GT");
421
+ Size: number;
539
422
  TextTransformations: TextTransformation[];
540
- /**
541
- * The name of the query argument to use.
542
- */
543
- Name: string;
544
423
  }
545
- /**
546
- * Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
547
- */
548
- export interface RateLimitJA3Fingerprint {
424
+ export interface GeoMatchStatement {
425
+ CountryCodes?: string[];
426
+ ForwardedIPConfig?: ForwardedIPConfiguration;
427
+ }
428
+ export interface ForwardedIPConfiguration {
429
+ HeaderName: string;
549
430
  FallbackBehavior: ("MATCH" | "NO_MATCH");
550
431
  }
551
- /**
552
- * Specifies a header as an aggregate key for a rate-based rule.
553
- */
554
- export interface RateLimitHeader {
555
- TextTransformations: TextTransformation[];
432
+ export interface RuleGroupReferenceStatement {
433
+ Arn: ResourceArn;
434
+ ExcludedRules?: ExcludedRule[];
556
435
  /**
557
- * The name of the header to use.
436
+ * Action overrides for rules in the rule group.
437
+ *
438
+ * @maxItems 100
558
439
  */
559
- Name: string;
440
+ RuleActionOverrides?: RuleActionOverride[];
560
441
  }
561
442
  /**
562
- * Specifies the request's HTTP method as an aggregate key for a rate-based rule.
443
+ * Excluded Rule in the RuleGroup or ManagedRuleGroup will not be evaluated.
563
444
  */
564
- export interface RateLimitHTTPMethod {
565
- [k: string]: unknown;
445
+ export interface ExcludedRule {
446
+ Name: EntityName;
566
447
  }
567
448
  /**
568
- * Specifies the request's query string as an aggregate key for a rate-based rule.
449
+ * Action override for rules in the rule group.
569
450
  */
570
- export interface RateLimitQueryString {
571
- TextTransformations: TextTransformation[];
451
+ export interface RuleActionOverride {
452
+ Name: EntityName;
453
+ ActionToUse: RuleAction;
572
454
  }
573
455
  /**
574
- * Specifies the request's URI Path as an aggregate key for a rate-based rule.
456
+ * Action taken when Rule matches its condition.
575
457
  */
576
- export interface RateLimitUriPath {
577
- TextTransformations: TextTransformation[];
458
+ export interface RuleAction {
459
+ Allow?: AllowAction;
460
+ Block?: BlockAction;
461
+ Count?: CountAction;
462
+ Captcha?: CaptchaAction;
463
+ Challenge?: ChallengeAction;
578
464
  }
579
465
  /**
580
- * Specifies the IP address in the web request as an aggregate key for a rate-based rule.
466
+ * Allow traffic towards application.
581
467
  */
582
- export interface RateLimitIP {
583
- [k: string]: unknown;
468
+ export interface CountAction {
469
+ CustomRequestHandling?: CustomRequestHandling;
584
470
  }
585
471
  /**
586
- * Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
472
+ * Checks valid token exists with request.
587
473
  */
588
- export interface RateLimitJA4Fingerprint {
589
- FallbackBehavior: ("MATCH" | "NO_MATCH");
474
+ export interface CaptchaAction {
475
+ CustomRequestHandling?: CustomRequestHandling;
590
476
  }
591
477
  /**
592
- * Specifies a label namespace to use as an aggregate key for a rate-based rule.
478
+ * Checks that the request has a valid token with an unexpired challenge timestamp and, if not, returns a browser challenge to the client.
593
479
  */
594
- export interface RateLimitLabelNamespace {
595
- /**
596
- * The namespace to use for aggregation.
597
- */
598
- Namespace: string;
599
- }
600
- export interface ForwardedIPConfiguration {
601
- FallbackBehavior: ("MATCH" | "NO_MATCH");
602
- HeaderName: string;
603
- }
604
- export interface GeoMatchStatement {
605
- ForwardedIPConfig?: ForwardedIPConfiguration;
606
- CountryCodes?: string[];
480
+ export interface ChallengeAction {
481
+ CustomRequestHandling?: CustomRequestHandling;
607
482
  }
608
- export interface RuleGroupReferenceStatement {
609
- /**
610
- * Action overrides for rules in the rule group.
611
- *
612
- * @maxItems 100
613
- */
614
- RuleActionOverrides?: RuleActionOverride[];
483
+ export interface IPSetReferenceStatement {
615
484
  Arn: ResourceArn;
616
- ExcludedRules?: ExcludedRule[];
617
- }
618
- /**
619
- * Action override for rules in the rule group.
620
- */
621
- export interface RuleActionOverride {
622
- ActionToUse: RuleAction;
623
- Name: EntityName;
624
- }
625
- /**
626
- * Excluded Rule in the RuleGroup or ManagedRuleGroup will not be evaluated.
627
- */
628
- export interface ExcludedRule {
629
- Name: EntityName;
630
- }
631
- export interface LabelMatchStatement {
632
- Scope: LabelMatchScope;
633
- Key: LabelMatchKey;
634
- }
635
- export interface RegexMatchStatement {
636
- TextTransformations: TextTransformation[];
637
- RegexString: string;
638
- FieldToMatch: FieldToMatch;
485
+ IPSetForwardedIPConfig?: IPSetForwardedIPConfiguration;
639
486
  }
640
- /**
641
- * Sqli Match Statement.
642
- */
643
- export interface SqliMatchStatement {
644
- SensitivityLevel?: SensitivityLevel;
645
- TextTransformations: TextTransformation[];
646
- FieldToMatch: FieldToMatch;
487
+ export interface IPSetForwardedIPConfiguration {
488
+ HeaderName: string;
489
+ FallbackBehavior: ("MATCH" | "NO_MATCH");
490
+ Position: ("FIRST" | "LAST" | "ANY");
647
491
  }
648
492
  export interface RegexPatternSetReferenceStatement {
649
- TextTransformations: TextTransformation[];
650
493
  Arn: ResourceArn;
651
494
  FieldToMatch: FieldToMatch;
652
- }
653
- export interface OrStatement {
654
- Statements: Statement[];
495
+ TextTransformations: TextTransformation[];
655
496
  }
656
497
  export interface ManagedRuleGroupStatement {
498
+ Name: EntityName;
657
499
  VendorName: string;
658
500
  Version?: string;
501
+ ExcludedRules?: ExcludedRule[];
502
+ ScopeDownStatement?: Statement;
503
+ /**
504
+ * Collection of ManagedRuleGroupConfig.
505
+ */
506
+ ManagedRuleGroupConfigs?: ManagedRuleGroupConfig[];
659
507
  /**
660
508
  * Action overrides for rules in the rule group.
661
509
  *
662
510
  * @maxItems 100
663
511
  */
664
512
  RuleActionOverrides?: RuleActionOverride[];
665
- /**
666
- * Collection of ManagedRuleGroupConfig.
667
- */
668
- ManagedRuleGroupConfigs?: ManagedRuleGroupConfig[];
669
- ExcludedRules?: ExcludedRule[];
670
- Name: EntityName;
671
- ScopeDownStatement?: Statement;
672
513
  }
673
514
  /**
674
515
  * ManagedRuleGroupConfig.
675
516
  */
676
517
  export interface ManagedRuleGroupConfig {
677
- UsernameField?: FieldIdentifier;
678
518
  LoginPath?: string;
679
- AWSManagedRulesATPRuleSet?: AWSManagedRulesATPRuleSet;
680
- AWSManagedRulesBotControlRuleSet?: AWSManagedRulesBotControlRuleSet;
519
+ PayloadType?: ("JSON" | "FORM_ENCODED");
520
+ UsernameField?: FieldIdentifier;
681
521
  PasswordField?: FieldIdentifier;
522
+ AWSManagedRulesBotControlRuleSet?: AWSManagedRulesBotControlRuleSet;
523
+ AWSManagedRulesATPRuleSet?: AWSManagedRulesATPRuleSet;
682
524
  AWSManagedRulesACFPRuleSet?: AWSManagedRulesACFPRuleSet;
683
- PayloadType?: ("JSON" | "FORM_ENCODED");
525
+ AWSManagedRulesAntiDDoSRuleSet?: AWSManagedRulesAntiDDoSRuleSet;
684
526
  }
685
527
  export interface FieldIdentifier {
686
528
  Identifier: string;
687
529
  }
530
+ /**
531
+ * Configures how to use the Bot Control managed rule group in the web ACL
532
+ */
533
+ export interface AWSManagedRulesBotControlRuleSet {
534
+ InspectionLevel: ("COMMON" | "TARGETED");
535
+ EnableMachineLearning?: boolean;
536
+ }
688
537
  /**
689
538
  * Configures how to use the Account Takeover Prevention managed rule group in the web ACL
690
539
  */
691
540
  export interface AWSManagedRulesATPRuleSet {
692
- ResponseInspection?: ResponseInspection;
693
- EnableRegexInPath?: boolean;
694
541
  LoginPath: string;
542
+ EnableRegexInPath?: boolean;
695
543
  RequestInspection?: RequestInspection;
544
+ ResponseInspection?: ResponseInspection;
545
+ }
546
+ /**
547
+ * Configures the inspection of login requests
548
+ */
549
+ export interface RequestInspection {
550
+ PayloadType: ("JSON" | "FORM_ENCODED");
551
+ UsernameField: FieldIdentifier;
552
+ PasswordField: FieldIdentifier;
696
553
  }
697
554
  /**
698
555
  * Configures the inspection of login responses
699
556
  */
700
557
  export interface ResponseInspection {
558
+ StatusCode?: ResponseInspectionStatusCode;
701
559
  Header?: ResponseInspectionHeader;
702
560
  BodyContains?: ResponseInspectionBodyContains;
703
561
  Json?: ResponseInspectionJson;
704
- StatusCode?: ResponseInspectionStatusCode;
562
+ }
563
+ /**
564
+ * Response status codes that indicate success or failure of a login request
565
+ */
566
+ export interface ResponseInspectionStatusCode {
567
+ /**
568
+ * @minItems 1
569
+ * @maxItems 10
570
+ */
571
+ SuccessCodes: number[];
572
+ /**
573
+ * @minItems 1
574
+ * @maxItems 10
575
+ */
576
+ FailureCodes: number[];
705
577
  }
706
578
  /**
707
579
  * Response headers that indicate success or failure of a login request
708
580
  */
709
581
  export interface ResponseInspectionHeader {
582
+ Name: string;
710
583
  /**
711
584
  * @minItems 1
712
585
  * @maxItems 3
@@ -717,7 +590,6 @@ export interface ResponseInspectionHeader {
717
590
  * @maxItems 3
718
591
  */
719
592
  FailureValues: string[];
720
- Name: string;
721
593
  }
722
594
  /**
723
595
  * Response body contents that indicate success or failure of a login request
@@ -751,64 +623,192 @@ export interface ResponseInspectionJson {
751
623
  FailureValues: string[];
752
624
  }
753
625
  /**
754
- * Response status codes that indicate success or failure of a login request
626
+ * Configures how to use the Account creation fraud prevention managed rule group in the web ACL
755
627
  */
756
- export interface ResponseInspectionStatusCode {
628
+ export interface AWSManagedRulesACFPRuleSet {
629
+ CreationPath: string;
630
+ RegistrationPagePath: string;
631
+ RequestInspection: RequestInspectionACFP;
632
+ ResponseInspection?: ResponseInspection;
633
+ EnableRegexInPath?: boolean;
634
+ }
635
+ /**
636
+ * Configures the inspection of sign-up requests
637
+ */
638
+ export interface RequestInspectionACFP {
639
+ PayloadType: ("JSON" | "FORM_ENCODED");
640
+ UsernameField?: FieldIdentifier;
641
+ PasswordField?: FieldIdentifier;
642
+ EmailField?: FieldIdentifier;
643
+ PhoneNumberFields?: FieldIdentifier[];
644
+ AddressFields?: FieldIdentifier[];
645
+ }
646
+ /**
647
+ * Configures how to use the AntiDDOS AWS managed rule group in the web ACL
648
+ */
649
+ export interface AWSManagedRulesAntiDDoSRuleSet {
650
+ ClientSideActionConfig: ClientSideActionConfig;
651
+ SensitivityToBlock?: SensitivityToAct;
652
+ }
653
+ /**
654
+ * Client side action config for AntiDDOS AMR.
655
+ */
656
+ export interface ClientSideActionConfig {
657
+ Challenge: ClientSideAction;
658
+ }
659
+ /**
660
+ * Client side action config for AntiDDOS AMR.
661
+ */
662
+ export interface ClientSideAction {
663
+ UsageOfAction: UsageOfAction;
664
+ Sensitivity?: SensitivityToAct;
665
+ ExemptUriRegularExpressions?: RegularExpressionList;
666
+ }
667
+ /**
668
+ * Regex
669
+ */
670
+ export interface Regex {
671
+ RegexString?: RegexPatternString;
672
+ [k: string]: unknown;
673
+ }
674
+ export interface RateBasedStatement {
675
+ Limit: RateLimit;
676
+ EvaluationWindowSec?: EvaluationWindowSec;
677
+ AggregateKeyType: ("CONSTANT" | "IP" | "FORWARDED_IP" | "CUSTOM_KEYS");
757
678
  /**
758
- * @minItems 1
759
- * @maxItems 10
679
+ * Specifies the aggregate keys to use in a rate-base rule.
680
+ *
681
+ * @maxItems 5
760
682
  */
761
- SuccessCodes: number[];
683
+ CustomKeys?: RateBasedStatementCustomKey[];
684
+ ScopeDownStatement?: Statement;
685
+ ForwardedIPConfig?: ForwardedIPConfiguration;
686
+ }
687
+ /**
688
+ * Specifies a single custom aggregate key for a rate-base rule.
689
+ */
690
+ export interface RateBasedStatementCustomKey {
691
+ Cookie?: RateLimitCookie;
692
+ ForwardedIP?: RateLimitForwardedIP;
693
+ Header?: RateLimitHeader;
694
+ HTTPMethod?: RateLimitHTTPMethod;
695
+ IP?: RateLimitIP;
696
+ LabelNamespace?: RateLimitLabelNamespace;
697
+ QueryArgument?: RateLimitQueryArgument;
698
+ QueryString?: RateLimitQueryString;
699
+ UriPath?: RateLimitUriPath;
700
+ JA3Fingerprint?: RateLimitJA3Fingerprint;
701
+ JA4Fingerprint?: RateLimitJA4Fingerprint;
702
+ ASN?: RateLimitAsn;
703
+ }
704
+ /**
705
+ * Specifies a cookie as an aggregate key for a rate-based rule.
706
+ */
707
+ export interface RateLimitCookie {
762
708
  /**
763
- * @minItems 1
764
- * @maxItems 10
709
+ * The name of the cookie to use.
765
710
  */
766
- FailureCodes: number[];
711
+ Name: string;
712
+ TextTransformations: TextTransformation[];
767
713
  }
768
714
  /**
769
- * Configures the inspection of login requests
715
+ * Specifies the first IP address in an HTTP header as an aggregate key for a rate-based rule.
770
716
  */
771
- export interface RequestInspection {
772
- UsernameField: FieldIdentifier;
773
- PasswordField: FieldIdentifier;
774
- PayloadType: ("JSON" | "FORM_ENCODED");
717
+ export interface RateLimitForwardedIP {
718
+ [k: string]: unknown;
775
719
  }
776
720
  /**
777
- * Configures how to use the Bot Control managed rule group in the web ACL
721
+ * Specifies a header as an aggregate key for a rate-based rule.
778
722
  */
779
- export interface AWSManagedRulesBotControlRuleSet {
780
- InspectionLevel: ("COMMON" | "TARGETED");
781
- EnableMachineLearning?: boolean;
723
+ export interface RateLimitHeader {
724
+ /**
725
+ * The name of the header to use.
726
+ */
727
+ Name: string;
728
+ TextTransformations: TextTransformation[];
782
729
  }
783
730
  /**
784
- * Configures how to use the Account creation fraud prevention managed rule group in the web ACL
731
+ * Specifies the request's HTTP method as an aggregate key for a rate-based rule.
785
732
  */
786
- export interface AWSManagedRulesACFPRuleSet {
787
- RegistrationPagePath: string;
788
- ResponseInspection?: ResponseInspection;
789
- CreationPath: string;
790
- EnableRegexInPath?: boolean;
791
- RequestInspection: RequestInspectionACFP;
733
+ export interface RateLimitHTTPMethod {
734
+ [k: string]: unknown;
792
735
  }
793
736
  /**
794
- * Configures the inspection of sign-up requests
737
+ * Specifies the IP address in the web request as an aggregate key for a rate-based rule.
795
738
  */
796
- export interface RequestInspectionACFP {
797
- UsernameField?: FieldIdentifier;
798
- EmailField?: FieldIdentifier;
799
- PasswordField?: FieldIdentifier;
800
- AddressFields?: FieldIdentifier[];
801
- PayloadType: ("JSON" | "FORM_ENCODED");
802
- PhoneNumberFields?: FieldIdentifier[];
739
+ export interface RateLimitIP {
740
+ [k: string]: unknown;
803
741
  }
804
- export interface IPSetReferenceStatement {
805
- IPSetForwardedIPConfig?: IPSetForwardedIPConfiguration;
806
- Arn: ResourceArn;
742
+ /**
743
+ * Specifies a label namespace to use as an aggregate key for a rate-based rule.
744
+ */
745
+ export interface RateLimitLabelNamespace {
746
+ /**
747
+ * The namespace to use for aggregation.
748
+ */
749
+ Namespace: string;
807
750
  }
808
- export interface IPSetForwardedIPConfiguration {
751
+ /**
752
+ * Specifies a query argument in the request as an aggregate key for a rate-based rule.
753
+ */
754
+ export interface RateLimitQueryArgument {
755
+ /**
756
+ * The name of the query argument to use.
757
+ */
758
+ Name: string;
759
+ TextTransformations: TextTransformation[];
760
+ }
761
+ /**
762
+ * Specifies the request's query string as an aggregate key for a rate-based rule.
763
+ */
764
+ export interface RateLimitQueryString {
765
+ TextTransformations: TextTransformation[];
766
+ }
767
+ /**
768
+ * Specifies the request's URI Path as an aggregate key for a rate-based rule.
769
+ */
770
+ export interface RateLimitUriPath {
771
+ TextTransformations: TextTransformation[];
772
+ }
773
+ /**
774
+ * Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
775
+ */
776
+ export interface RateLimitJA3Fingerprint {
777
+ FallbackBehavior: ("MATCH" | "NO_MATCH");
778
+ }
779
+ /**
780
+ * Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
781
+ */
782
+ export interface RateLimitJA4Fingerprint {
809
783
  FallbackBehavior: ("MATCH" | "NO_MATCH");
810
- HeaderName: string;
811
- Position: ("FIRST" | "LAST" | "ANY");
784
+ }
785
+ /**
786
+ * Specifies the request's ASN as an aggregate key for a rate-based rule.
787
+ */
788
+ export interface RateLimitAsn {
789
+ [k: string]: unknown;
790
+ }
791
+ export interface AndStatement {
792
+ Statements: Statement[];
793
+ }
794
+ export interface OrStatement {
795
+ Statements: Statement[];
796
+ }
797
+ export interface NotStatement {
798
+ Statement: Statement;
799
+ }
800
+ export interface LabelMatchStatement {
801
+ Scope: LabelMatchScope;
802
+ Key: LabelMatchKey;
803
+ }
804
+ export interface RegexMatchStatement {
805
+ RegexString: string;
806
+ FieldToMatch: FieldToMatch;
807
+ TextTransformations: TextTransformation[];
808
+ }
809
+ export interface AsnMatchStatement {
810
+ AsnList?: number[];
811
+ ForwardedIPConfig?: ForwardedIPConfiguration;
812
812
  }
813
813
  /**
814
814
  * Override a RuleGroup or ManagedRuleGroup behavior. This can only be applied to Rule that has RuleGroupReferenceStatement or ManagedRuleGroupReferenceStatement.
@@ -834,19 +834,47 @@ export interface Label {
834
834
  * Visibility Metric of the WebACL.
835
835
  */
836
836
  export interface VisibilityConfig {
837
- MetricName: string;
838
837
  SampledRequestsEnabled: boolean;
839
838
  CloudWatchMetricsEnabled: boolean;
839
+ MetricName: string;
840
840
  }
841
841
  export interface CaptchaConfig {
842
842
  ImmunityTimeProperty?: ImmunityTimeProperty;
843
843
  }
844
+ export interface ImmunityTimeProperty {
845
+ ImmunityTime: number;
846
+ }
847
+ export interface ChallengeConfig {
848
+ ImmunityTimeProperty?: ImmunityTimeProperty;
849
+ }
844
850
  /**
845
- * Default Action WebACL will take against ingress traffic when there is no matching Rule.
851
+ * Collection of dataProtects.
846
852
  */
847
- export interface DefaultAction {
848
- Block?: BlockAction;
849
- Allow?: AllowAction;
853
+ export interface DataProtectionConfig {
854
+ DataProtections: DataProtections;
855
+ }
856
+ export interface DataProtect {
857
+ Field: FieldToProtect;
858
+ Action: DataProtectionAction;
859
+ ExcludeRuleMatchDetails?: boolean;
860
+ ExcludeRateBasedDetails?: boolean;
861
+ }
862
+ /**
863
+ * Field in log to protect.
864
+ */
865
+ export interface FieldToProtect {
866
+ /**
867
+ * Field type to protect
868
+ */
869
+ FieldType: ("SINGLE_HEADER" | "SINGLE_COOKIE" | "SINGLE_QUERY_ARGUMENT" | "QUERY_STRING" | "BODY");
870
+ /**
871
+ * List of field keys to protect
872
+ */
873
+ FieldKeys?: FieldToProtectKeyName[];
874
+ }
875
+ export interface Tag {
876
+ Key?: string;
877
+ Value?: string;
850
878
  }
851
879
  /**
852
880
  * Custom response key and body map.
@@ -864,7 +892,30 @@ export interface CustomResponseBody {
864
892
  ContentType: ResponseContentType;
865
893
  Content: ResponseContent;
866
894
  }
867
- export interface Tag {
868
- Value?: string;
869
- Key?: string;
895
+ /**
896
+ * AssociationConfig for body inspection
897
+ */
898
+ export interface AssociationConfig {
899
+ RequestBody?: RequestBody;
900
+ }
901
+ /**
902
+ * Map of AssociatedResourceType and RequestBodyAssociatedResourceTypeConfig
903
+ */
904
+ export interface RequestBody {
905
+ [k: string]: RequestBodyAssociatedResourceTypeConfig;
906
+ }
907
+ /**
908
+ * Configures the inspection size in the request body.
909
+ *
910
+ * This interface was referenced by `RequestBody`'s JSON-Schema definition
911
+ * via the `patternProperty` "^(CLOUDFRONT|API_GATEWAY|COGNITO_USER_POOL|APP_RUNNER_SERVICE|VERIFIED_ACCESS_INSTANCE)$".
912
+ */
913
+ export interface RequestBodyAssociatedResourceTypeConfig {
914
+ DefaultSizeInspectionLimit: SizeInspectionLimit;
915
+ }
916
+ /**
917
+ * Configures the options for on-source DDoS protection provided by supported resource type.
918
+ */
919
+ export interface OnSourceDDoSProtectionConfig {
920
+ ALBLowReputationMode: ("ACTIVE_UNDER_DDOS" | "ALWAYS_ON");
870
921
  }