CDP:OnDemand NATパターン
メンテナンス時のインターネット設定変更
目次 |
解決したい課題
セキュアなシステムでは、各サーバーのインターネットへのアクセス(アウトバウンド)を禁止していることが多い。その場合、OSパッケージのアップデートなど、インターネットへアクセスする必要があるメンテナンス作業ができなくなる。解決方法としてインターネット接続用のNATを用意し、NAT経由でインターネットアクセスできるようにする方法がある。各サーバーがインターネットにアクセスできる条件を、NATでコントロールする。しかし、そもそもNATが必要なのはOSパッケージのアップデートなどのメンテナンスの期間のみで、それ以外の期間は必要ではないため、NATリソースの大半の時間はアイドル状態であり、無駄となる。
クラウドでの解決/パターンの説明
従来、サーバーなどは恒久的に利用し続けることが前提となっていた(たとえ利用していなくても購入費や運用費はかかってしまう)。一時的に利用するサーバーを一時的な利用料金で運用することは非常に難しい状態であった。しかしクラウド上の仮想サーバーは利用時間で課金されるものが多い。そこでNATを仮想サーバーで実現し、OSパッケージのアップデートなどのメンテンス時だけ起動するようにしておけば、コスト効率がよくなる。さらにクラウドでは仮想サーバーの起動や停止を行うAPIも容易されていることが多い。これらのAPIを利用してNAT(仮想サーバー)の起動と停止を自動化することも可能である。
実装
クラウド上で仮想ネットワーキングを行えるVPC(仮想プライベートクラウド)には、NATインスタンスを作成する機能がある。また、サブネットごとにルーティングを設定する機能もあり、ルーティングを適切に設定することでサブネット内のEC2がNATインスタンスを経由するようにできる。
- VPC上でNATインスタンスを用意しておく。
- メンテナンス開始時(インターネットへのアクセスが必要な時)にNATインスタンスを立ち上げ、サブネットのルーティングでNATインスタンスの設定を行う。
- メンテナンス終了時、ルーティングからNATインスタンスの設定を削除し、NATインスタンスも停止/削除する。
構造
利点
- メンテナンスしていないときは、内部からインターネットにアクセスする経路がないので、システムをセキュアに保つことが可能。
- NATインスタンスは利用するときのみ稼働させるので、コスト削減につながる。
注意点
- メンテナンス時はNATインスタンスの立ち上げからサブネットのルーティングの調整まで行うので、オペレーションミスが起こらないようにスクリプトで自動化、もしくは Cloud Formation のテンプレート化すると安全であり、素早く用意もできる。[関連ブログ 1]