У нас есть приложение Heroku Rails, которому требуется доступ к очень большому кластеру Elasticsearch. Мы рассмотрели возможность использования таких сервисов Heroku Elasticsearch, как Bonsai, но они очень быстро растут в цене. Поэтому мы решили использовать сервис AWS Elasticsearch.
Кластер Elasticsearch можно защитить, полностью отключив его от Интернета, используя обратный прокси-сервер или добавив источники трафика в белый список.
Теоретически можно внести в белый список регион, в котором находится приложение Heroku, путем внесения в белый список всего базового региона AWS. Хотя это все еще большой блок IP-адресов и возможно, что сканеры портов могут работать из AWS, это все же улучшение.
Однако список IP-адресов в белый список довольно длинный (см. Ниже). Есть ли лучший способ сделать это?
curl -n -X GET https://api.heroku.com/regions/eu -H "Accept:
application/vnd.heroku+json; version=3"
{
"country":"Ireland",
"created_at":"2013-09-19T01:29:12Z",
"description":"Europe",
"id":"ed30241c-ed8c-4bb6-9714-61953675d0b4",
"locale":"Dublin",
"name":"eu",
"private_capable":false,
"provider":{
"name":"amazon-web-services",
"region":"eu-west-1"
},
"updated_at":"2016-08-09T22:03:28Z"
}
https://ip-ranges.amazonaws.com/ip-ranges.json
jq '.prefixes[] | select(.region=="eu-west-1")' < ip-ranges.json
Многие записи:
{
"ip_prefix": "52.218.0.0/17",
"region": "eu-west-1",
"service": "S3"
}
{
"ip_prefix": "54.231.128.0/19",
"region": "eu-west-1",
"service": "S3"
}
{
"ip_prefix": "34.240.0.0/13",
"region": "eu-west-1",
"service": "EC2"
}
{
"ip_prefix": "34.248.0.0/13",
"region": "eu-west-1",
"service": "EC2"
и т.д
Не уверен на 100%, понял ли я ваш вопрос, но похоже на этот вопрос из справки Heroku.
Из их ответа:
IP-адреса, используемые Heroku в любой момент времени, очень динамичны, а это означает, что опубликованные диапазоны могут охватывать другие IP-адреса, которые в настоящее время не используются Heroku. Это означает, что часто нежелательно открывать ваш брандмауэр для всего региона AWS по соображениям безопасности. Если вы хотите сделать это, несмотря ни на что, вы можете найти опубликованные диапазоны IP-адресов от AWS здесь: http://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html
Для приложений в Common Runtime лучшим подходом было бы использование надстройки для предоставления статического исходящего IP-адреса. https://elements.heroku.com/addons/categories/network или полагаться на безопасную связь через TLS.
Таким образом, вы можете рассмотреть возможность использования надстройки, предоставляющей статические IP-адреса.
По моему собственному опыту, я использовал QuotaGuard Static и я счастливый покупатель. Он очень прост в использовании (как и многие вещи в Heroku).
Однако это может оказаться дорогим решением, если вам нужно выполнить много запросов.