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

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

为 Amazon Route 53 使用基于身份的策略(IAM 策略)

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

重要

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

下面显示了一个示例权限策略。Sid 或语句 ID 是可选的:

{ "Version": "2012-10-17", "Statement": [ { "Sid" : "AllowPublicHostedZonePermissions", "Effect": "Allow", "Action": [ "route53:CreateHostedZone", "route53:UpdateHostedZoneComment", "route53:GetHostedZone", "route53:ListHostedZones", "route53:DeleteHostedZone", "route53:ChangeResourceRecordSets", "route53:ListResourceRecordSets", "route53:GetHostedZoneCount", "route53:ListHostedZonesByName" ], "Resource": "*" }, { "Sid" : "AllowHealthCheckPermissions", "Effect": "Allow", "Action": [ "route53:CreateHealthCheck", "route53:UpdateHealthCheck", "route53:GetHealthCheck", "route53:ListHealthChecks", "route53:DeleteHealthCheck", "route53:GetCheckerIpRanges", "route53:GetHealthCheckCount", "route53:GetHealthCheckStatus", "route53:GetHealthCheckLastFailureReason" ], "Resource": "*" } ] }

该策略包含两条语句:

  • 第一条语句授予创建和管理公有托管区域及其记录所需的操作的权限。Amazon 资源名称 (ARN) 中的通配符 (*) 授予对当前Amazonaccount.

  • 第二条语句授予创建和管理运行状况检查所需的全部操作的权限。

有关您为授予或拒绝使用每项操作的权限而指定的操作和 ARN 的列表,请参阅Amazon Route 53 API 权限:操作、资源和条件参考

使用 Amazon Route 53 控制台所需的权限

要授予对 Amazon Route 53 控制台的完全访问权,您可以在以下权限策略中授予权限:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53:*", "route53domains:*", "cloudfront:ListDistributions", "elasticloadbalancing:DescribeLoadBalancers", "elasticbeanstalk:DescribeEnvironments", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:GetBucketWebsite", "ec2:DescribeRegions", "ec2:DescribeVpcs", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:ModifyNetworkInterfaceAttribute", "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:CreateTopic", "kms:ListAliases", "kms:DescribeKey", "kms:CreateKey", "kms:CreateAlias", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:GetMetricStatistics" ], "Resource":"*" }, { "Effect": "Allow", "Action": "apigateway:GET", "Resource": "arn:aws:apigateway:*::/domainnames" } ] }

下面是需要权限的原因:

route53:*

可让您执行所有 Route 53 操作除了以下权限:

  • 创建和更新值为别名目标是 CloudFront 分发、弹性负载均衡器、Elastic Beanstalk 环境或 Amazon S3 存储桶。(通过这些权限,您可以创建其别名目标值为同一托管区域中的另一个记录的别名记录。)

  • 使用私有托管区域。

  • 使用域。

  • 创建、删除和查看 CloudWatch 警报。

  • Route 53 控制台中的 CloudWatch 指标。

route53domains:*

允许您使用域。

重要

如果您单独列出 route53 操作,则必须包含 route53:CreateHostedZone 才能使用域。注册域时,会同时创建一个托管区域,因此包括注册域权限的策略还需要创建托管区域的权限。

对于域注册,Route 53 不支持向单个资源授予或拒绝权限。

route53resolver:*

允许您使用 Route 53 Resolver。

cloudfront:ListDistributions

允许您创建和更新别名记录,值为别名目标是 CloudFront 分配。

如果您未使用 Route 53 控制台,则不需要这些权限。Route 53 仅用它来获取要在控制台中显示的分配的列表。

elasticloadbalancing:DescribeLoadBalancers

您可以创建和更新别名目标值为 ELB 负载均衡器的别名记录。

如果您未使用 Route 53 控制台,则不需要这些权限。Route 53 仅用它来获取要在控制台中显示的负载均衡器的列表。

elasticbeanstalk:DescribeEnvironments

允许您创建和更新别名记录,值为别名目标是 Elastic Beanstalk 环境。

如果您未使用 Route 53 控制台,则不需要这些权限。Route 53 仅用它来获取要在控制台中显示的环境的列表。

s3:ListAllMyBucketss3:GetBucketLocations3:GetBucketWebsite

允许您创建和更新值为别名目标是 Amazon S3 存储桶。(只有将存储桶配置为网站终端节点时,才可以创建 Amazon S3 存储桶的别名;s3:GetBucketWebsite获取所需的配置信息。)

如果您未使用 Route 53 控制台,则不需要这些权限。Route 53 仅用它来获取要在控制台中显示的存储桶的列表。

ec2:DescribeVpcsec2:DescribeRegions

允许您使用私有托管区域。

所有列出的 ec2 权限

允许您使用 Route 53 Resolver。

sns:ListTopics, sns:ListSubscriptionsByTopic, sns:CreateTopic, cloudwatch:DescribeAlarms, cloudwatch:PutMetricAlarm, cloudwatch:DeleteAlarms

允许您创建、删除和查看 CloudWatch 警报。

cloudwatch:GetMetricStatistics

您可以创建 CloudWatch 指标的运行状况检查。

如果您未使用 Route 53 控制台,则不需要这些权限。Route 53 仅用它来获取要在控制台中显示的统计信息。

apigateway:GET

允许您创建和更新别名记录,值为别名目标是 Amazon API Gateway API。

如果您未使用 Route 53 控制台,则不需要此权限。Route 53 仅用它来获取要在控制台中显示的 API 的列表。

kms:*

允许您使用Amazon KMS以启用 DNSSEC 签名。

域记录所有者的权限示例

在某些情况下,托管区域所有者可能负责托管区域的整体管理,而组织中的另一个人负责这些任务的子集。例如,已启用 DNSSEC 签名的托管区域所有者可能希望创建一个 IAM 策略,其中包括其他人在托管区域中添加和删除资源集记录 (RR) 的权限。托管区域所有者选择为记录所有者或其他人员启用的特定权限将取决于其组织的策略。

以下是允许记录所有者修改 RR、流量策略和运行状况检查的示例 IAM 策略。不允许使用此策略的记录所有者执行区域级操作,例如创建或删除区域、启用或禁用查询日志记录、创建或删除可重用的委派集或更改 DNSSEC 设置。

{ "Sid": "Do not allow zone-level modification ", "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets", "route53:CreateTrafficPolicy", "route53:DeleteTrafficPolicy", "route53:CreateTrafficPolicyInstance", "route53:CreateTrafficPolicyVersion", "route53:UpdateTrafficPolicyInstance", "route53:UpdateTrafficPolicyComment", "route53:DeleteTrafficPolicyInstance", "route53:CreateHealthCheck", "route53:UpdateHealthCheck", "route53:DeleteHealthCheck", "route53:List*", "route53:Get*" ], "Resource": [ "*" ] }

DNSSEC 签名所需的 Route 53 CMK 权限

当您为 Route 53 启用 DNSSEC 签名时,路由 53 会根据客户管理的客户主密钥 (CMK) 创建密钥签名密钥 (KSK)Amazon Key Management Service(Amazon KMS)。您可以使用支持 DNSSEC 签名的现有客户管理的 CMK 或创建一个新的 CMK。Route 53 必须有权访问您的 CMK,以便它可以为您创建 KSK。

若要启用 Route 53 访问您的 CMK,请确保您的 CMK 策略包含以下语句:

{ "Sid": "Allow Route 53 DNSSEC Service", "Effect": "Allow", "Principal": { "Service": "dnssec-route53.amazonaws.com" }, "Action": ["kms:DescribeKey", "kms:GetPublicKey", "kms:Sign"], "Resource": "*" }, { "Sid": "Allow Route 53 DNSSEC to CreateGrant", "Effect": "Allow", "Principal": { "Service": "dnssec-route53.amazonaws.com" }, "Action": ["kms:CreateGrant"], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

客户管理的策略示例

您可以创建自定义 IAM 策略,以授予对 Route 53 操作的相关权限。您可以将这些自定义策略附加到需要指定权限的 IAM 用户或组。当您使用 Route 53 API 时,可以使用这些策略。Amazon软件开发工具包或AmazonCLI。以下示例显示了几个常见使用情形的权限。有关向用户授予对 Route 53 的完全访问权限的策略,请参阅使用 Amazon Route 53 控制台所需的权限.

示例 1:允许对所有托管区域进行读取访问

以下权限策略向用户授予列出所有托管区域并查看某一托管区域中的所有记录的权限。

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53:GetHostedZone", "route53:ListResourceRecordSets" ], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:ListHostedZones"], "Resource":"*" } ] }

示例 2:允许创建和删除托管区域

以下权限策略允许用户创建和删除托管区域并跟踪更改进度。

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":["route53:CreateHostedZone"], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:DeleteHostedZone"], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:GetChange"], "Resource":"*" } ] }

示例 3:允许完全访问所有域(仅限于公有托管区域)

以下权限策略允许用户执行与域注册有关的所有操作,包括注册域和创建托管区域的权限。

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53domains:*", "route53:CreateHostedZone" ], "Resource":"*" } ] }

注册域时,会同时创建一个托管区域,因此包括注册域权限的策略还需要创建托管区域的权限。(对于域注册,Route 53 不支持向单个资源授予权限。)

有关使用私有托管区域所需权限的信息,请参阅使用 Amazon Route 53 控制台所需的权限

示例 4:允许创建入站和出站 Route 53 Resolver 终端节点

以下权限策略允许用户使用 Route 53 控制台创建解析程序入站和出站终端节点。

其中一些权限仅当在控制台中创建终端节点时才需要。如果您希望仅授予以编程方式创建入站和出站终端节点的权限,则可以省略上面这些权限:

  • route53resolver:ListResolverEndpoints 允许用户查看入站或出站终端节点列表,以便他们验证终端节点是否已创建。

  • 显示可用区列表时需要 DescribeAvailabilityZones

  • 显示 VPC 列表时需要 DescribeVpcs

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "route53resolver:CreateResolverEndpoint", "route53resolver:ListResolverEndpoints", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DescribeAvailabilityZones", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": "*" } ] }