Amazon Elastic Search Cluster:如何制定适当访问策略?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (51)

我最近开始使用新的AmazonElasticSearch服务,我似乎无法确定我需要的访问策略,所以我只能从我的EC2实例中访问服务,这些实例具有分配给他们的特定IAM角色。

下面是我目前为ES域分配的访问策略的一个示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::[ACCOUNT_ID]:role/my_es_role",
        ]
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN]/*"
    }
  ]
}

但就像我说的,这行不通。我登录到EC2实例(该实例具有my_es_role)并尝试对“https://*...amazonaws.com“端点,我得到以下错误:

{"Message":"User: anonymous is not authorized to perform: es:ESHttpGet on resource: arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN]/“}

有谁知道我要改变访问策略才能让它起作用吗?

提问于
用户回答回答于

您可以锁定访问IAM的权限,但是您将如何在浏览器中查看Kibana?

我能够获得两个IAM访问IP限制的访问与以下访问策略。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxxxx:root"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:xxxxxxxxxxxx:domain/my-elasticsearch-domain/*"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:xxxxxxxxxxxx:domain/my-elasticsearch-domain/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.168.1.0",
            "192.168.1.1"
          ]
        }
      }
    }
  ]
}

我的EC2实例有一个实例配置文件,其中arn:aws:iam::aws:policy/AmazonESFullAccess政策。Logstash应该使用logstash输出-Amazon-es输出插件...。运行在我的EC2实例上的Logstash包括一个输出部分,如下所示:

output {
    amazon_es {
        hosts => ["ELASTICSEARCH_HOST"]
        region => "AWS_REGION"
    }
    # If you need to do some testing & debugging, uncomment this line:
    # stdout { codec => rubydebug }
}

我可以从访问策略中的两个IP访问Kibana(192.168.1.0和192.168.1.1)。

扫码关注云+社区