A política de acesso anexada ao domínio ES só concede acesso a esse domínio específico do ElasticSearch. Você deve poder usar com segurança "Resource": "*"
, pois isso afeta apenas o domínio ES que você criou.
A documentação da AWS no controle de acesso do ElasticSearch fala sobre como conceder acesso aos sub-recursos de domínios ES, evitando alterações na configuração do domínio, criando uma política de recursos de domínio ES e definindo o recurso para o ARN do domínio ES seguido por /*
. Para o exemplo
{
"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/*"
}
]
}
Neste exemplo, test-user
tem direitos para executar ações nos sub-recursos do domínio ES, mas não na própria configuração do domínio ES.
Ao provisionar um domínio do AWS ES usando o CloudFormation , pode-se definir a política de recursos com o Propriedade AccessPolicies . Não há recursos do CloudFormation como AWS::Elasticsearch::DomainAccessPolicy
, infelizmente, e parece que a única maneira de definir uma política de recursos em um domínio ES é com essa propriedade.
Como se pode aproveitar os tipos de políticas recomendadas na docs de controle de acesso se existe agora uma maneira de saber o ARN do domínio ES a ser usado no campo Resource
, uma vez que o domínio ES ainda não foi criado no ponto em que a política de acesso está definida?
Eu tentei referenciar o atributo DomainArn
do domínio ES no campo de recursos da Política de Acesso, mas, compreensivelmente, isso não funciona, pois cria uma dependência circular.
A única solução que pensei até agora é apenas esperar até que a AWS atualize o CloudFormation para incluir um tipo de recurso AWS::Elasticsearch::DomainAccessPolicy
.
A política de acesso anexada ao domínio ES só concede acesso a esse domínio específico do ElasticSearch. Você deve poder usar com segurança "Resource": "*"
, pois isso afeta apenas o domínio ES que você criou.