Используйте WAF для проверки значения настраиваемого заголовка HTTP, установленного в API GW
Внедрить настраиваемый заголовок HTTP в запрос интеграции метода интеграции HTTP API GW. Используйте статическое значение, как описано в Справочник по сопоставлению данных запросов и ответов API Amazon API Gateway.
"STATIC_VALUE". STATIC_VALUE - это строковый литерал, который должен быть заключен в пару одинарных кавычек.
![введите описание изображения здесь](https://i.stack.imgur.com/euh3P.png)
Как и в случае с документацией AWS, использование файла integration.request.header может сбить с толку. формат. При настройке в консоли AWS не нужно вводить integration.request.header. Просто введите только название заголовка. Убедитесь, что значение заголовка заключено в одинарные кавычки.
Однако при использовании таких инструментов, как CDK или CFN, нам необходимо использовать integration.request.header. часть.
cdk_api_method: aws_apigateway.Method = cdk_api_resource.add_method(
http_method="post",
integration=aws_apigateway.HttpIntegration(
url=url,
http_method="post",
proxy=True,
options=aws_apigateway.IntegrationOptions(
request_parameters={
"integration.request.header.{}".format(HTTP_HEADER_X_VALIDATION_CLIENT_NAME): "'{}'".format(HTTP_HEADER_X_VALIDATION_CLIENT_VALUE)
}
)
)
)
Настройте WAF, чтобы проверить значение заголовка HTTP и связать ALB с WAF ACL.
![введите описание изображения здесь](https://i.stack.imgur.com/b8S8d.png)
# https://github.com/aws-samples/wafv2-json-yaml-samples/blob/master/JSON/rule-001.json
aws_wafv2.CfnWebACL.RuleProperty(
name='header-x-validation-client',
action=aws_wafv2.CfnWebACL.RuleActionProperty(
allow={}
),
statement=aws_wafv2.CfnWebACL.StatementOneProperty(
byte_match_statement=aws_wafv2.CfnWebACL.ByteMatchStatementProperty(
field_to_match=aws_wafv2.CfnWebACL.FieldToMatchProperty(
single_header={
"Name": HTTP_HEADER_X_VALIDATION_CLIENT_NAME
}
),
positional_constraint="EXACTLY",
search_string=HTTP_HEADER_X_VALIDATION_CLIENT_VALUE,
text_transformations=[
aws_wafv2.CfnWebACL.TextTransformationProperty(
priority=0,
type="NONE"
)
]
)
),
visibility_config=aws_wafv2.CfnWebACL.VisibilityConfigProperty(
sampled_requests_enabled=True,
cloud_watch_metrics_enabled=True,
metric_name='waf-rule-header-x-validation-client'
),
priority=0
)
person
mon
schedule
24.06.2020