Dome9でSecurityGroupを可視化してみた
はじめに
中山(順)です
AWS、特にVPCとそれをサポートするサービスの運用を続けていくと、セキュリティ的にゆるい設定がじわじわと増えていく、そんな光景ってよくあると思いませんか?
でもそれって、人間がやることだからしょうがないと思うんです、人間だもの。
とは言っても放置するわけにも行きませんのでリスクを増加させないために設定の棚卸しをして不要な設定を削除したり適切な設定に修正したりすると思います。 が、規模が大きくなると人力では限界があります。 そのような状況の解決をサポートする手段の一つとして、Dome9というサービスを試す機会があったので実際にやってみました。
Dome9とは?
Dome9は、パブリッククラウドのセキュリティに関する設定を評価し、適切な設定への是正や維持を支援してくれるクラウドサービスです。
AWSに限らず、AzureおよびGCPをサポートしており、複数のサービスを併用している場合でも同じインターフェースで統制を行うことが可能です。
セキュリティに関する設定の評価を行ってくれるサービスはいろいろありますが、Dome9にはセキュリティグループの可視化という特徴的な機能があります。 今回はこの機能を実際に利用してみました。
やってみた
今回はセキュリティグループの可視化機能を試してみたいと思います。
初めてのDome9に関する記事のため、Dome9のアカウントにAWSアカウントを追加するところからやっていきます。 サインアップの手順については割愛します。
アカウントの追加
Dome9を利用するには、Dome9に対して認証情報を与える必要があります。 Dome9ではIAMロールを利用して認証情報を付与することが可能です。
まず、アカウント追加のメニューを選択します。
次にオペレーションモードを選択します。 Dome9では、設定を評価するだけでなく、設定を保護(不正な変更を元に戻す)することが可能です。 保護機能を利用する場合には、「完全保護モード」を選択します。
次に、ウィザードで指定されたポリシーを作成します。指定されたとおりの手順で管理ポリシーを作成してください。
次にIAMロールの作成を行います。 AWSアカウントIDおよび外部IDが指示されますので、指示に基づいてロールを作成します。 ロールを作成したら、IAMロールのARNを設定して次に進みます。
ロールに対する委任先AWSアカウントIDおよび外部IDの設定は以下のようになります。
また、このロールには先に作成した2つのポリシーと併せてAWS管理ポリシーである"SecurityAudit"および"AmazonInspectorReadOnlyAccess"を付与します。
作成したロールのARNは、ロールの詳細画面から確認することが可能です。
設定が完了すると、以下の画面が表示されます。
追加されたアカウントは、一覧で表示されます。
ネットワークの可視化
それでは、本題であるSecurity Groupの可視化機能を使ってみたいと思います。
その前に、可視化する対象が必要になりますので、今回はCloudFormationのサンプルテンプレートをてきとうにプロビジョニングしてそれを可視化してみたいと思います。今回は"LAMP Stack"(マルチAZ)を利用してみたいと思います。
テンプレートはこちらです。
このサンプルテンプレートでは、以下のリソースが作成されます。
- ロードバランサー
- Loadbalancer
- Listener
- Target Group
- Webサーバー
- AutoScaling Group
- Launch Configuration
- Security Group
- DBサーバー
- DB Instance
- Security Group
また、このテンプレートではロードバランサー自体に付与されるSecurity Groupは指定したVPCのデフォルトSecurity Groupであるため、このSecurity Groupに任意のIPアドレスからHTTPでアクセスできるように設定を追加してみました。併せて、当初より設定されていた自己参照ルールを削除しました。
では、可視化された結果を確認してみましょう。
可視化の機能は「Clarity」のメニューから確認することができます。
すると、可視化対象のVPCを選択する画面が表示されます。
左側のメニューで、アカウントやリージョンを指定できます。 絞り込むと中央にVPCが表示されるため、対象のVPCを選択します。今回、リソースのプロビジョニング先としてデフォルトVPCを指定したため、それを指定します。 最後に、右上の「セキュリティグループの表示」をクリックします。
そして表示された結果がこちらです。
表示された図の見方を確認していきます。
指定したVPCを以下の4つのレイヤーに分けて表示してくれます。
- 外部ゾーン
- DMZ
- 一部オープン
- 内部ゾーン
外部ゾーンは、Security Groupのソースに設定されている外部ネットワーク/ホストが表示されています。 ここにには、特定のネットワーク/ホストとあわせて任意のネットワーク (Internet / All Access) も含まれます
DMZは、Internetからアクセス可能なセキュリティグループが表示されます。 今回はロードバランサーに割り当てられたセキュリティグループが表示されています。
一部オープンは、特定の外部ネットワーク/ホストからアクセス可能なセキュリティグループが表示されます。 今回はWebサーバーに割り当てられたセキュリティグループが表示されています。
内部ゾーンは、VPC内のリソースに限ってアクセスが許可されているセキュリティグループが表示されます。 今回はDBサーバーに割り当てられたセキュリティグループが表示されます。
このようにインターネットへの露出度に応じて各レイヤーにセキュリティグループが表示されます。
次により詳細な設定を確認していきます。
セキュリティグループをクリックして選択すると、Source / Targetとなっているリソースとの関連がハイライトされます。 Sourceはオレンジで、Targetは水色で表示されます。 また、選択したセキュリティグループの詳細が画面左側に表示されます。 このように、インターネット上に任意のネットワークおよびホストからHTTPによるアクセスが可能なセキュリティグループがALBに割り当てられており、そのALBは背後のWebサーバーにアクセスできることがわかります。
それ以外のセキュリティグループについても同様に「どこから」「どこへ」「何の」通信が可能かを確認することができました。
まとめ
このように、この機能を利用することで公開の度合いや公開先が正しいかを確認でき、VPC内部でのアクセス許可が妥当かを確認することができそうです。
今回は非常にシンプルな環境の可視化だけを行いました。 VPC Peeringもサポートしていたり、外部ネットワーク/ホストに名称を設定する機能などがありますので、 大規模かつ複雑な環境でもわかりやすく表示できるか引き続き評価をしていこうと思います。
すぐに自身で評価してみたいという方は、公式サイトからサインアップすると2週間のトライアルを実施できますので、是非お試しください。
Dome9はこれ以外にもSecurity Groupの保護やコンプライアンスポリシーに基づいたAWS環境の評価も可能です。 コンプライアンスポリシーは、PCI DSSなどの監査に対応したポリシーも提供されています。 今回紹介した機能以外についても引き続き評価してブログにしていく予定です。
現場からは以上です。