Azure Container Apps の送信トラフィックを Azure Firewall で保護する
今回見つけた下記の Microsoft ブログ記事。実は Azure Container Apps を使うかもしれない状況でもあり、すごーく興味があったので試してみました。
元となるネタは、下記の GitHub にて公開されているとのことです。
環境
- Windows 10
- WSL2 (Ubuntu 20.04)
- Azure CLI (2.53.0)
構築の流れ
大まかな流れを列挙していきますと、下記の通りとなっています。
- 各種変数の設定
- リソースグループの作成
- VNet の作成
- サブネットの作成
- FirewallSubnet の作成
- パブリック IP の作成
- Azure Firewall の作成と IP 設定
- Firewall ルールの作成
- デモ用のアクセス経路ルールの作成
- ルートテーブルの作成と ACA サブネットへの適用
- ACA コンテナーアプリ環境の作成
- デモ用のコンテナーアプリの作成
- 動作確認
流れを押さえたうえでコマンド群を読んでいくと、大変分かりやすいかと🤗
今回のキモは、Azure Firewall を作成し、Container Apps Environment は Azure Firewall を経由するようにルーティングした VNet と統合するように作成している点ですね。こうすることで、Container Apps からの送信トラフィックを Azure Firewall 経由にするように構成しています。
構築
GitHub の手順を参考に、デプロイ先のリージョン (location) を東日本 (japaneast) にしましたが、特に詰まるところもなく構築することができました。詰まったところ等があれば残したかったですが… 残念ですw
所要時間は概ね 30 分くらいでしょうか。なお、最初に「az login」でログインしておくことをお忘れなく。
動作確認
今回のデモでは、「icanhazip.com」および「www.microsoft.com」への HTTP / HTTPS アクセスで試験しています。
Azure Firewall ルールの設定上、「http://icanhazip.com」および「https://icanhazip.com」のみ通信可能であれば想定通り。
上記の通り、想定通りの結果となりました。
ブログ記事のように HTTPS だけを許可したい場合は、下記の Firewall ルールを作成する箇所の 'http=80'
をカットすれば良さそうですね。
# Just for demo purposes we'll also add icanhazip.com
az network firewall application-rule create \
-g $RG \
-f $FIREWALLNAME \
--collection-name 'demo' \
-n 'icanhazip' \
--source-addresses '*' \
--protocols 'http=80' 'https=443' \
--target-fqdns icanhazip.com \
--action allow --priority 202
まとめ
Azure Container Apps は周りでも少し聞くようになってきましたので、是非おさえておきたいサービス。
Azure Firewall を経由させることで、通信のガバナンス・監視などもできるのは嬉しいですね!
Discussion