セキュリティグループ活用#
本構成はFJcloud-O 東日本/西日本リージョン3向けとなります。
要求事項#
セキュリティを高めるための最も基本的なパターンです。
以下の要求事項に対応します。
- FJcloud-Oで構築したシステムのセキュリティを高めたい
対応するデザインパターン概要#
FJcloud-Oでは、システムのセキュリティを高める機能として、セキュリティグループという機能が提供されています。
セキュリティグループでは、仮想サーバに接続されたポートに対しIPv4のパケットフィルタリングを行うことが可能です。
セキュリティグループの特徴は以下の通りです。
特徴 | 説明 |
---|---|
設定/変更が容易 | 1つのセキュリティグループに、複数のルールを設定することができます。1つのポートに設定されたセキュリティグループのうち、どれか1つでもルールにマッチしたパケットは通信が許可され、それ以外の通信は遮断されます。 (ホワイトリスト方式、OR条件) |
管理が容易 | セキュリティグループは、仮想サーバ等を作成する際に設定します。仮想サーバ等へ設定する際は、1つの仮想サーバに複数のセキュリティグループを設定可能です。これにより、用途に応じてセキュリティグループを割り当てるといった使い方が可能となります。 |
複雑な構成にも簡易に対応 | セキュリティグループは、ネットワークの階層がフラットでも、複数階層でも構成可能です。また、同一リージョン内であれば、別のアベイラビリティゾーンにまたがって使用することが可能です。 |
以下では、セキュリティグループを利用した最も基本的なパターンとして、フラットなネットワークでセキュリティを向上させる実装を例示します。
構造 (イメージ図)#
実装サンプル#
上記の構造に則して、以下の設定例で作成します。
アクセス元のセキュリティグループ/サーバ | プロトコル | アクセス先のセキュリティグループ/サーバ | 接続 |
---|---|---|---|
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 からのみアクセス可能です。 - 仮想サーバ作成の実装手順は インターネット接続パターンの仮想サーバ作成例 を参照してください。
メリット・効果#
セキュリティグループを利用した場合のメリット・効果は以下の通りです。
- パケットフィルタリングの設定/変更/管理が容易なため、構築/運用コストを抑制可能
- パケットフィルタリングの設定/変更が、個々の仮想サーバ等への設定/変更とならず、 当該セキュリティグループへの設定/変更だけで完了するため、設定/変更が容易
- パケットフィルタリングをグルーピングして管理できるため、管理が容易
- セキュリティグループの設定と仮想サーバに対するセキュリティグループの割り当ては別々の処理のため、仮想サーバの増減の際にセキュリティグループの設定変更は不要
- フラットなネットワークから、複数階層のネットワーク、アベイラビリティゾーンをまたがった構成など、複雑な構成でも簡易に設定可能
注意事項#
- 本パターンは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
そのため、同じセキュリティグループ内で通信を行う設定は、必要最小限になるよう設定を検討してください。