aws elasticsearch 域 IAM 策略中提到的主体(角色 arns)的用例?

Use case for the principals(role arns) mentioned in aws elasticsearch domain IAM policy?

在使用 terraform 通过 AWS elasticsearch 的 IAM 策略时,我可以看到将委托人添加为角色 arns 的选项:

data "aws_iam_policy_document" "default" {
  count =  ( length(var.iam_role_arns) > 0) ? 1 : 0
  //for resources within 
  statement {
    effect = "Allow"
    actions = distinct(compact(var.iam_actions))

    resources = [
      join("", aws_elasticsearch_domain.default.*.arn),
      "${join("", aws_elasticsearch_domain.default.*.arn)}/*"
    ]

    principals {
      type        = "AWS"
      identifiers = distinct(compact(concat(var.iam_role_arns)))
    }
  }
}

在尝试从 kibana 仪表板访问 aws es 时,我必须指定条件 IP 才能访问 es 域。使用这些 var.iam_role_arns 的用例应该是什么?

谢谢

您将使用 iam_role_arns 通过您的 IAM user/role 凭据使用 签名的 https 查询 访问您的 ES .默认情况下,ES 和 AWS 都提供创建此类查询的选项,但它们是 第三方工具,例如 python 的流行 aws-requests-auth 库。

图书馆还有一个 example specific to ES

如果您想通过 lambda 函数或 EC2 实例 与您的 ES 交互,这将非常有用。在这些情况下,您的 iam_role_arns 将分别引用 lambda 执行和实例角色。在这种情况下,您可以使用 aws-requests-auth 构造对您的 ES 域的签名查询。

看看就知道了Signing HTTP Requests to Amazon Elasticsearch Service