AWS WAF のアイデンティティベースのポリシーの例
このセクションでは、AWS WAF の ID ベースのポリシーの例をいくつか示します。
デフォルトでは、 ユーザーおよびロールには、AWS WAF リソースを作成または変更する権限はありません。また、AWS Management Console、AWS Command Line Interface (AWS CLI)、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。その後、管理者はロールに IAM ポリシーを追加し、ユーザーはロールを引き受けることができます。
これらサンプルの JSON ポリシードキュメントを使用して IAM アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーを作成する (コンソール)」を参照してください。
AWS WAF が定義するアクションおよびリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「Service Authorization Reference」で「Actions, resources, and condition keys for AWS WAF V2」を参照してください。
トピック
ポリシーのベストプラクティス
ID ベースのポリシーは、ユーザーのアカウントで誰かが AWS WAF リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、AWS アカウント に料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウントで使用できます。ユースケースに応じた AWS カスタマー管理ポリシーを定義することで、許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWSマネージドポリシー」または「ジョブ機能の AWS マネージドポリシー」を参照してください。
-
最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、IAM ユーザーガイドのIAM でのポリシーとアクセス許可を参照してください。
-
IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、AWS CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、「IAM ユーザーガイド」の [IAM JSON policy elements: Condition] (IAM JSON ポリシー要素:条件) を参照してください。
-
IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer でポリシーを検証する」を参照してください。
-
多要素認証 (MFA) を要求する – AWS アカウント で IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA を使用した 安全な API アクセス」を参照してください。
IAM でのベストプラクティスの詳細については、IAM ユーザーガイドのIAM でのセキュリティのベストプラクティスを参照してください。
AWS WAF コンソールを使用する
AWS WAF コンソールにアクセスするには、一連の最小限のアクセス許可が必要です。これらのアクセス許可により、AWS アカウント の AWS WAF リソースの詳細をリストおよび表示できます。最小限の必要なアクセス許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しなくなります。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール権限を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスを許可します。
ユーザーおよびロールが AWS WAF コンソールを使用できるようにするには、エンティティに少なくとも AWS WAF AWSWAFConsoleReadOnlyAccess
AWS 管理ポリシーもアタッチします。このマネージドポリシーの情報については、「AWS 管理ポリシー: AWSWAFConsoleReadOnlyAccess」を参照してください。マネージドポリシーをユーザーにアタッチする方法の詳細については、IAM ユーザーガイドの「Adding permissions to a user」(ユーザーに許可の追加) を参照してください。
自分の権限の表示をユーザーに許可する
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI か AWS API を使用してプログラム的に、このアクションを完了する権限が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
AWS WAF、CloudFront、CloudWatch に読み取り専用アクセス権を付与
次のポリシーは、ユーザーに AWS WAF リソース、Amazon CloudFront ウェブディストリビューション、Amazon CloudWatch メトリクスへの読み取り専用アクセスを許可します。これは、AWS WAF の条件、ルール、ウェブ ACL の設定を表示してウェブ ACL に関連付けられているディストリビューションを確認する許可と、CloudWatch でメトリクスとリクエストのサンプルをモニタリングする許可が必要なユーザーにとって便利です。これらのユーザーは、AWS WAF リソースを作成、更新、または削除することはできません。
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "wafv2:Get*", "wafv2:List*", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListDistributionsByWebACLId", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "ec2:DescribeRegions" ], "Effect": "Allow", "Resource": "*" } ] }
AWS WAF、CloudFront、CloudWatch にフルアクセス権を付与
次のポリシーにより、ユーザーは AWS WAF オペレーションを実行し、CloudFront ウェブディストリビューションで任意のオペレーションを実行して、CloudWatch でメトリクスとリクエストのサンプルをモニタリングできます。これは、AWS WAF 管理者であるユーザーにとって便利です。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "wafv2:*", "cloudfront:CreateDistribution", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:UpdateDistribution", "cloudfront:ListDistributions", "cloudfront:ListDistributionsByWebACLId", "cloudfront:DeleteDistribution", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "ec2:DescribeRegions" ], "Effect": "Allow", "Resource": "*" } ] }
管理者許可を持つユーザーに対しては多要素認証 (MFA) を設定することを強くお勧めします。詳細については、「IAM ユーザーガイド」の「AWS でのMulti-Factor Authentication (MFA) の使用」を参照してください。
単一 AWS アカウント にアクセス権を付与
このポリシーは、アカウント 444455556666 に次の許可を付与します。
-
すべての AWS WAF オペレーションおよびリソースへのフルアクセス。
-
ウェブ ACL と CloudFront ディストリビューションを関連付けるための、すべての CloudFront ディストリビューションへの読み取りおよび更新アクセス。
-
CloudWatch データとリクエストのサンプルを AWS WAF コンソールで表示するための、すべての CloudWatch メトリクスおよびメトリクス統計への読み取りアクセス。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "wafv2:*" ], "Resource": [ "arn:aws:wafv2:us-east-1:444455556666:*" ] }, { "Effect": "Allow", "Action": [ "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListDistributionsByWebACLId", "cloudfront:UpdateDistribution", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "ec2:DescribeRegions" ], "Resource": [ "*" ] } ] }
単一のウェブ ACL にアクセス権を付与
次のポリシーは、ユーザーがコンソールを使用してアカウント 444455556666
内の特定ウェブ ACL で、あらゆる AWS WAF 操作を実行できるようにします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "wafv2:*" ], "Resource": [ "arn:aws:wafv2:us-east-1:444455556666:regional/webacl/test123/112233d7c-86b2-458b-af83-51c51example", ] }, { "Sid": "consoleAccess", "Effect": "Allow", "Action": [ "wafv2:ListWebACLs", "ec2:DescribeRegions" ], "Resource": [ "*" ] } ] }
ウェブ ACL およびルールグループに対して、CLI アクセス権を付与
次のポリシーは、ユーザーが CLI を使用してアカウント 444455556666
内の特定ウェブ ACL および特定ルールグループに対してあらゆる AWS WAF 操作を実行できるようにします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "wafv2:*" ], "Resource": [ "arn:aws:wafv2:us-east-1:444455556666:regional/webacl/test123/112233d7c-86b2-458b-af83-51c51example", "arn:aws:wafv2:us-east-1:444455556666:regional/rulegroup/test123rulegroup/555555555-6666-1234-abcd-00d11example" ] } ] }
次のポリシーは、ユーザーがコンソールを使用してアカウント 444455556666
内の特定ウェブ ACL で、あらゆる AWS WAF 操作を実行できるようにします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "wafv2:*" ], "Resource": [ "arn:aws:wafv2:us-east-1:444455556666:regional/webacl/test123/112233d7c-86b2-458b-af83-51c51example", ] }, { "Sid": "consoleAccess", "Effect": "Allow", "Action": [ "wafv2:ListWebACLs", "ec2:DescribeRegions" ], "Resource": [ "*" ] } ] }