AWS WAFV2 の IP Set を CLI で実行する
はじめに
CloudFrontにIP制限を設けるタイミングがあったので、cliでIPSet周り触ってみた。
AWS WAFV2 について
公式確認
Creates an IPSet, which you use to identify web requests that originate from specific IP addresses or ranges of IP addresses. For example, if you're receiving a lot of requests from a ranges of IP addresses, you can configure AWS WAF to block them using an IPSet that lists those IP addresses.
https://docs.aws.amazon.com/ja_jp/waf/latest/APIReference/API_CreateIPSet.html
特定の IP アドレスまたは IP アドレスの範囲をリストアップしたIPSetを使用して、それらをブロックしたり許可したりをAWS WAFで設定できる。
CreateIPSet
まずは、IPアドレスのリストを作成する
exapmle
aws wafv2 create-ip-set \
--name testip \
--scope CLOUDFRONT \
--region=us-east-1 \
--ip-address-version IPV4 \
--addresses 198.51.100.0/32
ListIpSets
作成したIPSetを一覧で確認できる
aws wafv2 list-ip-sets \
--scope CLOUDFRONT \
--region us-east-1
UpdateIpSet
UpdateIpSetでIPの情報を更新する
aws wafv2 update-ip-set \
--name testip \
--scope CLOUDFRONT \
--id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
--addresses 198.52.100.0/32 \
--lock-token 447e55ac-2396-4c6d-b9f9-86b67c17f8b5 \
--region us-east-1
更新する場合、既存のデータを上書きする仕様
→既存で登録されている情報を上書きする
DeleteIpSet
作成したIpSetは削除する。
aws wafv2 delete-ip-set \
--name testip \
--scope CLOUDFRONT \
--region us-east-1 \
--id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
--lock-token 46851772-db6f-459d-9385-49428812e357
CreateWebAcl
次にACLの作成を行う
A web ACL defines a collection of rules to use to inspect and control web requests.
https://docs.aws.amazon.com/waf/latest/APIReference/API_WebACL.html
Web ACL は、Web リクエストの検査と制御に使用するルールのコレクションを定義する
example
aws wafv2 create-web-acl \
--name TestWebAcl \
--scope CLOUDFRONT \
--default-action Allow={} \
--visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=TestWebAclMetrics \
--rules file://waf-rule.json \
--region us-east-1
Contents of file://waf-rule.json:
[
{
"Name": "hoge-waf",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "" // IP set の ARN が入ります
}
},
"Action": {
"Allow": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "hoge-waf-ip-set"
}
}
]
ListWebAcls
作成したACLを一覧で確認する
aws wafv2 list-web-acls \
--scope CLOUDFRONT \
--region us-east-1
GetWebAcl
作成したACLを取得する
example
aws wafv2 get-web-acl \
--name TestWebAcl \
--scope CLOUDFRONT \
--region us-east-1 \
--id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
DeleteWebAcl
作成したACLを削除する
aws wafv2 delete-web-acl \
--name TestWebAcl \
--scope CLOUDFRONT \
--region us-east-1 \
--id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
--lock-token ebab4ed2-155e-4c9a-9efb-e4c45665b1f5
実際にCloudFrontへの適応などはysmtegsrさんの内容など参考になりました。
CLOUDFRONTに対してWAFの設定を行いたい場合は、問答無用でregion
をus-east-1
に設定する必要がありそうなので気を付ける
Discussion