AWS Security Group - как разрешить публичный IP из другой группы безопасности

У меня есть два экземпляра в разных группах безопасности VPC, каждый со своим публичным IP. Я хотел бы, чтобы экземпляр один мог подключиться ко второму экземпляру по его общедоступному IP. Я обнаружил, что предоставление доступа группе безопасности разрешает доступ только к частному IP, а не к общему IP.

Теперь я определил свою группу безопасности, чтобы разрешить доступ к общедоступному IP-адресу экземпляра, который находится в другой группе безопасности. Тем не менее, это неудобно, так как я не могу легко автоматизировать это (думаю, Ansible), поскольку мне сначала нужно будет выполнить поиск DNS-имени, прежде чем я смогу добавить его в группу.

Кто-нибудь знает более простой способ сделать это?

Подвести итоги:

  • Экземпляр 1 -> 1.2.3.4
  • Экземпляр 2 -> 5.6.7.8

Экземпляр 1 необходим для доступа к Экземпляру 2 по его общедоступному IP. В итоге мне приходится вручную искать IP-адрес экземпляра 1 и, в свою очередь, добавить его в группу безопасности экземпляра 2.

3 ответа

Боюсь, что как только вы выйдете на общедоступные IP-адреса, вы больше не сможете использовать идентификатор группы безопасности в качестве источника в целевом SG. Это работает только для частных IP-адресов.

Однако, если вы создаете Экземпляр 1 через Ansible, вы можете использовать факты Ansible для экземпляра, чтобы получить его Public IP и установить его в качестве источника в SG экземпляра 2. Нечто подобное должно сделать:

- name: Create Instance 1
  ec2:
    key_name: mykey
    instance_type: t2.micro
    image: ami-123456
    wait: yes
    assign_public_ip: yes             <<< Assign Public IP
  register: ec2

И затем вы можете добавить его в качестве источника в группу безопасности экземпляра 2:

- name: Instance 2 SG
  ec2_group:
    name: ...
    rules:
    - proto: tcp
      ports:
      - 80
      cidr_ip: "{{ ec2.instances.public_ip }}"   <<< Use it here

Что-то в этом роде должно позволить вам автоматизировать работу с Ansible.

Надеюсь, это поможет:)

Запросы с открытого IP-адреса экземпляра не обрабатываются так, как если бы они поступали из групп безопасности экземпляра. Это работает только от запросов с использованием частных IP-адресов.

Я рекомендую, чтобы исходный экземпляр использовал адрес DNS для целевого экземпляра, который разрешается в частный IP-адрес целевого экземпляра. Например: вы создаете запись CNAME my-service.example.com это указывает на общедоступное DNS-имя целевого экземпляра, предоставленное AWS. Публичное DNS-имя будет выглядеть примерно так ec2-public-ipv4-address.compute-1.amazonaws.com,

AWS обеспечивает разрешение DNS с разделением горизонта. когда my-service.example.com разрешается в общедоступном интернете, публичный IP возвращается. когда my-service.example.com разрешается в вашем VPC, частный IP возвращается. Поэтому ваш исходный экземпляр будет подключаться к целевому экземпляру с использованием частного IP-адреса, а правила вашей группы безопасности будут работать, как ожидается.

Такая конфигурация DNS не всегда возможна или практична, поэтому вам может потребоваться внести в белый список открытый IP-адрес исходного экземпляра. В этом случае убедитесь, что это Эластичный IP-адрес, иначе публичный IP-адрес изменится, если сервер отключится.

Обычно вы создаете именованную группу безопасности, присоединяете ее к этим экземплярам и добавляете правило, которое ссылается на эту группу безопасности как источник и разрешает необходимые порты назначения.

Конечная картина:

  • Все экземпляры, необходимые для общения друг с другом, имеют created security group прилагается.
  • created security group содержит правила, которые указывают входящий от created security group в destination port you need
  • Часто отсутствуют исходящие правила, так как группы безопасности сохраняют состояние. Но не стесняйтесь добавлять то, что нужно.

Таким образом, в принципе, даже один IP не требуется, и можно разрешить / запретить, подключив группу безопасности к ресурсам, к которым требуется доступ. Этот метод также прекрасно работает с динамическими средами (например, с автоматическим масштабированием).

Другие вопросы по тегам