Amazon VPCのセキュリティ基本
この記事では、AWS(Amazon Web Services)上のネットワーク系サービスであるAmazon Virtual Private Cloud (以下、VPC)に焦点を当て、セキュリティをどう設定するかを判りやすく解説していきます。VPC は、AWS上に作成できるプライベート仮想ネットワーク空間です。AWSアカウント内に専用のネットワークを作成し、このネットワーク内にAmazon EC2などのAWSリソースを配置します。
1つのVPCを論理的なまとまりとして分離でき、複数のVPC間の接続も可能です。AWSのセキュリティの基本はどうやってVPCを守るかということになります。
AWSのセキュリティグループとは?
セキュリティグループは、VPC(AWSネットワーク)上で通信制御をするファイアウォール機能です。
サーバやロードバランサー毎に立ちはだかる壁であり、IPや通信プロトコル単位、もしくは、VPC内同士での通信であれば通信元セキュリティグループのIDを指定して制御できます。
基本的な挙動は下記の通りとなります。
- 設定はホワイトリスト方式となり、必要な通信を許可していく形となります。拒否指定はできません。
- ステートフルであるため、許可された通信の戻りトラフィックは設定として明示する必要がありません。
- インバウンド(サーバに入ってくる通信)とアウトバウンド(サーバから出ていく通信)で分けてルールを設定します。
- IPと通信プロトコルの組み合わせで制御可能です。
- IPの代わりに、通信元セキュリティグループのIDを指定することも可能です。
- サーバは複数のセキュリティグループを適用することが可能です。(適用できるセキュリティグループ数の制限があります)
デフォルトのVPCセキュリティグループ
VPC作成時「default」という名前のセキュリティグループが1つ作成されます。EC2インスタンス作成時、適用するセキュリティグループを新規作成しない場合に適用されます。
デフォルトのセキュリティグループの設定内容は下記の通りになります。
- 同じセキュリティグループを適用したインスタンスからのみ全てのインバウンド通信を許可
- アウトバウンド通信は全て許可
このデフォルトセキュリティグループをベースに意図した設定にして運用する事も可能ですがあまり推奨されません。上述の通り、状況によってデフォルトセキュリティグループが適用されるケースが出てきてしまうため、意図せずサーバ間で通信許可されてしまう恐れがあるためです。
推奨としては、都度、サーバ用途毎にセキュリティグループを作成し、デフォルトセキュリティグループを利用しない事がベストです。なお、このデフォルトセキュリティグループは削除ができません。
デフォルトセキュリティグループに設定済のルールを削除して、万が一適用されてしまうケースがあっても、意図しない通信許可をしないようにしておきましょう。
AWSを安心、安全に利用するスタイルズのAWSセキュリティサービスはこちら→
セキュリティグループとネットワークACLの比較
VPCのセキュリティ設定としては、セキュリティグループの他にネットワークACLが存在します。初学者の方にはこれらの違いや使い分けが分かりにくいかと思います。
下記はそれぞれの仕様の違いを表したものです。
セキュリティグループ
- EC2インスタンス単位で適用
- ホワイトリスト方式(許可設定のみを指定)
- ステートフル(戻りトラフィックのルールは不要)
- 全てのルールが適用される
- セキュリティグループのIDを指定できる
ネットワークACL
- サブネット単位で適用(同一サブネット内の通信は制御できない)
- ブラックリスト方式(許可/拒否双方指定)
- ステートレス(戻りトラフィックも許可設定する必要がある)
- 指定順通りのルールが適用される
- セキュリティグループのIDを指定できない
上記を見ると、細かい単位で柔軟に制御できるのはセキュリティグループとなるので、ネットワークACLは全通信を許可し、セキュリティグループのみで制御をすることが一般的に多いのです。細かな通信制御が求められるケースでは、ネットワークACLも含めて管理することもありますが、運用管理の負荷が高くなりがちですなので、運用面の考慮をした上で要否を決めると良いでしょう。ネットワークACL、セキュリティグループ両方で細かいを設定をしていると両方の設定を十分に理解しないと正しい変更するのが面倒になりがちです。
ただネットワークACLは唯一明示的な拒否設定ができるので、サブネット単位でブラックリスト的なIPを拒否するようなケースでは利用すると良いでしょう。
セキュリティグループの設定方法
セキュリティグループを新規で作成し、インバウンドルールを1つ作成する手順を記載しました。これから設定される方は参考にしてください。
なお、手順はAWS管理画面にログイン後の状態での説明となります。
- 画面左上の「サービス」を選択し、一覧を表示する。
一覧から「VPC」を選択する。 - 左メニューから「セキュリティグループ」を選択する。
- 画面右上の「セキュリティグループを作成」ボタンを選択する。
- 下記内容を参考に入力し「セキュリティグループを作成」ボタンを選択する。
■基本的な詳細
◇セキュリティグループ名
→ 今後の利用状況を踏まえ、一意の内容が伝わる命名規則が良いでしょう。
弊社では下記のような命名規則にすることが多いです。
(システム名)-(AWSリソース種別)-(AWSリソース)-(環境)
例)xxxシステムのAPサーバステージング環境向けのセキュリティグループ(sg)
xxxsystem-sg-ap-stg
◇説明
→ これは表示上だけで使われるもので、日本語も記載できるので、分かりやすい内容で記載しましょう。
◇VPC
→ 利用可能なVPCが表示されますので、対象のものを選択します。
◇インバウンドルール
→ 「タイプ」「ソース」から、許可する通信のプロトコルとIPを指定します。
→ 「説明」はオプションなので記載必須ではありませんが、パッと見て分かりにくい通信内容は説明を入れておくと良いでしょう。
例えば、IP指定して制御する際は、どこのIPなのかを明示しておくと良いでしょう。
AWSを安心、安全に利用するスタイルズのAWSセキュリティサービスはこちら→
まとめ
今回の話の重要事項をまとめると下記の通りです。
- セキュリティグループは、VPC(AWSネットワーク)上で通信制御をするファイアウォール機能である。
- デフォルトのVPCセキュリティグループが存在するが、別途新規作成することが推奨される。
- VPCセキュリティ機能としてセキュリティグループとネットワークACLが存在する。
ここまで、AWS上のネットワーク系サービスであるVPCに焦点を当て、セキュリティをどう設定するかをセキュリティグループやネットワークACLの特徴を説明しながらお話してきました。セキュリティはクラウドを利用する上で最重要な課題となりますので、経験のあるベンダーとよく相談しながら活用してください。
弊社ウェビナーでもわかりやすく解説している動画がありますので、ぜひご覧ください(こちらのページより「30分でわかる! AWS セキュリティグループ設定」をお申し込みください)。