Как сделать свою службу AWS Elastic Search закрытой? - PullRequest
0 голосов
/ 19 января 2019
{
"Version": "2012-10-17",
  "Statement": [    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxx:role/some-role"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-1:xxxxxxxx:domain/theprodname/*"
    }
  ]
}

Я хочу настроить свой эластичный поиск как частный.Под «личным» я подразумеваю:

  1. Нет доступа извне (нет запросов http)
  2. Мой собственный сервер aws ec2 может получить к нему доступ.

Я добавил свою ARM-роль AWS в этот принцип, и оказалось, что я все еще не могу использовать службу es на своем веб-сайте.

Есть идеи?Заранее спасибо.

Я попытался ответить на вопрос Правильная политика доступа для Amazon Elastic Search Cluster .Но это не работает для моего случая.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Вы можете настроить свой доменasticsearch для работы в AMAZON VPC. Это лучший способ. Взгляните на это: https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html

Единственная проблема с ES на VPC состоит в том, что только другая машина на том же VPC может связаться с вашей службой ES. Обычно этот случай решается с помощью EC2, который работает как Jump Host.

Почему это предпочтительные решения? Если вы оставляете домен доступным всему миру и устанавливаете политику ограничения, чтобы разрешить доступ к какой-либо роли IAM или IP-адресу, это работает должным образом, и никто не может получить доступ к вашим данным, но весь мир может связаться с вашим доменом, поскольку он является публичным доменом, таким образом, вы предоставляете сервис ES при возможном присоединении ddos. С помощью решения VPC только VPC partecipant может связаться с вашей конечной точкой обслуживания.

Другая практика, если вам необходимо использовать ES из приложения, - это разработка API для доступа к данным ES с AWS Elastic Beanstalk с балансировщиком нагрузки, установленным в public, и экземплярами, которые запускают приложение на VPC. В этом случае используется балансировщик нагрузки ELB, который будет представлен миру, и вы с помощью своей логики API решаете, кому звонить или нет.

0 голосов
/ 20 января 2019

Может быть несколько проблем с тем, что ваш EC2 не может получить доступ к вашему домену ES.

Даже если EC2, принимающий роль, определенную в политике ES, но не делающий подписанный запрос, получит отказ в доступе.

Вы можете избежатьподписанный запрос с использованием AWS ES REST API.Предполагая EC2 в VPC, вы можете назначить статический IP-адрес NAT Gateway и внести в белый список этот IP-адрес в политике вашего домена ES.

Мое предложение будет включать запрос подписи с использованием собственного клиента ES, поскольку этогораздо проще, чем REST API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...