假设文档,我应该使用策略,如下所示:
{
"Version": "2017-11-27",
"Statement":[
{
"Effect":"Allow",
"Action": [
"route53:ChangeResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/<ZONE_ID>"
]
]
}
我需要一个非常安全的政策。
我无法在 arn.xml 中添加特定的资源记录集(区域中的一条记录)。
我可以使用
Condition
使用 ChangeResourceRecordSets
检查应该更改的记录API 调用。如果我没错的话。这对于仅自动更新公共(public)域区域中的一条记录是必要的。更新
_acme-challenge.ldap.example.com.
记录自动更新让我们加密证书。我知道acme.sh
可以实现我的目标。但我想编写自己的自定义和简单的脚本来做到这一点。
最佳答案
I can use Condition to check what record should be changed with ChangeResourceRecordSets API call. If I'm not mistaken.
我相信你可能弄错了。
Amazon Route 53 has no service-specific [condition] context keys that can be used in an IAM policy.
http://docs.aws.amazon.com/IAM/latest/UserGuide/list_route53.html
此外,没有一个 global condition keys似乎适用。
但是,我相信有一个解决方法。
为域
_acme-challenge.ldap.example.com
创建第二个公共(public)托管区域.我知道您可能在想“但这不是域!”但在相关意义上,它实际上仍然是一个域。Route 53 将为这个新的托管区域分配 4 个新的名称服务器。记下这些服务器。
回到原来的托管区域,为
_acme-challenge.ldap.example.com
创建一条记录类型 NS
.您将用于创建此记录的值将是 Route 53 分配给新托管区域的 4 个名称服务器,每行一个。不要更改任何一个区域中的任何现有 NS 记录。这称为委托(delegate)——您将此特定子域的权限委托(delegate)给不同的托管区域,您会注意到自动分配了一组与处理您的父域的 Route 53 服务器完全不同的 4 台 Route 53 服务器。
您现在可以在新托管区域的根目录中创建一条新记录,并且当您对
_acme-challenge.ldap.example.com
进行 DNS 查询时,返回的答案将是来自新托管区域的答案。现在,您可以只授予脚本修改新区域中的记录的权限,并且它将无法修改父区域中的任何内容,因为您在那里没有授予它任何权限。
关于amazon-web-services - AWS 政策 : Allow update specific record in route53 hosted zone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47527575/