今回は、PowerCLI を使用して VMware Cloud on AWS の ファイアウォールを管理する方法について解説します。ゲートウェイファイアウォールのルール作成に関する一連のコマンドを実行してみます。PowerCLI を活用すれば、定義済みルールの取得や一括定義なども容易に実行できます。ぜひご活用ください。
尚、ここでは操作する PC には VMware PowerCLI Community Modules が準備されており、API Token も取得されていることを前提として話を進めます。これらを準備する方法については、過去のブログ「PowerCLI の準備」と「API Token の作成方法」をご覧ください。
目次
VMware Cloud on AWS のファイアウォール
VMware Cloud on AWS の SDDC で使用できるファイアウォールは2種類あります。SDDC 内部の通信を制御する「分散ファイアウォール」と SDDC 内外の通信を制御する「ゲートウェイファイアウォール」です。今回は、ゲートウェイファイアウォールを対象とした PowerCLI の管理についてご紹介します。まずは、ゲートウェイファイアウォールの仕様について簡単におさらいしておきましょう。
VMware Cloud on AWS のネットワークは、SDDC のゲートウェイルータである「Edge Gateway Router」とクラウドサービスの管理ネットワークを集約するルータ「Management Gateway (MGW)」、ユーザーが使用するワークロードネットワークを集約するルータ「Compute Gateway(CGW)」で構成されています。ワークロードネットワークと SDDC 外部との通信は、Edge Gateway Router 上に実装される「コンピュートゲートウェイファイアウォール」で制御します(図1)。
図1 VMware Cloud on AWS のゲートウェイファイアウォール
ファイアウォールのルールは、SDDC の管理コンソールである「VMC コンソール」から一元的に定義します(図2)。ルールの概念や操作はオンプレミスで使用されている NSX-T と同じです。
図2 VMCコンソール画面サンプル(コンピュートゲートウェイ向けファイアウォールルール一覧)
ファイアウォールのルール定義で必要な要素が「グループ」です。グループとは、SDDC 内のオブジェクト(仮想マシンやネットワークセグメントなど)をグループ化する仕組みです(図3)。
図3 グループの概念
例えば、インターネットから HTTPS アクセスを許可する複数のサーバを一つのグループにまとめておき、ルールに適用する方法が考えられます。外部からアクセスさせたくないネットワークセグメントを一つのグループにまとめてルールに適用しても良いでしょう(図4)。仮想マシン名やタグなどの基準でもグループ化できるため、うまく活用すればルール管理の煩雑化を防ぐ効果が期待できます。
図4 定義されたグループの画面サンプル
グループを定義したらファイアウォールのルールを作成します。ルールの作成で必要な項目は、ルール名や送信元、宛先、サービス、適用先、アクション、ログの取得です。グループは、送信元と宛先を指定する際に使用されます(図5)。
図5 ファイアウォールのルール定義項目とグループ
前置きが長くなりましたが、ここまでが VMware Cloud on AWS に実装されているゲートウェイファイアウォールの基本概念です。ここから具体的な操作方法に話を移しましょう。
グループの定義
PowerCLI を試す環境として、VMware Cloud on AWS 上に仮想マシンを数台配置しました(図6)。インターネット経由で「管理 PC」から各種仮想マシンに対して SSH と HTTPS を許可するルールを作成します。尚、インターネットから NAT で仮想マシンへアクセスできるように構成しています。
図6 本稿で使用する環境
そこで、今回は3つのグループを作成します。1つ目は、グローバル IP アドレスを持つ管理 PC を「MgmtPC」というグループ名で作成します。2つ目は、アクセス先の仮想マシン「App-01」を「App-01」というグループ名で作成します。3つ目は、「WebServers」というグループを作成して仮想マシン名に ”web” という文字列を含むもの(Web-01〜03)を含めます(図7)。
図7 グループ化する対象オブジェクトとグループ化の基準
グループの作成には “New-NSXTGroup” コマンドを使います。早速、オプションを指定してグループを作成してみましょう(図8)。コマンドのオプションですが、”-Operator STARTWITH” は指定した文字列から始まるものという意味を持ちます。また、”-Operator CONTAINS” は指定した条件に合致するものを全て含めるという意味です。グループ化する基準が下記コマンドでそれぞれ異なる点に注目してください。
図8 New-NSXTGroup 実行画面
実行結果を確認してみましょう。“Get-NSXTGroup” コマンドでグループの一覧が取得できます(図9)。
図9 Get-NSXTGroup 実行画面
VMC コンソール画面でも作成された3つのグループが確認できます(図10)。
図10 作成されたグループの一覧
「WebServers」グループには、名前の文字列が ”Web” から始まる仮想マシンが登録されています(図11)。
図11 「WebServers」グループのメンバー
ファイアウォールルールの作成
次に、ファイアウォールのルールを作成します。ここでは「管理 PC」から「Web-01」への SSH アクセス、および「WebServers」への HTTPS を許可するルールを作成してみます(図12)。
図12 PowerCLI で作成するルール
ルールの作成には “New-NSXTFirewall” コマンドを使います。それぞれオプションを指定して実行します(図13)。
図13 New-NSXTFirewall 実行画面
実行結果を確認してみましょう。”Get-NSXTFirewall” コマンドでルールの一覧が取得できます(図14)。
図14 Get-NSXTFirewall 実行結果
VMC コンソールを見ると、正常にルールが作成されていることが確認できます(図15)。
図15 作成したファイアウォールルールの一覧
最後にアクセスログを確認してみましょう。ファイアウォールのログは vRealize Log Insight Cloud に記録されます。実際に管理 PC から Web-01 へ SSH でアクセスした後、vRealize Log Insight Cloud を開いて対象ログを検索するとファイアウォールルールで許可されていることが分かります(図16)
図16 vRealize Log Insight Cloud でのファイアウォールログの確認
まとめ
今回は、ゲートウェイファイアウォールを PowerCLI で管理する方法について簡単にご紹介しました。作成したグループやルールは変更や削除も可能です。ファイアウォールのルール管理は複雑になりがちですが、それを効率化する一つの方法としてご活用ください。
関連情報リンク
- ブログ「VMware {code} 〜 VMware のエキスパート向けのコミュニティサイト」
- ブログ「VMware Cloud サービス向け API Token の作成方法」
- ブログ「PowerCLI で VMware Cloud on AWS を管理する(VMware Cloud サービス編)」
- ブログ「PowerCLI で VMware Cloud on AWS を管理する(ネットワークセグメント編)」
- ブログ「VMware Cloud コンソールへのアクセス制御」
- ブログ「VMware Cloud on AWS の多要素認証 (MFA) サポート」
- ブログ「VMware Cloud on AWS の責任共有モデル」
- ブログ「VMware Cloud on AWS の REST API 管理で役立つ API Explorer」
- PowerCLI @ VMware Developers
- VMware PowerCLI Community Module @ GitHub
- PowerShell Gallery for VMC