Solarisコンテナでセキュリティを強化:OpenSolarisで始めるブログサーバ構築(3)(2/4 ページ)
この連載では、サーバOSとして十数年発展してきた「Solaris」をオープンソース化した「OpenSolaris」を紹介し、ブログサーバ「Roller」と組み合わせて運用していくうえで有用なさまざまな知識を紹介していきます。(編集部)
Solarisコンテナの構造
さて、Solarisコンテナに話を戻しましょう。
ゾーンには2つの種類(大域ゾーンと非大域ゾーン)が存在します。大域ゾーンは、仮想化されていない、通常のSolarisにログインした環境と同一のゾーンです。非大域ゾーンが、これまで説明してきた仮想化されたSolaris実行環境になります(以後、明記しない限り「ゾーン」と記した場合は非大域ゾーンを意味します)。
ゾーンはzonecfgコマンドを用いて構成します。構成が完了すると、/etc/zonesディレクトリ下に生成したゾーン名でXML形式の構成ファイルが作成されます。
ゾーン固有のファイルは構成時に指定したファイルパス下に配置されます。必要に応じて、大域ゾーンのファイルシステムを共有することが可能です。バイナリパッケージなどを共有すれば、冗長なディスク空間を消費させずに済みます(図3)。
ゾーンの管理はzoneadmコマンドを用います。ゾーンのインストール、ブート、シャットダウン、アンインストールなどが行えます(図4)。また、ゾーン環境へのログインにはzloginコマンドが提供されています。
マルチプロセッサ構成のシステムにおいて、複数のCPUを1つの論理的なCPUとして定義し、それをリソースプールとして各ゾーンに割り当てることができます。リソースプールは、CPUの負荷を分散する機能を持っています。あらかじめ定義したスケジュールに従ってリソースを定期的に配分したり、負荷状況に応じてその場で動的にリソース配分を変更することも可能です(図5)。
Solarisコンテナを用いたApache Roller導入に挑戦!
一通りSolarisコンテナの説明が終わったところで、早速、Apache Rollerを用いて実践してみましょう。
利用するソフトウェアのバージョンは前回と同じですが、Solarisコンテナの特徴の1つ、「高いセキュリティ」を生かせるように、ユーザー情報やブログデータを保存するデータベースを独立したゾーンで構成します。また、ネットワーク構成も排他的IP(注1)タイプを用いて独立させ、外部ネットワークから直接データベースにアクセスできないようにしました。
今回の事例ではリソースプールやネットワークを排他的IPに設定していますが、サーバハードウェアの構成に応じてリソースプール設定を省略したり、あるいはネットワークを共有IPにすることも可能です。手元のパソコンでも簡単に試せますので、ぜひ試してみてください。
以下に、今回の構成概略図を示しました。
●大域ゾーン
ホスト名 | pig |
---|---|
NIC | bge0 10.0.0.1 ←プライベートIPアドレスを任意に指定 |
ネームサービス | Files ※グローバルゾーンはネットに接続されていなくてもよいですが、リモートメンテナンス用に設定してあります。 |
●Blogゾーン
ゾーン名 | blog_zone |
---|---|
ホスト名 | dog |
NIC | nge0 AAA.BBB.CCC.DDD ←公開しているグローバルIPアドレスを指定 |
NIC | nge1 10.0.0.2 ←プライベートIPアドレスを任意に指定 |
ネームサービス | Files |
リソースプール | pool_blog_zone |
●DBゾーン
ゾーン名 | db_zone |
---|---|
ホスト名 | cat |
NIC | bge1 10.0.0.3 ←プライベートIPアドレスを任意に指定 |
ネームサービス | Files |
リソースプール | pool_db_zone |
構成のポイントは以下のとおりです。
- サーバのCPUリソースプールを設定
- Apache RollerとRoller Databaseを別々のコンテナにて実装
- 排他的IPタイプを用いる
- ネットワークサービスを最小化
なお今回は、OpenSolarisの機能を解説することに焦点を置いているので、構築に用いるTomcat、Apache RollerとMySQLの個別の設定詳細については、前回からの変更点以外は割愛します。また、個別のアプリケーションのセキュリティ対策などについても触れませんので、あらかじめご了承ください。
Copyright © ITmedia, Inc. All Rights Reserved.