この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにんちは、虎塚です。
AWS WAF が登場して、どんどん試している最中かと思いますが、アクセス制御には気をつけましょう。IAMユーザ、IAMグループ、またはIAMロールに紐付けるためのIAMポリシーを作成するのは、いつもと同じです。
AWS WAF関連のIAM設定を簡単にご紹介します。
IAMポリシーでできる制御
AWS WAFのアクセス制御と言ったとき、次の2種類があることを念頭に置いておいてください。
- AWS WAF自体のアクセス制御
- AWS WAFが必要とする他のAWSサービスへのアクセス制御
AWS WAFやシステムのセキュリティ面では前者が重要です。後者はWAFが動作するために必要です。
また、ユーザアクセスは、AWS WAF全体とWAFのサブセットに対して与えることができます。WAFのサブセットというのは、各ルールやIPアドレスセットのことです。
設定の例
Read Only
AWS WAFに対してRead Onlyの設定をするには、次のようなポリシーを用意します。AWS WAFの設定を確認だけしたいとき/させたいときにどうぞ。
{
"Version":"2012-10-17",
"Statement": [
{
"Action": [
"waf:Get*",
"waf:List*",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
管理者
AWS WAFに対する管理者権限のポリシーは、次のように定義します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"waf:*",
"cloudfront:CreateDistribution",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:UpdateDistribution",
"cloudfront:ListDistributions",
"cloudfront:DeleteDistribution"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
上記の定義を与えると、Web ACLを作成したり削除したりできます。また、新規・既存のCloudFrontディストリビューションに、追加のWAFルールとして、作成したWeb ACLを選択することもできるようになります。
特定のWAF要素に対するアクセス制御
公式ドキュメントのとおり、AWS WAFはルールやWebACLなどいくつか要素から構成されています。IAMポリシーでは、次のリソース単位でアクセス制御を設定できます。
- ByteMatchSet
- IPSet
- SqlInjectionMatchSet
- Rule
- WebACL
IAMポリシーに記述するResourceの記法は、次のようになります。
arn:aws:waf::account:resource/ID
resource部分に、前述の各要素が入ります。細かい単位でアクセス制御ができますので、複数のシステムでルールを共有することも、逆にさせないこともできますね。
おわりに
セキュリティに気をつけつつ、AWS WAFでいろいろ試してみたいと思います。
それでは、また。