AWS WAF と IAM の連携方法
このセクションでは、AWS WAF で IAM の機能を使用する方法について説明します。
IAM を使用して AWS WAF へのアクセスを管理する前に、AWS WAF で利用できる IAM の機能について学びます。
IAM の機能 | AWS WAF サポート |
---|---|
あり |
|
可能 |
|
あり |
|
はい |
|
はい |
|
なし |
|
部分的 |
|
可能 |
|
可能 |
|
あり |
|
可能 |
AWS WAF およびその他の AWS のサービスがほとんどの IAM 機能と連携する方法の概要を把握するには、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。
AWS WAF のアイデンティティベースのポリシー
アイデンティティベースのポリシーのサポート: あり
アイデンティティベースポリシーは、IAM ユーザーグループ、ユーザーのグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。ID ベースのポリシーの作成方法については、「IAM ユーザーガイド」の「カスタマー管理ポリシーによるカスタム IAM アクセス許可の定義」を参照してください。
IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。プリンシパルは、それが添付されているユーザーまたはロールに適用されるため、アイデンティティベースのポリシーでは指定できません。JSON ポリシーで使用できるすべての要素について学ぶには、「IAM ユーザーガイド」の「IAM JSON ポリシーの要素のリファレンス」を参照してください。
AWS WAF アイデンティティベースのポリシーの例を表示するには、「AWS WAF のアイデンティティベースのポリシーの例」を参照してください。
AWS WAF 内のリソースベースのポリシー
リソースベースのポリシーのサポート: はい
リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM ロールの信頼ポリシー や Amazon S3 バケットポリシー があげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。ポリシーがアタッチされているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーでは、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーションユーザー、または AWS のサービス を含めることができます。
クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが異なる AWS アカウント にある場合、信頼できるアカウントの IAM 管理者は、リソースにアクセスするための権限をプリンシパルエンティティ (ユーザーまたはロール) に付与する必要もあります。IAM 管理者は、アイデンティティベースのポリシーをエンティティにアタッチすることで権限を付与します。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、アイデンティティベースのポリシーをさらに付与する必要はありません。詳細については、「IAM ユーザーガイド」の「IAM でのクロスアカウントリソースアクセス」を参照してください。
AWS WAFはリソースベースのポリシーを使用して、アカウント間でのルールグループの共有をサポートします。AWS WAF API コール PutPermissionPolicy
、または同等の CLI または SDK コールにリソースベースのポリシー設定を提供することで、所有するルールグループを他の AWS アカウントと共有します。他の使用可能な言語の例やドキュメントへのリンクなどの追加情報については、「AWS WAF API リファレンス」の「PutPermissionPolicy」を参照してください。この機能は、コンソールや AWS CloudFormation などの他の方法では使用できません。
AWS WAF のポリシーアクション
ポリシーアクションのサポート: あり
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件でアクションを実行できるかということです。
JSON ポリシーのAction
要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションのない許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。
このアクションは、関連付けられたオペレーションを実行するための権限を付与するポリシーで使用されます。
それぞれの AWS WAF アクションとアクセス許可のリストを確認するには、「サービス認可リファレンス」で「AWS WAF V2 によって定義されたアクション」を参照してください。
AWS WAF のポリシーアクションは、アクションの前に以下のプレフィックス を使用します。
wafv2
単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。
"Action": [ "wafv2:
action1
", "wafv2:action2
" ]
ワイルドカード (*) を使用して複数アクションを指定できます。たとえば、List
で始まるすべて AWS WAF のアクションを指定するには、次のアクションを含めます。
"Action": "wafv2:List*"
AWS WAF アイデンティティベースのポリシーの例を表示するには、「AWS WAF のアイデンティティベースのポリシーの例」を参照してください。
追加のアクセス許可設定が必要なアクション
アクションの中には、「Service Authorization Reference」の「AWS WAF V2 によって定義されるアクション」では完全には説明できないアクセス許可が必要なものもあります。このセクションは、追加のアクセス許可に関する情報を説明します。
トピック
AssociateWebACL
のアクセス権限
このセクションでは、AWS WAF アクションAssociateWebACL
を使用してウェブ ACL をリソースに関連付けるために必要なアクセス許可の一覧を示します。
Amazon CloudFront ディストリビューションでは、このアクションの代わりに CloudFront アクション UpdateDistribution
を使用してください。詳細については、Amazon CloudFront API リファレンスの「UpdateDistribution」を参照してください。
Amazon API Gateway REST API
REST API リソースタイプで API ゲートウェイ SetWebACL
を呼び出すアクセス許可と、ウェブ ACL で AWS WAF AssociateWebACL
を呼び出すアクセス許可が必要です。
{ "Sid": "AssociateWebACL1", "Effect": "Allow", "Action": [ "wafv2:AssociateWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "AssociateWebACL2", "Effect": "Allow", "Action": [ "apigateway:SetWebACL" ], "Resource": [ "arn:aws:apigateway:*::/restapis/*/stages/*" ] }
Application Load Balancer
Application Load Balancer リソースタイプで elasticloadbalancing:SetWebACL
アクションを呼び出し、ウェブ ACL で AWS WAF AssociateWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "AssociateWebACL1", "Effect": "Allow", "Action": [ "wafv2:AssociateWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "AssociateWebACL2", "Effect": "Allow", "Action": [ "elasticloadbalancing:SetWebACL" ], "Resource": [ "arn:aws:elasticloadbalancing:*:account-id
:loadbalancer/app/*/*" ] }
AWS AppSync GraphQL API
GraphQL API リソースタイプを AWS AppSync SetWebACL
を呼び出すアクセス許可とウェブ ACL で AWS WAF AssociateWebACL
を呼び出すアクセス許可が必要です。
{ "Sid": "AssociateWebACL1", "Effect": "Allow", "Action": [ "wafv2:AssociateWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "AssociateWebACL2", "Effect": "Allow", "Action": [ "appsync:SetWebACL" ], "Resource": [ "arn:aws:appsync:*:account-id
:apis/*" ] }
Amazon Cognito ユーザープール
ユーザープールリソースタイプで Amazon Cognito AssociateWebACL
アクションを呼び出したり、ウェブ ACL で AWS WAF AssociateWebACL
を呼び出したりするためのアクセス許可が必要です。
{ "Sid": "AssociateWebACL1", "Effect": "Allow", "Action": [ "wafv2:AssociateWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "AssociateWebACL2", "Effect": "Allow", "Action": [ "cognito-idp:AssociateWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:account-id
:userpool/*" ] }
AWS App Runner のサービス
App Runner サービスリソースタイプで App Runner AssociateWebACL
アクションを呼び出すアクセス許可と、ウェブ ACL で AWS WAF AssociateWebACL
を呼び出すアクセス許可が必要です。
{ "Sid": "AssociateWebACL1", "Effect": "Allow", "Action": [ "wafv2:AssociateWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "AssociateWebACL2", "Effect": "Allow", "Action": [ "apprunner:AssociateWebAcl" ], "Resource": [ "arn:aws:apprunner:*:account-id
:service/*/*" ] }
AWS Verified Access インスタンス
Verified Access インスタンスリソースタイプで ec2:AssociateVerifiedAccessInstanceWebAcl
アクションを呼び出すには、ウェブ ACL で AWS WAF AssociateWebACL
を呼び出すアクセス許可が必要です。
{ "Sid": "AssociateWebACL1", "Effect": "Allow", "Action": [ "wafv2:AssociateWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "AssociateWebACL2", "Effect": "Allow", "Action": [ "ec2:AssociateVerifiedAccessInstanceWebAcl" ], "Resource": [ "arn:aws:ec2:*:account-id
:verified-access-instance/*" ] }
DisassociateWebACL
のアクセス権限
このセクションでは、AWS WAF アクション DisassociateWebACL
を使用してウェブ ACL とリソースの関連付けを解除するために必要なアクセス許可を一覧表示します。
Amazon CloudFront ディストリビューションでは、このアクションの代わりに、空のウェブ ACL ID を持つ CloudFront アクション UpdateDistribution
を使用してください。詳細については、Amazon CloudFront API リファレンスの「UpdateDistribution」を参照してください。
Amazon API Gateway REST API
REST API リソースタイプで API ゲートウェイ SetWebACL
を呼び出すアクセス許可が必要です。AWS WAF DisassociateWebACL
の呼び出しにはアクセス許可は必要ありません。
{ "Sid": "DisassociateWebACL", "Effect": "Allow", "Action": [ "apigateway:SetWebACL" ], "Resource": [ "arn:aws:apigateway:*::/restapis/*/stages/*" ] }
Application Load Balancer
Application Load Balancer リソースタイプで elasticloadbalancing:SetWebACL
アクションを呼び出すアクセス許可が必要です。AWS WAF DisassociateWebACL
の呼び出しにはアクセス許可は必要ありません。
{ "Sid": "DisassociateWebACL", "Effect": "Allow", "Action": [ "elasticloadbalancing:SetWebACL" ], "Resource": [ "arn:aws:elasticloadbalancing:*:
account-id
:loadbalancer/app/*/*" ] }
AWS AppSync GraphQL API
GraphQL API リソースタイプで AWS AppSync SetWebACL
を呼び出すためのアクセス許可が必要です。AWS WAF DisassociateWebACL
の呼び出しにはアクセス許可は必要ありません。
{ "Sid": "DisassociateWebACL", "Effect": "Allow", "Action": [ "appsync:SetWebACL" ], "Resource": [ "arn:aws:appsync:*:
account-id
:apis/*" ] }
Amazon Cognito ユーザープール
ユーザープールリソースタイプで Amazon Cognito DisassociateWebACL
アクションを呼び出し、AWS WAF DisassociateWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "DisassociateWebACL1", "Effect": "Allow", "Action": "wafv2:DisassociateWebACL", "Resource": "*" }, { "Sid": "DisassociateWebACL2", "Effect": "Allow", "Action": [ "cognito-idp:DisassociateWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:
account-id
:userpool/*" ] }
AWS App Runner のサービス
App Runner サービスリソースタイプで App Runner DisassociateWebACL
アクションを呼び出すには、AWS WAF DisassociateWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "DisassociateWebACL1", "Effect": "Allow", "Action": "wafv2:DisassociateWebACL", "Resource": "*" }, { "Sid": "DisassociateWebACL2", "Effect": "Allow", "Action": [ "apprunner:DisassociateWebAcl" ], "Resource": [ "arn:aws:apprunner:*:
account-id
:service/*/*" ] }
AWS Verified Access インスタンス
検証済みアクセス インスタンスのリソース タイプで ec2:DisassociateVerifiedAccessInstanceWebAcl
アクションを呼び出すには、AWS WAF DisassociateWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "DisassociateWebACL1", "Effect": "Allow", "Action": "wafv2:DisassociateWebACL", "Resource": "*" }, { "Sid": "DisassociateWebACL2", "Effect": "Allow", "Action": [ "ec2:DisassociateVerifiedAccessInstanceWebAcl" ], "Resource": [ "arn:aws:ec2:*:
account-id
:verified-access-instance/*" ] }
GetWebACLForResource
のアクセス権限
このセクションでは、AWS WAF アクション GetWebACLForResource
を使用して保護対象リソースのウェブ ACL を取得するために必要なアクセス許可の一覧を示します。
Amazon CloudFront ディストリビューションでは、このアクションの代わりに CloudFront アクション GetDistributionConfig
を使用してください。詳細については、Amazon CloudFront API リファレンスの「GetDistributionConfig」を参照してください。
注記
GetWebACLForResource
によって GetWebACL
を呼び出すにはアクセス許可が必要です。このコンテキストでは、AWS WAF は、GetWebACLForResource
によって返されるウェブ ACL へのアクセスに必要なアクセス許可がアカウントに付与されていることを確認するためだけに GetWebACL
を使用します。GetWebACLForResource
の呼び出しを行うと、アカウントにリソースでに wafv2:GetWebACL
対する実行権限がないことを示すエラーが表示される場合があります。AWS WAF ではこの種のエラーは AWS CloudTrail イベント履歴に追加されません。
Amazon API Gateway REST API、Application Load Balancer、および AWS AppSync GraphQL API
ウェブ ACL の AWS WAF GetWebACLForResource
および GetWebACL
の呼び出しにはアクセス許可が必要です。
{ "Sid": "GetWebACLForResource", "Effect": "Allow", "Action": [ "wafv2:GetWebACLForResource", "wafv2:GetWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }
Amazon Cognito ユーザープール
ユーザープールリソースタイプで Amazon Cognito GetWebACLForResource
アクションを呼び出し、AWS WAF、GetWebACLForResource
および GetWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "GetWebACLForResource1", "Effect": "Allow", "Action": [ "wafv2:GetWebACLForResource", "wafv2:GetWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "GetWebACLForResource2", "Effect": "Allow", "Action": [ "cognito-idp:GetWebACLForResource" ], "Resource": [ "arn:aws:cognito-idp:*:account-id
:userpool/*" ] }
AWS App Runner のサービス
App Runner サービスリソースタイプで App Runner DescribeWebAclForService
アクションを呼び出すには、AWS WAF、GetWebACLForResource
および GetWebACL
を呼び出すアクセス許可が必要です。
{ "Sid": "GetWebACLForResource1", "Effect": "Allow", "Action": [ "wafv2:GetWebACLForResource", "wafv2:GetWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "GetWebACLForResource2", "Effect": "Allow", "Action": [ "apprunner:DescribeWebAclForService" ], "Resource": [ "arn:aws:apprunner:*:account-id
:service/*/*" ] }
AWS Verified Access インスタンス
Verified Access インスタンスリソースタイプで ec2:GetVerifiedAccessInstanceWebAcl
アクションを呼び出すには、AWS WAF、GetWebACLForResource
および GetWebACL
を呼び出すアクセス許可が必要です。
{ "Sid": "GetWebACLForResource1", "Effect": "Allow", "Action": [ "wafv2:GetWebACLForResource", "wafv2:GetWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "GetWebACLForResource2", "Effect": "Allow", "Action": [ "ec2:GetVerifiedAccessInstanceWebAcl" ], "Resource": [ "arn:aws:ec2:*:account-id
:verified-access-instance/*" ] }
ListResourcesForWebACL
のアクセス権限
このセクションには、AWS WAF アクション ListResourcesForWebACL
を使用してウェブ ACL の保護対象リソースのリストを取得するために必要なアクセス許可の一覧が記載されています。
Amazon CloudFront ディストリビューションでは、このアクションの代わりに CloudFront アクション ListDistributionsByWebACLId
を使用してください。詳細については、Amazon CloudFront API リファレンスの「ListDistributionsByWebACLId」を参照してください。
Amazon API Gateway REST API、Application Load Balancer、および AWS AppSync GraphQL API
ウェブ ACL に対して AWS WAF ListResourcesForWebACL
を呼び出すにはアクセス許可が必要です。
{ "Sid": "ListResourcesForWebACL", "Effect": "Allow", "Action": [ "wafv2:ListResourcesForWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }
Amazon Cognito ユーザープール
ユーザープールリソースタイプで Amazon Cognito ListResourcesForWebACL
アクションを呼び出し、AWS WAF ListResourcesForWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "ListResourcesForWebACL1", "Effect": "Allow", "Action": [ "wafv2:ListResourcesForWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "ListResourcesForWebACL2", "Effect": "Allow", "Action": [ "cognito-idp:ListResourcesForWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:account-id
:userpool/*" ] }
AWS App Runner のサービス
App Runner サービスリソースタイプで App Runner ListAssociatedServicesForWebAcl
アクションを呼び出すには、AWS WAF ListResourcesForWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "ListResourcesForWebACL1", "Effect": "Allow", "Action": [ "wafv2:ListResourcesForWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "ListResourcesForWebACL2", "Effect": "Allow", "Action": [ "apprunner:ListAssociatedServicesForWebAcl" ], "Resource": [ "arn:aws:apprunner:*:account-id
:service/*/*" ] }
AWS Verified Access インスタンス
検証済みアクセス インスタンスのリソース タイプで ec2:DescribeVerifiedAccessInstanceWebAclAssociations
アクションを呼び出すには、AWS WAF ListResourcesForWebACL
を呼び出すためのアクセス許可が必要です。
{ "Sid": "ListResourcesForWebACL1", "Effect": "Allow", "Action": [ "wafv2:ListResourcesForWebACL" ], "Resource": [ "arn:aws:wafv2:
region
:account-id
:regional/webacl/*/*" ] }, { "Sid": "ListResourcesForWebACL2", "Effect": "Allow", "Action": [ "ec2:DescribeVerifiedAccessInstanceWebAclAssociations" ], "Resource": [ "arn:aws:ec2:*:account-id
:verified-access-instance/*" ] }
AWS WAF のポリシーリソース
ポリシーリソースのサポート: あり
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースにどのような条件でアクションを実行できるかということです。
Resource
JSON ポリシー要素は、アクションが適用されるオブジェクトを指定します。ステートメントには、Resource
または NotResource
要素を含める必要があります。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。これは、リソースレベルの許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。
オペレーションのリスト化など、リソースレベルの権限をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。
"Resource": "*"
AWS WAF リソースタイプおよびその ARN のリストを確認するには、「サービス認可リファレンス」で「AWS WAF V2 で定義されるリソース」を参照してください。どのアクションに各リソースの ARN を指定できるかについては、「AWS WAF V2 で定義されるアクション」を参照してください。AWS WAF リソースのサブセットへのアクセスを許可または拒否するには、ポリシーの resource
要素にリソースの ARN を含めます。
AWS WAF wafv2
リソースの ARN には、次の形式があります。
arn:
partition
:wafv2:region
:account-id
:scope
/resource-type
/resource-name
/resource-id
ARN の仕様に関する一般情報については、「Amazon Web Services 全般のリファレンス」の「Amazon リソースネーム (ARN)」を参照してください。
wafv2
リソースの ARN に固有の要件は以下の通りです。
-
リージョン
: Amazon CloudFront ディストリビューションを保護するために使用する AWS WAF リソースについては、これをus-east-1
に設定します。それ以外の場合は、保護されたリージョンリソースで使用している領域を設定します。 -
scope
: Amazon CloudFront ディストリビューションで使用するためのglobal
、または AWS WAF がサポートするリージョンリソースで使用するためのregional
に、スコープを設定します。リージョンリソースは、Amazon API Gateway REST API、Application Load Balancer、AWS AppSync GraphQL API、Amazon Cognito ユーザープール、AWS App Runner サービス、および AWS Verified Access インスタンスとすることができます。 -
リソースタイプ
: 次の値のいずれかを指定します。webacl
、rulegroup
、ipset
、regexpatternset
、managedruleset
。 -
resource-name
: AWS WAF リソースに付けた名前を指定、あるいは ARN の他の仕様を満たすすべてのリソースを示すワイルドカード (*
) を指定します。リソース名とリソース ID のどちらかを指定するか、両方にワイルドカードを指定する必要があります。 -
resource-id
: AWS WAF リソースの ID を指定、あるいは ARN の他の仕様を満たすすべてのリソースを示すワイルドカード (*
) を指定します。リソース名とリソース ID のどちらかを指定するか、両方にワイルドカードを指定する必要があります。
例えば、次の ARN は、リージョン us-west-1
におけるアカウント 111122223333
のリージョンレベルの範囲のすべてのウェブ ACL を指定します。
arn:aws:wafv2:us-west-1:111122223333:regional/webacl/*/*
次の ARN は、リージョン us-east-1
のアカウント 111122223333
に対して、グローバルスコープを持つ MyIPManagementRuleGroup
というルールグループを指定します。
arn:aws:wafv2:us-east-1:111122223333:global/rulegroup/MyIPManagementRuleGroup/1111aaaa-bbbb-cccc-dddd-example-id
AWS WAF アイデンティティベースのポリシーの例を表示するには、「AWS WAF のアイデンティティベースのポリシーの例」を参照してください。
AWS WAF 向けのポリシー条件キー
サービス固有のポリシー条件キーのサポート: あり
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件でアクションを実行できるかということです。
Condition
要素 (または Condition
ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition
要素はオプションです。イコールや未満などの 条件演算子 を使用して条件式を作成することで、ポリシーの条件とリクエスト内の値を一致させることができます。
1 つのステートメントに複数の Condition
要素を指定する場合、または 1 つの Condition
要素に複数のキーを指定する場合、AWSでは AND
論理演算子を使用してそれらを評価します。単一の条件キーに複数の値を指定する場合、AWS では OR
論理演算子を使用して条件を評価します。ステートメントの権限が付与される前にすべての条件が満たされる必要があります。
条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる権限を付与することができます。詳細については、IAM ユーザーガイドのIAM ポリシーの要素: 変数およびタグを参照してください。
AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイド の「AWS グローバル条件コンテキストキー」を参照してください。
AWS WAF は、以下のサービス固有の条件キーをサポートしており、IAM ポリシーのきめ細かいフィルタリングの提供に使用することができます。
-
wafv2:LogDestinationResource
この条件キーは、ログ記録の送信先の Amazon リソースネーム (ARN) 仕様を取得します。これは、REST API コール
PutLoggingConfiguration
を使用する際に、ログ送信先として指定する ARN です。ARN を明示的に指定し、ARN のフィルタリングを指定できます。次の例では、特定の位置とプレフィックスを持つ Amazon S3 バケット ARN のフィルタリングを指定します。
"Condition": { "ArnLike": { "wafv2:LogDestinationResource": "arn:aws:s3:::aws-waf-logs-suffix/custom-prefix/*" } }
-
wafv2:LogScope
この条件キーは、文字列内のログ記録設定のソースを定義します。現在、これは常に のデフォルトに設定されています。これは
Customer
、ログ記録の送信先がユーザーによって所有および管理されていることを示します。
AWS WAF 条件キーのリストを確認するには、「サービス認可リファレンス」で「AWS WAF V2 の条件キー」を参照してください。どのアクションおよびリソースで条件キーを使用できるかについては、「AWS WAF V2 で定義されるアクション」を参照してください。
AWS WAF アイデンティティベースのポリシーの例を表示するには、「AWS WAF のアイデンティティベースのポリシーの例」を参照してください。
AWS WAF の ACL
ACL のサポート: なし
アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。
AWS WAF を備えた ABAC
ABAC (ポリシー内のタグ) のサポート: 一部
属性ベースのアクセス制御 (ABAC) は、属性に基づいてアクセス許可を定義する認可戦略です。AWS では、属性は タグ と呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール)、および多数の AWS リソースにアタッチできます。エンティティとリソースのタグ付けは、ABAC の最初の手順です。その後、プリンシパルのタグがアクセスしようとしているリソースのタグと一致した場合にオペレーションを許可するように ABAC ポリシーをします。
ABAC は、急成長する環境やポリシー管理が煩雑になる状況で役立ちます。
タグに基づいてアクセスを管理するには、aws:ResourceTag/
、key-name
aws:RequestTag/
、または key-name
aws:TagKeys
の条件キーを使用して、ポリシーの 条件要素でタグ情報を提供します。
サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値はありです。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「部分的」になります。
ABAC の詳細については、「IAM ユーザーガイド」の「ABAC 認証によるアクセス許可の定義」を参照してください。ABAC をセットアップするステップを説明するチュートリアルについては、IAM ユーザーガイドの属性に基づくアクセスコントロール (ABAC) を使用するを参照してください。
AWS WAF での一時的な認証情報の使用
一時的な認証情報のサポート: あり
AWS のサービス には、一時的な認証情報を使用してサインインしても機能しないものがあります。一時的な認証情報を利用できる AWS のサービス を含めた詳細情報については、「IAM ユーザーガイド」の「IAM と連携する」AWS のサービスを参照してください。
ユーザー名とパスワード以外の方法で AWS Management Console にサインインする場合は、一時的な認証情報を使用していることになります。例えば、会社のシングルサインオン (SSO) リンクを使用して AWS にアクセスすると、そのプロセスは自動的に一時認証情報を作成します。また、ユーザーとしてコンソールにサインインしてからロールを切り替える場合も、一時的な認証情報が自動的に作成されます。ロールの切り替えに関する詳細については、「IAM ユーザーガイド」の「ユーザーから IAM ロールへの切り替え (コンソール)」を参照してください。
一時認証情報は、AWS CLIまたは AWS API を使用して手動で作成できます。作成後、一時認証情報を使用して AWS にアクセスできるようになります。AWSは、長期的なアクセスキーを使用する代わりに、一時認証情報を動的に生成することをお勧めします。詳細については、IAM の一時的セキュリティ認証情報を参照してください。
サービス AWS WAF の転送アクセスセッション
転送アクセスセッション (FAS) のサポート: あり
IAM ユーザーまたはロールを使用して AWS でアクションを実行するユーザーは、プリンシパルとみなされます。一部のサービスを使用する際に、アクションを実行してから、別のサービスの別のアクションを開始することがあります。FAS は、AWS のサービスを呼び出すプリンシパルの権限を、AWS のサービスのリクエストと合わせて使用し、ダウンストリームのサービスに対してリクエストを行います。FAS リクエストは、サービスが、完了するために他の AWS のサービス またはリソースとのやりとりを必要とするリクエストを受け取ったときにのみ行われます。この場合、両方のアクションを実行するためのアクセス許可が必要です。FASリクエストを行う際のポリシーの詳細については、「転送アクセスセッション」を参照してください。
AWS WAF のサービスロール
サービスロールのサポート: あり
サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイドのAWS のサービス にアクセス許可を委任するロールの作成を参照してください。
警告
サービスロールのアクセス許可を変更すると、AWS WAF の機能が破損する可能性があります。AWS WAF が指示する場合以外は、サービスロールを編集しないでください。
AWS WAF のサービスリンクロール
サービスリンクロールのサポート: あり
サービスにリンクされたロールは、AWS のサービスにリンクされているサービスロールの一種です。サービスがロールを引き受け、ユーザーに代わってアクションを実行できるようになります。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールのアクセス許可を表示できますが、編集することはできません。
AWS WAF サービスにリンクされたロールの作成または管理の詳細については、「AWS WAF のサービスにリンクされたロールの使用」を参照してください。