【问题标题】:Securing AWS Elasticsearch best practices保护 AWS Elasticsearch 最佳实践
【发布时间】:2017-11-16 04:39:53
【问题描述】:

我目前正在做一个网络项目。我们正在尝试使用弹性搜索。我们目前在亚马逊上托管的所有网络项目和其他工具。 我们只需为 Elastic search、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",
            ...
          ]
        }
      }
    }
  ]
}

【问题讨论】:

  • 您可以使用签名请求进行身份验证。向一组用户授予权限并使用为他们生成的密钥。 docs.aws.amazon.com/general/latest/gr/…
  • 我可以在没有任何身份验证的情况下使用吗?我只想在我们的 AWS 环境中使用。
  • 是的。使用Roles

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


【解决方案1】:

最好的办法是创建一个 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"
        }
      }
    }
  ]
}

【讨论】:

  • 我应该为角色选择什么类型?当我打开 IAM 控制台时,有许多服务角色类型和权限。你有任何文档或其他的吗?
  • @orhun.begendi 我通常为我运行的每个服务创建一个新角色。然后将该新角色分配给使用它的服务。
  • 我做不到。我想使用弹性搜索作为日志数据库。我正在使用serilog框架,但是当我使用基于角色的访问策略时,我无法将日志写入弹性搜索服务。
猜你喜欢
  • 2017-07-12
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 2020-01-16
  • 1970-01-01
  • 2011-06-27
  • 2020-01-15
相关资源
最近更新 更多