Добавление политики доступа к нескольким доменам в сервис AWS Elasticsearch (статический IP и лямбда-ARN)

После настройки AWS Elasticsearch я установил прокси-серверы Logstash и Kibana на статическом IP-сервере, добавил политику доступа к домену в ES, и она работает нормально:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.192.192.192"
          ]
        }
      }
    }
  ]
}

Теперь мне нужно разрешить выполнение лямбда-функции es:ESHttpDelete действие на AWS ES, поэтому я создал функцию с существующей ролью service-role/Elasticsearch затем скопировал ARN из консоли управления IAM, чтобы добавить его в политику доступа AWS ES, для этого:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam:: 323137313233:role/service-role/Elasticsearch"
        ]
      },
      "Action": [
        "es:*"
      ],
      "Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*"
    }
  ]
}

Проблема в ES. Я должен выбрать политику доступа к домену для статического IP или ARN, но не для обоих. Когда я попытался объединить их вручную, не используя консоль, это не сработало. Я проверил документацию AWS, но они не упомянули, возможно ли это или нет.

1 ответ

Вы можете добавить несколько политик Statement массив в формате JSON политики. Итак, ваша окончательная политика будет выглядеть примерно так:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.192.192.192"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam:: 323137313233:role/service-role/Elasticsearch"
        ]
      },
      "Action": [
        "es:*"
      ],
      "Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*"
    }
  ]
}