セキュリティグループ活用#

要求事項#

セキュリティを高めるための最も基本的なパターンです。
以下の要求事項に対応します。

  • FJcloud-Oで構築したシステムのセキュリティを高めたい

対応するデザインパターン概要#

FJcloud-Oでは、システムのセキュリティを高める機能として、セキュリティグループという機能が提供されています。
セキュリティグループでは、仮想サーバに接続されたポートに対しIPv4のパケットフィルタリングを行うことが可能です。

セキュリティグループの特徴は以下の通りです。

特徴 説明
設定/変更が容易                                         1つのセキュリティグループに、複数のルールを設定することができます。1つのポートに設定されたセキュリティグループのうち、どれか1つでもルールにマッチしたパケットは通信が許可され、それ以外の通信は遮断されます。
(ホワイトリスト方式、OR条件)
管理が容易                                 セキュリティグループは、仮想サーバ等を作成する際に設定します。仮想サーバ等へ設定する際は、1つの仮想サーバに複数のセキュリティグループを設定可能です。これにより、用途に応じてセキュリティグループを割り当てるといった使い方が可能となります。
複雑な構成にも簡易に対応                                               セキュリティグループは、ネットワークの階層がフラットでも、複数階層でも構成可能です。また、同一リージョン内であれば、別のアベイラビリティゾーンにまたがって使用することが可能です。

以下では、セキュリティグループを利用した最も基本的なパターンとして、フラットなネットワークでセキュリティを向上させる実装を例示します。

構造 (イメージ図)#

image

実装サンプル#

上記の構造に則して、以下の設定例で作成します。

アクセス元のセキュリティグループ/サーバ プロトコル アクセス先のセキュリティグループ/サーバ 接続
sshアクセス元サーバ *1 ssh SG_external(外部用) OK
SG_external(外部用) ssh SG_internal(内部用) OK
各仮想サーバ http 169.254.169.254/32 *2 OK

*1 構造図中のsshアクセス元サーバ (特定のメンテナンス用サーバ等) のように、仮想サーバに ssh接続する際のアクセス元となるサーバを設定します。

*2 仮想サーバが起動時に必要な情報を取得するため等で利用する、特別なIPアドレスです。

1. sshアクセス元サーバと接続するセキュリティグループの作成(IaaSポータル)#

(1) グループの作成

  • IaaSポータルにログインします。
  • 「ネットワーク」⇒「セキュリティグループ」画面で、「+」をクリックします。
  • 以下を入力し、作成をクリックします。
項目 必須 設定値例 内容
セキュリティグループ名 必須 "SG_external" セキュリティグループ名を入力してください。
説明 任意 "SG_external" セキュリティグループに対する説明事項を入力してください。

(2) ルールの編集

  • 「ネットワーク」⇒「セキュリティグループ」画面で、作成したセキュリティグループ(SG_external)の「アクション」から「ルール管理」をクリックします。
  • 「セキュリティグループルール管理」画面で、セキュリティグループの新規作成時に設定されるデフォルトの2つのルールを削除します。
    デフォルトの2つのルール (送信方向:すべてOK) の削除については インターネット接続パターン もあわせて参照してください。
  • 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
  • 以下のルールを追加します。
ルール 方向 オープンポート ポート 接続先 セキュリティグループまたは CIDR IPバージョン
カスタムTCPルール 受信 ポート 22 CIDR xxx.xxx.xxx.xxx/32 IPV4
カスタムTCPルール 送信 ポート 22 セキュリティグループ SG_internal IPv4

2. 内部用のセキュリティグループの作成(IaaSポータル)#

(1) グループの作成

  • 「ネットワーク」⇒「セキュリティグループ」画面で、「+」をクリックします。
  • 以下を入力し、作成をクリックします。
項目 必須 設定値例 内容
セキュリティグループ名 必須 "SG_internal" セキュリティグループ名を入力してください。
説明 任意 "SG_internal" セキュリティグループに対する説明事項を入力してください。

(2) ルールの編集

  • 「ネットワーク」⇒「セキュリティグループ」画面で、作成したセキュリティグループ(SG_internal)の「アクション」から「ルール管理」をクリックします。
  • 「セキュリティグループルール管理」画面で、セキュリティグループの新規作成時に設定されるデフォルトの2つのルールを削除します。
    デフォルトの2つのルール (送信方向:すべてOK) の削除については インターネット接続パターン もあわせて参照してください。
  • 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
  • 以下のルールを追加します。
ルール 方向 オープンポート ポート 接続先 セキュリティグループまたは CIDR IPバージョン
カスタムTCPルール 受信 ポート 22 セキュリティグループ SG_external IPv4

3. 共通用のセキュリティグループの作成(IaaSポータル)#

(1) グループの作成

  • 「ネットワーク」⇒「セキュリティグループ」画面で、「+」をクリックします。
  • 以下を入力し、作成をクリックします。
項目 必須 設定値例 内容
セキュリティグループ名 必須 "SG_common" セキュリティグループ名を入力してください。
説明 任意 "SG_common" セキュリティグループに対する説明事項を入力してください。

(2) ルールの編集

  • 「ネットワーク」⇒「セキュリティグループ」画面で、 作成したセキュリティグループ(SG_common)の「アクション」から「ルール管理」をクリックします。

  • 「セキュリティグループルール管理」画面で、セキュリティグループの新規作成時に設定されるデフォルトの2つのルールを削除します。 デフォルトの2つのルール (送信方向:すべてOK) の削除については インターネット接続パターン もあわせて参照してください。

  • 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。

  • 以下のルールを追加します。
ルール 方向 オープンポート ポート 接続先 セキュリティグループまたは CIDR IPバージョン
カスタムTCPルール 送信 ポート 80 CIDR 169.254.169.254/32 IPv4

4. 仮想サーバの作成(IaaSポータル)#

  • セキュリティグループ「SG_external」と「SG_common」に所属する仮想サーバ1 を作成します。
    仮想サーバ1 は、sshアクセス元サーバ からのみアクセス可能です。
  • セキュリティグループ「SG_internal」と「SG_common」に所属する仮想サーバ2 を作成します。
    仮想サーバ2 は、仮想サーバ1 からのみアクセス可能です。
  • 仮想サーバ作成の実装手順は インターネット接続パターンの仮想サーバ作成例 を参照してください。

メリット・効果#

セキュリティグループを利用した場合のメリット・効果は以下の通りです。

  • パケットフィルタリングの設定/変更/管理が容易なため、構築/運用コストを抑制可能
    • パケットフィルタリングの設定/変更が、個々の仮想サーバ等への設定/変更とならず、 当該セキュリティグループへの設定/変更だけで完了するため、設定/変更が容易
    • パケットフィルタリングをグルーピングして管理できるため、管理が容易
    • セキュリティグループの設定と仮想サーバに対するセキュリティグループの割り当ては別々の処理のため、仮想サーバの増減の際にセキュリティグループの設定変更は不要
    • フラットなネットワークから、複数階層のネットワーク、アベイラビリティゾーンをまたがった構成など、複雑な構成でも簡易に設定可能

注意事項#

  • 本パターンは2017年6月時点のFJcloud-O 従来リージョンで動作検証しています。
    また、2019年2月時点のFJcloud-O 東日本/西日本リージョン3で動作検証しています。
  • セキュリティグループは、仮想ルータおよびDHCPサーバが持つポートには設定できません。
  • ポートを作成する際にセキュリティグループ設定を省略した場合、 プロジェクトに作成されるデフォルトのセキュリティグループが自動設定されます。

    • デフォルトセキュリティグループのセキュリティグループ名は「default」です。
    • 「default」を編集しなければ、初期状態では受信は「default」が設定されている仮想サーバ間では全て許可/それ以外は全て拒否、送信は全て許可となります。
    • 「default」を編集した場合は、その設定に従います。
  • 同じセキュリティグループ内で通信を行う必要がある場合も、許可ルールを設定します。

    • 設定例として、仮想サーバA、仮想サーバBを同じセキュリティグループ "SG_ssh" にして、仮想サーバAと仮想サーバBの間でsshの通信を行いたい場合は、セキュリティグループ "SG_ssh" に以下の設定を行います。
ルール 方向 オープンポート ポート 接続先 セキュリティグループ Ethernetタイプ
カスタムTCPルール 受信 ポート 22 セキュリティグループ SG_ssh IPv4
カスタムTCPルール 送信 ポート 22 セキュリティグループ SG_ssh IPv4

Warning

上記の "SG_ssh" のように同じセキュリティグループ内で通信を行う設定は、多数のサーバに対して設定すると、フィルタリングルールが以下のように多数に展開されてしまうため、性能上で問題が出る可能性があります。
たとえば、仮想サーバX、仮想サーバY、仮想サーバZに "SG_ssh" を適用すると、以下のように仮想サーバの台数の累乗分のフィルタリングルールが生成されます。

仮想サーバX → 仮想サーバX
仮想サーバX → 仮想サーバY
仮想サーバX → 仮想サーバZ
仮想サーバY → 仮想サーバX
仮想サーバY → 仮想サーバY
仮想サーバY → 仮想サーバZ
仮想サーバZ → 仮想サーバX
仮想サーバZ → 仮想サーバY
仮想サーバZ → 仮想サーバZ

そのため、同じセキュリティグループ内で通信を行う設定は、必要最小限になるよう設定を検討してください。