Как вручную настроить AWS ElasticSearch и использовать кибаны через браузер? - PullRequest
0 голосов
/ 12 марта 2019

Я изо всех сил пытался настроить AWS ES и использовать kibana.Я следил за документами Amazon Elasticsearch Service на AWS .

Когда я добираюсь до Шаг 2. Загрузка данных в домен Amazon ES для индексации , мне не удалось запустить curl -XPUT elasticsearch_domain_endpoint/movies/_doc/1 -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' -H 'Content-Type: application/json', как указано в документации, получая ошибку {"Message":"User: anonymous is not authorized to perform: es:ESHttpPut"}.

Я установил политику на ES следующим образом:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::my_id:user/my_iam_user"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:my_id:domain/my-domain/*"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:my_id:domain/my-domain/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [my_ips]
        }
      }
    }
  ]
}

Я получил вышеуказанные IP-адреса, вызвав ifconfig | grep "inet " | grep -v 127.0.0.1 из терминала, нажав checkip.amazonaws.com и проверив Инструменты разработчика -> Сеть включенаchrome (это 3 разных IP-адреса, и я добавил их все).

Я также добавил следующую роль для своего пользователя IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "es:DescribeReservedElasticsearchInstanceOfferings",
                "es:DescribeReservedElasticsearchInstances",
                "es:ListDomainNames",
                "es:PurchaseReservedElasticsearchInstance",
                "es:DeleteElasticsearchServiceRole",
                "es:ListElasticsearchInstanceTypes",
                "es:DescribeElasticsearchInstanceTypeLimits",
                "es:ListElasticsearchVersions"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "es:*",
            "Resource": "arn:aws:es:us-west-2:my_id:domain/my-domain"
        }
    ]
}

Я настроил AWS CLI на своей машинеи я могу получить правильный результат через aws es describe-elasticsearch-domain --domain my-domain.

Тем не менее, мне не удалось позвонить curl XPUT выше и не удалось получить доступ к кибане по той же причине {"Message":"User: anonymous is not authorized to perform: es:ESHttpPut"}

Вотпары статей, которые я прочитал, прежде чем поднять вопрос здесь:

  1. https://aws.amazon.com/premiumsupport/knowledge-center/anonymous-not-authorized-elasticsearch/?nc1=h_ls
  2. https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-ac.html
  3. https://aws.amazon.com/cn/blogs/database/set-access-control-for-amazon-elasticsearch-service/
  4. Правильная политика доступа для Amazon Elastic Search Cluster
  5. https://aws.amazon.com/cn/blogs/security/how-to-control-access-to-your-amazon-elasticsearch-service-domain/

И все равно не удалось заставить его работать.

Может кто-нибудь любезноНе могли бы вы пройти через весь процесс настройки AWS ES вручную и возможности манипулировать им через AWS CLI, а также через кибану в браузере?Я был бы очень признателен, если бы это было подробное пошаговое руководство вместо того, чтобы выдавать документацию по aws.Большое вам спасибо.

1 Ответ

0 голосов
/ 13 марта 2019

Оказывается, что IP-адрес, который я использовал, был неверным.Я должен был позвонить checkip.amazonaws.com, пока не под VPN, и IP-адрес может измениться.Политика в отношении ES должна выглядеть следующим образом: Другой ответ

{
  "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"
          ]
        }
      }
    }
  ]
}

* PS.Убедитесь, что вы звоните checkip.amazonaws.com в том же браузере (также как и тот же пользователь, если вы используете Chrome)

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