Azureリソース作成時にタグ追加を強制する方法

Azure を継続的に利用していると、「誰が・何の目的で作ったリソースなのか分からない」「コスト管理で部署別に集計できない」といった課題に直面します。その原因の多くは、リソースタグが適切に付与されていないことです。

タグはコスト管理、運用管理、ガバナンスの要となる重要なメタデータですが、運用ルールだけで強制しようとしても、作成者の漏れや認識不足により形骸化しがちです。

本記事では、Azure Policy を利用して、リソース作成時に必須タグの付与を強制する方法について解説します。

Azure Policyとは

Azure Policy は、Azure 環境内のリソースが組織のルールに準拠しているかを評価・制御するサービスです。

Azure Policy は「定義(Policy Definition)」と「割り当て(Assignment)」で構成され、Deny、Audit、Append、DeployIfNotExists といった 効果(Effect) により、リソース作成・変更時の挙動を制御します。

今回はその中でも 「Deny」効果 を使い、必須タグがないリソース作成を拒否する実装を行います。

前提条件

  • Azureサブスクリプションをスコープに「Owner」または、「Policy Contributor 」権限が付与されていること
  • Azure Portalへアクセスが可能なこと

実装概要

本記事では、特定のサブスクリプションに Azure リソースを作成・更新する際、「CostCenter」タグが付与されていない場合はデプロイできないように Azure Policy を使って制御します。

実装の流れは以下の 3 ステップです。

  1. リソース作成時にタグを強制するカスタムポリシー定義を作成
  2. サブスクリプションスコープにポリシーを割り当て
  3. 実際にリソースを作成して動作確認

以降、それぞれの手順を順に説明します。

実装手順

Azure Policy定義の作成

リソース作成時にタグを強制するカスタムポリシー定義を作成します。

  1. Azure Portal(ホーム - Microsoft Azure)にアクセスし、検索バーで「ポリシー」と検索します。

  2. 左ペインから「定義」を選択し、「+ポリシー定義」をクリックします。

  3. 以下パラメータを入力し、「保存」をクリックします。
    定義の場所 適用するサブスクリプションを選択
    名前 任意(deny-resource-without-costcenter-tag)
    説明 CostCenter タグが付与されていない Azure リソースの作成および更新を拒否します。コスト管理とガバナンスの徹底を目的としています。
    カテゴリ Tags
    ポリシールール

    {
      "mode": "All",
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "notEquals": "Microsoft.Resources/subscriptions/resourceGroups"
            },
            {
              "field": "[concat('tags[', 'CostCenter', ']')]",
              "exists": false
            }
          ]
        },
        "then": {
          "effect": "deny"
        }
      }
    }

Azure Policyを割り当てる

作成したAzure Policyを割り当てます。

  1. 「ポリシーの割り当て」をクリックします。

  2. 全て規定値のまま「レビューと作成」タブまで移動し、「作成」をクリックします。

動作確認

リソースを作成し、動作確認します。

  1. 「CostCenter」タグをつけずに、Azureリソース(本手順ではNSG)を作成する際にエラーとなることを確認します。

  2. タグを設定することで、エラーが解消することを確認します。

最後に

Azure Policy を使えば、「タグを付けるようにお願いします」といった運用ルール依存の管理から脱却できます。

まずは Audit で現状把握し、次に Deny で強制する、といった段階的導入もおすすめです。

クラウドガバナンスの第一歩として、Azure Policy によるタグ強制をぜひ検討してみてください。

執筆担当者プロフィール
和田 剣斗

和田 剣斗(日本ビジネスシステムズ株式会社)

業務では主にAzureに携わっています。趣味はサウナや資産運用です。最近はテントサウナにはまっています。

担当記事一覧