😽

海外リージョンにデータが保存されるのでAzure Cloud Shellを禁止したい

2022/07/11に公開

はじめに

Azure Cloud Shellは、Azureポータル上から起動できる、Bash、またはPowershellで使用できるシェル環境です。
https://docs.microsoft.com/ja-jp/azure/cloud-shell/overview

Azure CLIやPowershellのAzモジュールも最新化され、最近ではbicepなども標準で使えるようになっており非常に便利に使えます。

Cloud Shellの困ったところ

Cloud Shellを起動すると、コンピュートリソースとしては都度確保されるのですが、ファイルを永続化するためにストレージアカウントが必要になります。
ストレージアカウントは自動で作成してくれるのですが、最寄りの「サポートされるリージョン」で作成されるため、日本からアクセスしている場合は「東南アジアリージョン(シンガポール)」にストレージアカウントが作成されます。

個人の利用では問題になることはありませんが、エンタープライズでの利用の場合は、「国外にデータを保管すべからず」というコンプライスルールがあることが、依然として多いと思います。
上に書いた通り、CloudShellを使うとシンガポールリージョンにファイルが保存されてしまうため、困ったことになるわけです。

というわけで、今回はこの「東南アジアリージョンのリソース利用を禁止」して「Cloud Shellを使えなくしちゃおう」という取り組みについてです。

Cloud Shellの防ぎ方

今回のように、リソースを作るリージョンを防ぐような要件には「Azure Policy」を使用します。
Azure Policyとは・・・?という方は、以前書いた記事をご覧いただければと思います。
https://zenn.dev/tomot/articles/f3b216b8f82ed1

さて、ここでは「リソースをデプロイして良いリージョン」を指定するPolicyを利用します。
このような基本的なPolicyは標準で用意されています。

Azure Policyの設定

Azureポータルにて、「ポリシー」>「割り当て」>「ポリシーの割り当て」とメニューを進めます。

「ポリシーの定義」の選択メニューを開きます。

「許可されている場所」を選択して、出てきたポリシーを選択(クリック)して保存(選択ボタンを押下)します。

パラメータタブで、許可するリージョンを選択して、保存します。今回の要件では、東日本/西日本リージョンですね。

以上です。簡単です。なお、ポリシーを割り当ててから効果が出るまで30分程度かかりますので、その点は注意です。

動作確認

では、CloudShellを起動させてみます。今回適用したポリシーは、「リソースの作成」を禁止するポリシーですので、「初めてCloud Shellを起動するときのStorage Account作成」に対して効果があります。

  • Azureポータル上、でCloud Shellボタンを押下します。

  • BashかPowershellか、シェルを選択します。慣れてて使いやすい方を選びます。

  • サブスクリプションを選択し「ストレージの作成」を押下します。

  • 結果

以下のようなエラーが出力され、ストレージアカウントの作成に失敗=Cloud Shellの立ち上げができません。

エラーの中身を見ると、先ほど割り当てしたポリシーや、何が原因で拒否されたのか垣間見えますね。

おわりに

今回はCloud Shellがデータを東南アジアリージョンに保存してしまう問題を防ぐ方法を紹介しました。
でも、Cloud Shellはとても便利なツールです。このまま「Cloud Shell使えません」では勿体無いですよね。
そこで次回は、データの保存先を東日本リージョンに変更する方法を紹介します。お楽しみに!

Discussion