#amazon-web-services #elasticsearch #amazon-ec2
#amazon-веб-сервисы #elasticsearch #amazon-ec2
Вопрос:
У меня есть конечная точка Elastic Search в Интернете. Я хотел получить к ней доступ только в пределах своих 2 VPC's
, если быть точным, только из своих EC2
экземпляров. Вот политика, которую я пытаюсь использовать в своем VPC CIDR
блоке IP's
, но я не могу получить доступ к конечной точке из своих EC2
экземпляров. Мои EC2
экземпляры находятся в частных подсетях, доступ к Интернету осуществляется через шлюз NAT. Вот моя политика доступа, которая не работает
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:1XXXXXXXXXXX:domain/my-elasticsearch/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"xx.xx.xx.xx/24",
"xx.xx.xx.xx/24"
]
}
}
}
]
}
Я также пробовал что-то подобное, чтобы разрешить доступ только из моих экземпляров EC2, которым назначена роль IAM, это тоже не сработало
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::XXXXXXXXXXX:role/MyEC2Role"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:us-east-1:XXXXXXXXXXX:domain/my-elasticsearch/*"
}
]
}
Что я делаю не так? Или есть лучший способ ограничить доступ?
Ответ №1:
Поскольку у вас общедоступный кластер AWS Elasticsearch, разрешение вашего экземпляра EC2 из частной подсети с частным IP-адресом не будет работать. Попробуйте добавить общедоступный IP-адрес NAT в политику доступа вашего кластера AWS ES и посмотрите, работает ли это. Также, если у вас используются политики доступа на основе IAM, убедитесь, что все запросы к AWS ES подписаны, как указано здесь: https://aws.amazon.com/blogs/database/get-started-with-amazon-elasticsearch-service-an-easy-way-to-send-aws-sigv4-signed-requests/