我需要授予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
以外的任何记录。
是否有可能编写一份这样做的政策?
答案 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
{
"Statement":[
{
"Action":[
"route53:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:route53:::hostedzone/<The new zone ID>"
]
},
{
"Action":[
"route53:ListHostedZones"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
从这里,您可以调整此政策,以适应您希望用户能够在此区域内进行的操作。
答案 1 :(得分:0)
在策略中,您可以使用*为ARN授予或拒绝访问以下资源:
并非所有Route 53资源都支持权限。您无法授予或拒绝访问以下资源:
它基本上意味着IAM最好的颗粒控制是单独的托管区域(DNS区域文件)。
您可以按照此AWS Guide
为特定子域创建托管区域