В Документация 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.