保护AWS Elasticsearch最佳实践

时间:2017-06-14 07:07:08

标签: amazon-web-services elasticsearch amazon-ec2 kibana autoscaling

我目前正在开展一个网络项目。我们正在尝试使用弹性搜索。我们目前在亚马逊上托管的所有网络项目和其他工具。 我们只为Elastic搜索,Log Stash和kibana创建一个EC2实例。之后,我们配置了弹性搜索。我们成功地将弹性搜索用于我们的目的。 但是与弹性搜索和我们的Web API进行通信存在问题。 我们的服务器自动缩放,因此我们配置了弹性搜索IP安全性,如下所示。

因此,我们目前因为自动缩放而窒息。 IP不时变化。我们如何配置Elastic Search以便从我们的Web API服务器中使用?这种情况的最佳做法是什么?

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:eu-west:1111111111:domain/xx-log/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "1.1.1.1",
            "1.1.1.2",
            "1.1.1.3",
            ...
          ]
        }
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

最好的办法是创建一个iam角色,然后在启动配置中将该角色设置为" IAM角色"。 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

然后使用允许AWS角色和某些特定IP访问弹性搜索域的策略。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME"
      },
      "Action": [
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "arn:aws:es:ca-central-1:ACCOUNTNUMBER:domain/ELASTICSEARCHDOMAINNAME/*"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "arn:aws:es:ca-central-1:ACCOUNTNUMBER:domain/ELASTICSEARCHDOMAINNAME/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "IPADDRESSHERE"
        }
      }
    }
  ]
}