開発/本番の切替えをConditionsで実装! Deep Securityマネージャ編 | アドカレ2013 : CFn #4

2013.12.04

ども、大瀧です。『アドベントカレンダー2013:AWS CloudFormationビッグバンテンプレート』4本目です。
昨日3日目は、ブログ職人しんやさんのPukiWiki編でした。

Trend Micro Deep Security Managerのテンプレート、作りました。

Trend Micro Deep Securityとは、トレンドマイクロ社が開発するAWS環境をサポートするホスト型のセキュリティ製品です。Deep Securityの機能や手動での構築方法をブログエントリーにまとめていますので、こちらもご覧ください(まだシリーズの執筆途中ですが)。

ホスト型とありますが、実際には各サーバーに配置するエージェントを管理するためのマネージャサーバーが必要です。今回のCloudFormationテンプレートは、このマネージャサーバーをワンタッチで構築するテンプレートです。

制約と特徴

CentOSのAMIを前提にしていますが、RHELでも恐らく動くと思います。ただし、標準AMIの場合はiptablesとSELinuxを無効にしたカスタマイズAMIを準備して、パラメータに指定してください。カスタマイズAMIを準備するのが面倒であれば、Packerテンプレートを用意しましたので、PackerでAMIを自動作成してもよいでしょう。Packerの操作方法は以下のブログエントリーを参考にしてください。

以下に起動時のパラメータを示します。

EnvType Deep Securityマネージャの環境を指定します。prodもしくはtestのどちらかを指定します。
DSMInstanceImageId Deep Securityマネージャのインスタンスの元になるAMI IDを指定します 例: ami-XXXXXXXX
AdminUsername Deep Securityマネージャの管理者ユーザー名
AdminPassword Deep Securityマネージャの管理者パスワード
VPC Deep SecurityマネージャインスタンスおよびRDS DBインスタンスを配置するVPCのID 例 : vpc-XXXXXXXX
VPCCIDR VPCのネットワークアドレス 例 : x.x.x.x/x
VPCDefaultSecurityGroup Deep Securityマネージャインスタンスに適用される、1つ目のセキュリティグループ 例 : sg-XXXXXXXX
SSHSecurityGroup Deep Securityマネージャインスタンスに適用される、2つ目のセキュリティグループ 例 : sg-XXXXXXXX
FrontendSubnet Deep Securityマネージャインスタンスを配置するVPCサブネットID 例 : subnet-XXXXXXXX
DBMasterUsername [prodのみ]RDSのマスターユーザー名
DBMasterPassword [prodのみ]RDSのマスターユーザーのパスワード
DBSubnetGroup [prodのみ]RDS DBインスタンスに設定する、DBサブネットグループ名
HostedZone Deep SecurityマネージャインスタンスのPublic IPにひもづくDNSレコード(ds.)に指定するRoute 53のゾーン名
KeyName Deep Securityマネージャインスタンスに適用される、SSHキーペア名

ポイントはEnvTypeのところで、CloudFormationで最近サポートされたConditionsを用いて、本番環境と開発環境が選択できるようになっており、以下が変わるようになっています。

開発環境(test)
データベースは、DeepSecurity組み込みのJava DB(Derby)で、マネージャEC2インスタンス内にインストール
本番環境(prod)
データベースは、RDS for OracleのDBインスタンスを立ち上げ、マネージャからの接続設定データベースへのデータ投入を自動で行います。

Deep Securityマネージャを起動

CloudFormationのスタックがCompleteになったあと10分程待ってからOutputタブのURL(https://Deep SecurityマネージャのDNS名:4119/)にアクセスしてみてください。独自ドメインの取得を前提にしていますが、EC2のDNS名でアクセスすることもできます。

dsm01

上記ログイン画面が表示されたら、Parametersに指定した管理者ユーザー名/パスワードを入力します。

開発環境(test)の場合は、Deep Securityマネージャのネットワークマップからローカルのデータベースを使用していることが確認できます。

dsm02

本番環境(prod)の場合は、ネットワークマップにRDS(Oracle)を使用していることが確認できます。

dsm03

まとめ

AWS CloudFormationビッグバンテンプレート4日目、いかがだったでしょうか。Conditions周りはGitHubのテンプレートを見ていただくと参考になるのでは、と思います。
明日5日目のテンプレートもご期待ください!!!