セキュリティグループはインスタンスレベルのファイアウォールです。 インスタンスのセキュリティを確保するために、セキュリティグループのルール設定に関して最低限の権限付与原則を守る必要があります。 ここでは、インスタンスのイントラネット相互通信を可能にする安全な方法を 4 つ紹介します。

方法 1. 単一の IP アドレスへのアクセス権限付与

  • アプリケーションシナリオ: イントラネットを介した少数のインスタンスの相互通信。
  • 長所: IP アドレスへのアクセス権限を付与することで、セキュリティグループのルールが明確になり、理解しやすくなります。
  • 短所: イントラネットを介して多数のインスタンスが相互にアクセスする必要がある場合は、セキュリティグループのルールの割り当てが 100 に制限されます。 さらに、メンテナンスの作業負荷も高くなります。
  • 設定:
    1. 相互通信を必要とするインスタンスを選択し、[セキュリティグループ] をクリックします。
    2. 該当するセキュリティグループを選択し、[ルールの追加] をクリックします。
    3. [Ingress] をクリックし、[セキュリティグループのルールの追加] をクリックします。
    4. 以下の説明に従ってセキュリティグループのルールを追加します。
      • 操作: 許可します。
      • プロトコルの種類: 必要に応じてプロトコルの種類を選択します。
      • ポートの範囲: 必要に応じてポートの範囲を設定します。 形式は “start port number/end port number” です。
      • 権限付与の種類: CIDR.
      • 権限付与オブジェクト: イントラネット相互通信向けの、予想されるイントラネット IP アドレスを入力します。 形式は a.b.c.d/32 である必要があります。 サブネットマスクは /32 である必要があります。

方法 2. 同じセキュリティグループへの参加

  • アプリケーションシナリオ: アプリケーションのアーキテクチャが比較的単純である場合は、すべてのインスタンスを同じセキュリティグループに追加できます。 このようなインスタンスは、デフォルトでイントラネットを介して互いにアクセスできるため、特別なルールは必要ありません。
  • 長所: セキュリティグループのルールが明確になり、理解しやすくなります。
  • 短所: 単純なアプリケーションネットワークアーキテクチャにしか適用できません。 ネットワークアーキテクチャを調整した場合、権限付与方法もそれに応じて修正する必要があります。

方法 3. 相互通信専用に作成されたセキュリティグループへのインスタンスのバインド

  • アプリケーションシナリオ: 該当するインスタンスを相互通信専用のセキュリティグループにバインドすることができます。 この方法は、複数のアプリケーション層を持つネットワークアーキテクチャに適用可能です。
  • 長所: この方法は容易に実装でき、インスタンス間の相互通信を迅速に確立できます。 これは、複雑なネットワークアーキテクチャに適用可能です。
  • 短所: インスタンスは複数のセキュリティグループにバインドされる必要があり、セキュリティグループのルールが理解しにくくなります。
  • 設定:
    1. “相互通信用のセキュリティグループ” という名前の新しいセキュリティグループを作成します。 新しいセキュリティグループにはルールは必要ありません。
    2. 該当するインスタンスを、新しく作成された “相互通信用のセキュリティグループ” に追加します。 同じセキュリティグループのインスタンスのデフォルトの機能であるため、インスタンスはイントラネットを介して相互接続されます。

方法4. セキュリティグループの権限付与

  • アプリケーションシナリオ: ネットワークアーキテクチャが複雑で、異なるインスタンスに展開されたアプリケーションが異なるサービスの役割を持っている場合、セキュリティグループの権限付与を選択できます。
  • 長所: セキュリティグループのルールが明確になり、理解しやすくなります。 さらに、相互通信はアカウントを越えて実装することができます。
  • 短所: セキュリティグループのルールをたくさん設定する必要があります。
  • 設定:
    1. 該当するインスタンスを選択し、[セキュリティグループ] ページに入ります。
    2. 該当するセキュリティグループを選択し、[ルールの追加] をクリックします。
    3. [Ingress] をクリックし、[セキュリティグループのルールの追加] をクリックします。
    4. 以下の説明に従って、セキュリティグループのルールを追加します。
      • 操作: 許可します。
      • プロトコルの種類: 必要に応じてプロトコルの種類を選択します。
      • ポートの範囲: 必要に応じて設定します。
      • 権限付与の種類: セキュリティグループ。
      • 権限付与オブジェクト:
        • 現在のアカウントを許可する: ネットワークの要件に基づいて、[権限付与されたオブジェクト]の中から、イントラネット相互通信用のピアインスタンスのセキュリティグループ ID を選択します。
        • 他のアカウントを許可する: [許可されたオブジェクト] の中のピアインスタンスのセキュリティグループ ID を入力します。 [アカウント ID] の中のピアアカウント IDを入力します。 [アカウント管理] > [セキュリティ設定] で照会できます。

提案

早い段階でセキュリティグループによって付与されるアクセスが多すぎる場合、次の手順で権限付与範囲を狭めることを推奨します。

この図で、 0.0.0.0 を削除するとは、0.0.0.0/0 アドレスセグメントからのインバウンドアクセスを許可する、元のセキュリティグループを削除するということです。

セキュリティグループが不適切に変更された場合、インスタンス間の通信が影響を受ける可能性があります。 相互通信の問題が発生したときにタイムリーに回復できるように、設定変更対象のセキュリティグループのルールをバックアップしてください。

セキュリティグループは、アプリケーションアーキテクチャ全体におけるインスタンスの役割をマップします。 アプリケーションアーキテクチャに基づいて、ファイアウォールのルールを計画することを推奨します。 たとえば、一般的な 3 層 Web アプリケーションアーキテクチャでは、 3 つのセキュリティグループを計画し、それぞれアプリケーションまたはデータベースとともに展開されたインスタンスにバインドできます。

  • Web 層のセキュリティグループ: ポート 80 を開く。
  • アプリケーション層のセキュリティグループ: ポート 8080 を開く。
  • DB 層のセキュリティグループ: ポート 3306 を開く。