web-dev-qa-db-ja.com

AWSセキュリティグループ-別のセキュリティグループからのパブリックIPを許可する方法

VPCの個別のセキュリティグループに2つのインスタンスがあり、それぞれに独自のパブリックIPがあります。インスタンス1がパブリックIPでインスタンス2に接続できるようにしたいと考えています。セキュリティグループへのアクセスを許可すると、プライベートIPへのアクセスのみが許可され、パブリックIPへのアクセスは許可されないことがわかりました。

セキュリティグループを定義して、他のセキュリティグループにあるインスタンスのパブリックIPへのアクセスを許可しました。ただし、これは簡単に自動化できないため(Ansibleと考えて)、グループに追加する前にDNS名のルックアップを実行する必要があるため、これは不便です。

誰かがこれを行う簡単な方法を知っていますか?

要約する:

  • インスタンス1-> 1.2.3.4
  • インスタンス2-> 5.6.7.8

インスタンス1は、パブリックIPでインスタンス2にアクセスする必要があります。私は現在、インスタンス1のIPを手動で検索し、それをインスタンス2のセキュリティグループに追加する必要があります。

7
darkl0rd

パブリックIPにアクセスするとすぐに、ターゲットSGのソースとしてセキュリティグループIDを使用できなくなります。これはプライベートIPでのみ機能します。

ただし、Ansibleを使用してインスタンス1を作成する場合、インスタンスのAnsible factsを使用してそのパブリックIPを取得し、-インスタンス2 SG。このようなことを行う必要があります:

- 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で自動化を行うことができます。

それが役に立てば幸い:)

7
MLu

通常、名前付きセキュリティグループを作成し、それらのインスタンスにアタッチし、このセキュリティグループをソースとして参照し、必要な宛先ポートを許可するルールを追加します。

最終的な画像:

  • 相互に通信するために必要なすべてのインスタンスには、created security groupがアタッチされています。
  • created security groupには、created security groupからdestination port you needへのインバウンドを示すルールが含まれています
  • セキュリティグループはステートフルであるため、多くの場合、送信ルールは含まれていません。しかし、必要なものを自由に追加してください。

そのため、基本的に単一のIPも必要ありません。アクセスが必要なリソースにセキュリティグループをアタッチすることで、許可/拒否を制御できます。この方法は、動的環境(オートスケールなど)でもうまく機能します。

3
hargut

インスタンスのパブリックIPアドレスからのリクエストは、インスタンスのセキュリティグループからのリクエストであるかのようには扱われません。これは、プライベートIPアドレスを使用するリクエストからのみ機能します。

ソースインスタンスは、ターゲットインスタンスのプライベートIPに解決されるターゲットインスタンスのDNSアドレスを使用することをお勧めします。たとえば、AWSが提供するターゲットインスタンスのパブリックDNS名を指すCNAMEレコードmy-service.example.comを作成します。パブリックDNS名はec2-public-ipv4-address.compute-1.amazonaws.comのようになります。

AWSはスプリットホライズンDNS解決を提供します。 my-service.example.comがパブリックインターネットで解決されると、パブリックIPが返されます。 VPCでmy-service.example.comが解決されると、プライベートIPが返されます。したがって、ソースインスタンスはプライベートIPを使用してターゲットインスタンスに接続し、セキュリティグループルールは期待どおりに機能します。

この種のDNS構成は常に可能または実用的ではないため、ソースインスタンスのパブリックIPアドレスをホワイトリストに登録する必要がある場合があります。この場合は、Elastic IPアドレスであることを確認してください。そうでない場合、サーバーがシャットダウンするとパブリックIPが変更されます。

3
Greg