0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Policy を使って特定の VM イメージのみデプロイを許可する

Last updated at Posted at 2024-08-20

こんにちは、アーキテクトのやまぱんです。

今回は Azure Policyを使って、特定の Publisher の Azure VM のみのデプロイを許可する という設定をしてみたいと思います。

補足コメントや質問、いいね、拡散、是非お願いします🥺!
間違ってたら優しく教えてください!

Azure Policy とは

一言でいえば、"Azure内に存在するリソースを、ビジネス上のルールに準拠するよう一括管理できるサービス" です。特定の操作を禁止/許可するといったような使い方ができます。
Azure Portal では 検索窓で "Policy" から確認することができます。

image.png

Azure Policy の定義は json 形式で定義されています。

やりたいこと

特手の VM のみのデプロイを許可したい。
今回は例として、イメージのデプロイを拒否し、例外として MS SQL の入った Windows Server のイメージのみを許可するようにしてみます。
Azure Portal で見るとこれです。
image.png

手順

発行元ID の確認

まず、以下のように "使用状況情報とサポート" から 発行元ID を確認します。
image.png

今回の例だと、[microsoftsqlserver] です。

ポリシーのデプロイ

  • ポリシーを作成する
    ポリシー → 作成 → 定義 → "+ ポリシー定義" より、新規でポリシーを作成します。
    image.png

今回は以下のように設定する

image.png
ポリシールールの詳細は後述。

ポリシールールの詳細

Azure Policy で イメージの発行元を制限
{
  "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:
許可されたイメージの発行元のリストをパラメータとして定義しています。

ポリシーの割り当て

  • ポリシーの割り当て
    image.png

  • スコープ を設定する
    今回は以下の用に特定のリソースグループを選択する。
    image.png

  • パラメータを設定する(許可する発行元を定義する)
    メモしていた発行元の ”microsoftsqlserver” をここで利用する。
    配列の形式で記載する必要があるので、["microsoftsqlserver"] で記入する。
    image.png

その他の "修復"、"非準拠メッセージ" はデフォルトのまま進める。

以下でデプロイ
image.png

挙動確認

許可していないイメージ

想定通り、ポリシーが効いてデプロイができなくなっています。
image.png

許可したイメージ

こちらはポリシーのメッセージが出ていません。
image.png

参考

  • Azure Policy とは

以上です🙌

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?