允许IAM仅访问Route 53上的特定子域

时间:2018-05-30 00:33:31

标签: amazon-web-services dns amazon-iam amazon-route53

我需要授予IAM用户Route 53访问权限,以便在子域名下创建记录,比如export default class Login extends React.Component { constructor(props) { super(props); this.state = { email: ``, password: ``, isLoggedIn: false }; } handleSubmit(event) { event.preventDefault() handleLogin(this.state) .then(response => this.setState({isLoggedIn: isLoggedIn()})) .catch(err => // Handle the error here, or just swallow it) } render() { if (this.state.isLoggedIn) { return <Redirect to={{ pathname: `/app/profile` }} /> } return ( <View title="Log In"> <Form handleUpdate={e => this.handleUpdate(e)} handleSubmit={e => this.handleSubmit(e)} /> </View> ) } } 。例如,用户应该能够为data.example.com创建CNAME。同时,我不希望用户能够添加/修改/删除server1.data.example.com以外的任何记录。

是否有可能编写一份这样做的政策?

2 个答案:

答案 0 :(得分:5)

您可以按托管区域限制,但不能通过子域限制。如果您要限制特定的子域,则Route53托管区域应按子域拆分。你可以create a hosted zone for a subdomain

例如,如果您想要一个名为test的子域名,您可以按照here的答案进行总结:

  

为test.example.com创建托管区域。

     

请注意Route 53为其分配新托管的4个名称服务器   区。

     

返回主区域,使用主机名创建新资源记录   &#34;测试&#34;使用记录类型NS,并输入Route的4个名称服务器   53分配,在下面的框中。

以上委托将该子域控制到这个新的托管区域,该区域具有我们可以在IAM策略中使用的唯一区域ID

然后,您可以构建一个限制对此区域的操作的IAM策略:

{
   "Statement":[
      {
         "Action":[
            "route53:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:route53:::hostedzone/<The new zone ID>"
         ]
      },
      {
         "Action":[
            "route53:ListHostedZones"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}

从这里,您可以调整此政策,以适应您希望用户能够在此区域内进行的操作。

答案 1 :(得分:0)

来自AWS Documentation

在策略中,您可以使用*为ARN授予或拒绝访问以下资源:

  • 健康检查
  • 托管区域
  • 可重复使用的委派
  • 资源记录集更改批次的状态(仅限API)
  • 交通政策(交通流量)
  • 流量策略实例(流量)

并非所有Route 53资源都支持权限。您无法授予或拒绝访问以下资源:

  • 个人记录
  • 命名空间(服务发现)
  • 服务(服务发现)
  • 域名标签
  • 健康检查标签
  • 托管区域的标签

它基本上意味着IAM最好的颗粒控制是单独的托管区域(DNS区域文件)。

您可以按照此AWS Guide

为特定子域创建托管区域