如何配置IAM策略,仅允许用户操作Route 53特定子域名的记录?
当然可以实现这种细粒度的权限控制!
这种需求完全可以通过AWS IAM策略来实现,核心思路是允许用户仅在指定子域名范围内执行创建记录的操作,同时默认拒绝所有其他Route 53相关操作。下面是具体的实现方案:
具体IAM策略示例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/你的托管区ID", "Condition": { "StringLike": { "route53:ResourceRecordSets": "*.data.example.com." }, "StringEquals": { "route53:ChangeAction": "CREATE" } } }, { "Effect": "Allow", "Action": [ "route53:ListHostedZones", "route53:GetHostedZone" ], "Resource": "*" } ] }
关键细节说明
- 替换托管区ID:把策略中的
你的托管区ID替换为你实际托管example.com的Route 53托管区ID(可以在Route 53控制台的托管区详情页找到)。 - 域名后缀的
.不能省略:Route 53使用完全限定域名(FQDN),所以必须加上末尾的点,否则会自动补全托管区根域名,导致匹配逻辑出错。 - 仅允许创建操作:通过
route53:ChangeAction条件限定为CREATE,确保用户只能创建新记录,无法修改或删除该子域名下的现有记录。如果需要允许修改,可以去掉这个条件,或者添加UPSERT到允许的动作值里。 - 基础权限补充:第二个Statement允许用户列出和查看托管区,这是为了让用户能在控制台中找到对应的托管区进行操作;如果用户仅通过CLI/API操作,这部分可以根据需求调整或移除。
权限验证建议
配置完策略后,你可以通过以下步骤验证:
- 使用该IAM用户的凭据登录控制台,尝试在
data.example.com下创建一条CNAME记录(比如server1.data.example.com),应该能成功。 - 尝试创建
example.com根域名下的记录,或者修改/删除data.example.com下的现有记录,应该会收到权限拒绝的提示。
内容的提问来源于stack exchange,提问作者lfk
相关产品推荐
相关产品推荐

