要求事項
K5で構成したシステムのセキュリティを高めたいといった要求事項に対応するパターンです。
セキュリティを高めるためのもっとも基本的なパターンとなります。
対応するK5デザインパターン概要
K5では、システムのセキュリティを高める機能として、セキュリティグループという機能が提供されています。
セキュリティグループでは、仮想サーバに接続されたポートに対してパケットフィルタリングを行うことができます。
セキュリティグループには、以下の特徴があります。
設定/変更が容易 | 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アクセス元サーバと接続するセキュリティグループの作成(ポータル)
(1) グループの作成
- K5ポータルにログインし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.内部用のセキュリティグループの作成(ポータル)
(1) グループの作成
- 「ネットワーク」⇒「セキュリティグループ」画面で、「+」をクリックします。
- 以下を入力し、作成をクリックします。
項目 | 必須 | 設定値 | 内容 |
---|
セキュリティグループ名 | 必須 | "SG_internal" | セキュリティグループ名を入力してください。 |
説明 | 任意 | "SG_internal" | セキュリティグループに対する説明事項を入力してください。 |
(2) ルールの編集
- 「ネットワーク」⇒「セキュリティグループ」画面で、
作成したセキュリティグループ(SG_internal)の「アクション」から「ルール管理」をクリックします。
- 「セキュリティグループルール管理」画面で、セキュリティグループの新規作成時に設定されるデフォルトの2つのルールを削除します。
デフォルトの2つのルール (送信方向:すべてOK) の削除については インターネット接続パターン もあわせて参照してください。
- 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
- 以下のルールを追加します。
ルール | 方向 | オープン ポート | ポート | 接続先 | セキュリティグループ または CIDR | IPバージョン |
---|
カスタムTCPルール | 受信 | ポート | 22 | セキュリティ グループ | SG_external | IPv4 |
3.共通用のセキュリティグループの作成(ポータル)
(1) グループの作成
- 「ネットワーク」⇒「セキュリティグループ」画面で、「+」をクリックします。
- 以下を入力し、作成をクリックします。
項目 | 必須 | 設定値 | 内容 |
---|
セキュリティグループ名 | 必須 | "SG_common" | セキュリティグループ名を入力してください。 |
説明 | 任意 | "SG_common" | セキュリティグループに対する説明事項を入力してください。 |
(2) ルールの編集
- 「ネットワーク」⇒「セキュリティグループ」画面で、
作成したセキュリティグループ(SG_common)の「アクション」から「ルール管理」をクリックします。
- 「セキュリティグループルール管理」画面で、セキュリティグループの新規作成時に設定されるデフォルトの2つのルールを削除します。
デフォルトの2つのルール (送信方向:すべてOK) の削除については インターネット接続パターン もあわせて参照してください。
- 「セキュリティグループルール管理」画面で、「ルールの追加」ボタンをクリックします。
- 以下のルールを追加します。
ルール | 方向 | オープン ポート | ポート | 接続先 | セキュリティグループ または CIDR | IPバージョン |
---|
カスタムTCPルール | 送信 | ポート | 80 | CIDR | 169.254.169.254/32 | IPv4 |
4.仮想サーバの作成(ポータル)
- セキュリティグループ「SG_external」と「SG_common」に所属する仮想サーバ1 を作成します。
仮想サーバ1 は、sshアクセス元サーバ からのみアクセス可能です。
- セキュリティグループ「SG_internal」と「SG_common」に所属する仮想サーバ2 を作成します。
仮想サーバ2 は、仮想サーバ1 からのみアクセス可能です。
- 仮想サーバ作成の実装手順は インターネット接続パターンの仮想サーバ作成例 を参照してください。
メリット・効果
セキュリティグループを利用した場合のメリット・効果は以下の通りです。
- パケットフィルタリングの設定/変更/管理が容易なため、構築/運用コストを抑制可能
- パケットフィルタリングの設定/変更が、個々の仮想サーバ等への設定/変更とならず、
当該セキュリティグループへの設定/変更だけで完了するため、設定/変更が容易 - パケットフィルタリングをグルーピングして管理できるため、管理が容易
- セキュリティグループの設定と仮想サーバに対するセキュリティグループの割り当ては別々の処理のため、
仮想サーバの増減の際にセキュリティグループの設定変更は不要 - フラットなネットワークから、複数階層のネットワーク、アベイラビリティゾーンをまたがった構成など、
複雑な構成でも簡易に設定可能
注意事項
- 本パターンは2017年6月時点のK5(IaaS)で動作検証しています。
- セキュリティグループは、仮想ルータおよび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 |
- ただし、上記の "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
そのため、同じセキュリティグループ内で通信を行う設定は、
必要最小限になるよう設定を検討してください。
その他
特にありません。
関連資料
(2017年6月検証)