使用基于身份的策略(IAM 策略)Amazon WAF - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用基于身份的策略(IAM 策略)Amazon WAF

此部分提供了基于身份的策略的示例,这些示例展示了账户管理员如何将权限策略附加到 IAM 身份(即用户、组和角色),从而授予对 Amazon WAF 资源执行操作的权限。

重要

我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 Amazon WAF 资源访问的基本概念和选项。有关更多信息,请参阅管理 Amazon WAF 资源的访问权限的概述

下面显示了一个示例权限策略:

{ "Version": "2019-07-29", "Statement": [ { "Sid": "CreateFunctionPermissions", "Effect": "Allow", "Action": [ "wafv2:ListWebACLs", "wafv2:GetWebACL", "cloudwatch:ListMetrics", "wafv2:GetSampledRequests" ], "Resource": "*" }, { "Sid": "PermissionToPassAnyRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/*" } ] }

该策略包含两条语句:

  • 第一条语句使用 wafv2:ListWebACLswafv2:GetWebACLcloudwatch:ListMetricswafv2:GetSampledRequests 操作授予查看 Amazon WAF Web ACL 的统计数据的权限。对于这些操作中的某些操作,Amazon WAF 不支持资源级别的权限。因此,该策略指定通配符 (*) 作为 Resource 值。

  • 第二条语句授予 IAM 操作的权限iam:PassRole在 IAM 角色上。结尾处的通配符 (*)Resource值意味着该语句允许iam:PassRole对任何 IAM 角色执行操作。要仅仅将这些权限扩展到特定角色,请使用特定角色名称替换资源 ARN 中的通配符 (*)。

该策略没有指定 Principal 元素,因为在基于身份的策略中,您不会指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后,该角色的信任策略中标识的委托人将获取权限。

有关显示所有 Amazon WAF API 操作及其适用的资源的表,请参阅 Amazon WAFAPI 权限:操作、资源和条件参考

Topics

使用 Amazon WAF 控制台所需的权限

Amazon WAF 控制台为您提供了一个创建和管理 Amazon WAF 资源的集成环境。此控制台提供了许多功能和工作流程,它们通常需要创建 Amazon WAF 资源的权限以及 Amazon WAFAPI 权限:操作、资源和条件参考中所述特定于 API 的权限。有关这些附加控制台权限的更多信息,请参阅客户管理的策略示例

适用于 Amazon WAF 的 Amazon 托管(预定义)策略

Amazon通过提供由创建和管理的独立 IAM 策略来满足许多常用案例的要求。Amazon托管策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 IAM 用户指南中的 Amazon 托管策略

以下 Amazon 托管策略(可附加到您账户中的用户)特定于 Amazon WAF:

  • AWSWAFReadOnlyAccess— 授予对的只读访问权限Amazon WAF资源的费用。

  • AWSWAFFullAccess— 授予对的完全访问权限Amazon WAF资源的费用。

  • AWSWAFConsoleReadOnlyAccess— 授予对的只读访问权限Amazon WAF控制台,其中包括Amazon WAF和集成服务,例如 Amazon CloudFront、Amazon API Gateway、ApApplication Load Balancer 和Amazon AppSync.

  • AWSWAFConsoleFullAccess— 授予对Amazon WAF控制台,其中包括Amazon WAF和集成服务,例如 Amazon CloudFront、Amazon API Gateway、ApApplication Load Balancer 和Amazon AppSync.

注意

您可以通过登录到 IAM 控制台并在该控制台中搜索特定策略来查看这些权限策略。

您还可以创建自己的自定义 IAM 策略,以授予对Amazon WAFAPI 操作和资源。您可以将这些自定义策略附加到需要上述权限的 IAM 用户和组或您为Amazon WAF资源的费用。

客户管理的策略示例

此部分中的示例提供了一组可附加到用户的示例策略。如果您是首次创建策略,建议您先在账户中创建 IAM 用户,并按本节操作步骤所述顺序将策略附加到该用户。

在将每个策略附加到用户时,可使用控制台验证该策略的效果。最初,用户没有权限并且无法在控制台中执行任何操作。在将策略附加到用户时,可以验证用户是否能在控制台中执行各种操作。

建议您使用两个浏览器窗口:一个浏览器窗口用于创建用户和授予权限,另一个浏览器窗口用于使用用户凭证登录 Amazon Web Services Management Console,并在向用户授予权限时验证这些权限。

有关说明如何创建可用作您的执行角色的 IAM 角色的示例。Amazon WAF资源,请参阅创建 IAM 角色中的IAM 用户指南.

示例主题

创建 IAM 用户

首先,您需要创建一个 IAM 用户,将该用户添加到具有管理权限的 IAM 组,然后向您创建的 IAM 用户授予管理权限。随后,您可以使用专用 URL 和该用户的凭证访问 Amazon。

有关说明,请参阅创建您的第一个 IAM 用户和管理员组中的IAM 用户指南.

示例 1:授予用户对的只读访问权限Amazon WAF、CloudFront 和 CloudWatch

以下策略将向用户授予对的只读访问权限Amazon WAF资源、Amazon CloudFront 网络分配以及 Amazon CloudWatch 指标。它对需要权限才能查看Amazon WAF条件、规则和 Web ACL,了解与 Web ACL 关联的分发以及在 CloudWatch 中监控指标和请求示例。这些用户无法创建、更新或删除 Amazon 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": "*" } ] }

示例 2:授予用户完全访问Amazon WAF、CloudFront 和 CloudWatch

以下策略可让用户执行任何Amazon WAF操作、对 CloudFront Web 分配执行任何操作以及在 CloudWatch 中监控指标和请求示例。它对作为 Amazon 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": "*" } ] }

强烈建议您为拥有管理权限的用户配置 Multi-Factor Authentication (MFA)。有关更多信息,请参阅 。将 Multi-Factor Authentication (MFA) 设备与Amazon中的IAM 用户指南.

示例 3:授予对的访问权限Amazon Web Services 账户

此策略向账户 444455556666 授予以下权限:

  • 对所有 Amazon WAF 操作和资源的完全访问权限。

  • 对所有 CloudFront 分配的读取和更新访问权限,这使您可以关联 Web ACL 和 CloudFront 分配。

  • 对所有 CloudWatch 指标和指标统计数据的读取访问权限,以便您可以在Amazon WAF控制台。

{ "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": [ "*" ] } ] }

示例 4:授予对指定 Web ACL 的访问权限

此策略向账户 444455556666 中的 webacl ID 112233d7c-86b2-458b-af83-51c51example 授予以下权限:

  • 对 Amazon WAF GetUpdateDelete 操作和资源的完全访问权限

{ "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" ] } ] }