こんにちは、アーキテクトのやまぱんです。
今回は Azure Policyを使って、特定の Publisher の Azure VM のみのデプロイを許可する という設定をしてみたいと思います。
補足コメントや質問、いいね、拡散、是非お願いします🥺!
間違ってたら優しく教えてください!
Azure Policy とは
一言でいえば、"Azure内に存在するリソースを、ビジネス上のルールに準拠するよう一括管理できるサービス" です。特定の操作を禁止/許可するといったような使い方ができます。
Azure Portal では 検索窓で "Policy" から確認することができます。
Azure Policy の定義は json 形式で定義されています。
やりたいこと
特手の VM のみのデプロイを許可したい。
今回は例として、イメージのデプロイを拒否し、例外として MS SQL の入った Windows Server のイメージのみを許可するようにしてみます。
Azure Portal で見るとこれです。
手順
発行元ID の確認
まず、以下のように "使用状況情報とサポート" から 発行元ID を確認します。
今回の例だと、[microsoftsqlserver] です。
ポリシーのデプロイ
今回は以下のように設定する
ポリシールールの詳細
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"in": [
"Microsoft.Compute/virtualMachines",
"Microsoft.Compute/VirtualMachineScaleSets"
]
},
{
"not": {
"field": "Microsoft.Compute/imagePublisher",
"in": "[parameters('listOfAllowedimagePublishers')]"
}
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {
"listOfAllowedimagePublishers": {
"type": "Array",
"metadata": {
"displayName": "Allowed image publishers",
"description": null
}
}
}
}
以下簡単な解説。
ポリシーの構造:
- mode: "All"
このポリシーは、リソースグループやサブスクリプションに関係なくすべてのリソースに適用されます。policyRule:
- if:
すべての条件が満たされている場合にポリシーが適用される条件部分です。-- "field": "type": リソースの種類が仮想マシンか仮想マシンスケールセットであること。
-- "not": {"field": "Microsoft.Compute/imagePublisher", "in": "[parameters('listOfAllowedimagePublishers')]"}: イメージの発行元が許可されたリストに含まれていないこと。
- then:
条件が満たされた場合に実行されるアクションを定義します。-- "effect": "deny": リソースの作成や更新を拒否します。
- parameters:
-- listOfAllowedimagePublishers:
許可されたイメージの発行元のリストをパラメータとして定義しています。
ポリシーの割り当て
-
パラメータを設定する(許可する発行元を定義する)
メモしていた発行元の ”microsoftsqlserver” をここで利用する。
配列の形式で記載する必要があるので、["microsoftsqlserver"] で記入する。
その他の "修復"、"非準拠メッセージ" はデフォルトのまま進める。
挙動確認
許可していないイメージ
許可したイメージ
参考
- Azure Policy とは
以上です🙌