如何使用 CloudFormation 配置 AWS ElasticSearch 访问策略?

gen*_*ood 6 amazon-web-services amazon-cloudformation amazon-iam

关于 ElasticSearch 访问控制AWS 文档讨论了如何通过创建 ES 域资源策略并将资源设置为 ES 域 ARN 后跟/*. 对于例如

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:user/test-user"
        ]
      },
      "Action": [
        "es:*"
      ],
      "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,test-user被授予对 ES 域子资源执行操作的权限,但不授予对 ES 域配置本身执行操作的权限。

当供应的使用CloudFormation AWS ES域,可以设置与所述资源策略AccessPolicies财产。AWS::Elasticsearch::DomainAccessPolicy不幸的是,没有 CloudFormation 资源,似乎在 ES 域上设置资源策略的唯一方法是使用此属性。

如果现在有办法知道要在现场使用的 ES 域 ARN,那么如何利用访问控制文档中推荐的策略类型Resource,因为在访问策略所在的位置尚未创建 ES 域定义?

我已经尝试DomainArn在访问策略的资源字段中引用ES 域的属性,但可以理解的是,这不起作用,因为它创建了循环依赖。

到目前为止,我想到的唯一解决方案是等到 AWS 更新 CloudFormation 以包含AWS::Elasticsearch::DomainAccessPolicy资源类型。

M. *_*tki 0

附加到 ES 域的访问策略仅授予对此特定 ElasticSearch 域的访问权限。您应该能够安全地使用,"Resource": "*"因为它只影响您创建的 ES 域。