Существует ли правило группы безопасности AWS, специально разрешающее доступ к AWS KMS?

У меня есть сервер node.js, работающий в EC2, который использует AWS KMS для шифрования / дешифрования данных. Я могу успешно использовать aws-sdk для выполнения своих задач, используя

const AWS = require('aws-sdk');
const kms = new AWS.KMS();
kms.decrypt( ... )

Теперь я хочу заблокировать свою инфраструктуру с помощью групп безопасности. Я не могу понять, какое правило использовать, чтобы разрешить этому серверу доступ к ресурсам AWS KMS, не имея исходящего правила, разрешающего весь трафик в любом месте:

Outbound rules:
Type        | Protocol | Port range | Destination
All traffic | All      | All        | 0.0.0.0/0 
All traffic | All      | All        | ::/0 

Это может быть чрезмерно, но могу ли я использовать правило, которое разрешает исходящий доступ к сервису AWS KMS?

A CIDR block, a security group ID or a prefix list has to be specified, поэтому я не могу использовать имя хоста конечной точки или href из объекта службы KMS:

kms Service {
  ...
  isGlobalEndpoint: false,
  endpoint: Endpoint {
    protocol: 'https:',
    host: 'kms.eu-west-2.amazonaws.com',
    port: 443,
    hostname: 'kms.eu-west-2.amazonaws.com',
    pathname: '/',
    path: '/',
    href: 'https://kms.eu-west-2.amazonaws.com/'
  },
  ...
}

Проверка удаленного адреса https://kms.eu-west-2.amazonaws.com/ дает IP-адрес 52.94.48.24:443. Использование этого в конкретном правиле работает с перерывами, но я не могу найти документации AWS, предполагающей, что этот IP-адрес является фиксированным. Я бы предположил, что это не так.

Type        | Protocol | Port range | Destination
HTTPS       | TCP      | 443        | 52.94.48.24/32

Любое руководство приветствуется!

Спасибо.


person Adam Marsh    schedule 08.05.2021    source источник


Ответы (1)


Я предполагаю, что, блокируя вашу инфраструктуру, мы понимаем, что вы помещаете свои экземпляры EC2 в частная подсеть. В этом случае вам следует создать конечную точку VPC для службы KMS.

Конечная точка VPC будет иметь сетевой интерфейс в ваших подсетях, который будет предоставлять частный IP-адрес для каждой подсети, а также потенциальное частное имя хоста DNS (если это свойство включено в VPC).

Кроме того, вы можете разрешить трафик между экземплярами EC2 и конечной точкой VPC на основе группы безопасности (не нужно указывать IP-адреса).

person Ervin Szilagyi    schedule 08.05.2021
comment
Мне потребовалось время, чтобы по-настоящему понять, как это работает. Я мог бы выполнять все индивидуальные задачи, но не совсем согласовывал, но теперь у меня есть. В конце ... [1] обновите группу безопасности по умолчанию только на (a) Входящий, весь трафик, sg- {default} (b) Исходящий, весь трафик, sg- {default} [2] назначьте эту группу безопасности для все экземпляры EC2 и RDS [3] создают конечную точку VPC, назначенную группе безопасности по умолчанию. Теперь моя система может общаться между собой только с одной (простой) группой безопасности. - person Adam Marsh; 09.05.2021
comment
На заметку: [1] Вам нужны правила для исходящего и входящего трафика [2] Я не мог заставить эту работу работать с созданной мной группой безопасности, мне нужно было использовать и обновить исходную группу безопасности по умолчанию, очевидно, удалив 0.0.0.0/0 [3] Убедитесь, что вы применили группу безопасности ко всем активам! (EC2, RDS и конечные точки, в моем случае). Наверное, это очевидно для большинства, но, надеюсь, кому-то пригодится! - person Adam Marsh; 09.05.2021