この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
Azureは素早く簡単に高度なコンピューティング環境を構築することができるのが最大のメリットです。
しかし複数のメンバーが何の規則や制限ももなくリソースを作成、変更してしてしまうと、あとで統制を効かせる必要があっても影響範囲が広くて手を付けられなかったり、間違って必要なリソースを消してしまうなどの事故も発生してしまいます。
そもそもコンプライアンスに準拠しているかどうかのチェックを定期的に行うこと自体が非常に大きな手間です。
これを解決するため、Azureにはガバナンスの機能とサービスが用意されています。
https://azure.microsoft.com/ja-jp/solutions/governance/
Azure Policy
ポリシーベースの管理をあらゆるAzureサービスに対して実装できます。
多くのポリシー定義がビルトインで用意されており、例えば以下のような定義をリソースに割り当てることができます。
・作成するリソースに特定のタグを強制
・リソースの作成リージョンを東日本のみに制限
・リソースの変更を拒否
また、ポリシー定義はビルトインのものをカスタマイズすることも、1から作ることもできます。
そしてポリシーに違反したリソースについては、作成を拒否したり、auditログに記録したりなどのアクションをとることができます
ポリシー適用方法
1.ポリシー定義の作成
ビルトインのポリシー定義は検索で見つけることができます。
今回は「許可されている場所」のポリシー定義を使うことにします。
これは割り当てたリソースグループ配下において、リソースの作成リージョンを指定の場所に固定させるポリシーです。

2.ポリシーをリソース等に割り当て
「ポリシーの割り当て」を実行し、ポリシー定義を指定した範囲に割り当てます。
ここでは「ResourceGroup02」というリソースグループに、ポリシー:許可されている場所を割り当てました。
パラメータでは”許可されている場所”を”東日本”に指定しています。


3.評価の結果を確認する
ポリシーの「概要」から、割り当てたポリシー定義のステータスを確認できます。
“コンプライアンスの状態”が”未開始”から”準拠している”に変わったのを確認してください。

そのうえで、実際に「ResourceGroup02」にリソースを作成し、「ポリシー:許可されている場所」が正常に働くかを確認してみます。
仮想マシンを作成し、”地域”を”東日本”以外にして検証するとポリシーに違反しているため検証の時点でエラーとなりました。


“地域”を”東日本”にして再度検証すると検証に成功しました。


イニシアチブの適用
関連するポリシーをグループとしてまとめたものとして「イニシアチブ」というものが用意されています。
イニシアチブを用いると、関連した複数のポリシーを一括で適用できます。
PCI v3.2.1:2018に準拠したイニシアチブなどがビルトインで含まれているので非常に便利です。

Azure Blueprints
Azure BlueprintsはAzure Policyを再利用・再配布可能な形で定義できる機能です。
Azure Policyだけでは作成したポリシーを異なるサブスクリプションに適用するにはポリシーが多くなるほど手間が増えますが、ブループリントを使うと、定義したポリシー群を別のサブスクリプションに簡単に再配布を行うことができます。
ポリシー定義だけでなく、ロールの割り当てやリソースグループの作成、ARMテンプレートを使用した環境の構築まで可能です。
Bluepritsの適用方法
1.ブループリントの作成
まずはブループリントの名前を決定し、割当先となるスコープを決めます。

2.成果物の追加
成果物として、「ポリシーの割り当て」、「ロールの割り当て」、「ARMテンプレート」、「リソースグループ」が選択できます。
今回はいくつかのポリシーを割り当ててみました。

3.ブループリントの発行
編集したブループリントを保存したら、「発行」します。
ブループリントは統制を効かせていく中で都度カスタマイズしていくことになるためバージョン管理ができるようになっています。

4.ブループリントの割り当て
発行したブループリントをサブスクリプションに割り当てます。

ブループリントはサンプルが豊富に公開されています。
これらをカスタマイズして、予めガバナンスを効かせた環境を作った上でリソースを作っていくと良いでしょう。
