Назад | Перейти на главную страницу

Как настроить политику доступа к AWS ElasticSearch с помощью CloudFormation?

В Документация AWS по контролю доступа ElasticSearch рассказывает о том, как предоставить доступ к подресурсам доменов ES, предотвращая изменения конфигурации домена, создав политику ресурсов домена ES и установив ресурс для ARN домена ES, за которым следует /*. Для пример

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:user/test-user"
        ]
      },
      "Action": [
        "es:*"
      ],
      "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*"
    }
  ]
}

В этом примере test-user предоставляет права на выполнение действий с подресурсами домена ES, но не саму конфигурацию домена ES.

При предоставлении Домен AWS ES с использованием CloudFormation, можно установить политику ресурсов с помощью AccessPolicies свойство. Нет такого ресурса CloudFormation, как AWS::Elasticsearch::DomainAccessPolicy К сожалению, похоже, что единственный способ установить политику ресурсов в домене ES - использовать это свойство.

Как можно воспользоваться преимуществами типов политик, рекомендованных в документы контроля доступа если теперь есть способ узнать ARN домена ES для использования в Resource поле, поскольку домен ES еще не был создан в точке, где определяется политика доступа?

Я пробовал сослаться на DomainArn атрибут домена ES в поле ресурса политики доступа, но понятно, что это не работает, поскольку создает циклическую зависимость.

Единственное решение, которое я придумал до сих пор, - просто подождать, пока AWS обновит CloudFormation, чтобы включить AWS::Elasticsearch::DomainAccessPolicy тип ресурса.

Политика доступа, прикрепленная к домену ES, предоставляет доступ только к этому конкретному домену ElasticSearch. Вы должны уметь безопасно использовать "Resource": "*" поскольку это влияет только на созданный вами домен ES.