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 ステップです。
- リソース作成時にタグを強制するカスタムポリシー定義を作成
- サブスクリプションスコープにポリシーを割り当て
- 実際にリソースを作成して動作確認
以降、それぞれの手順を順に説明します。
実装手順
Azure Policy定義の作成
リソース作成時にタグを強制するカスタムポリシー定義を作成します。
- Azure Portal(ホーム - Microsoft Azure)にアクセスし、検索バーで「ポリシー」と検索します。

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

- 以下パラメータを入力し、「保存」をクリックします。
定義の場所 適用するサブスクリプションを選択 名前 任意(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を割り当てます。
- 「ポリシーの割り当て」をクリックします。

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

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

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

最後に
Azure Policy を使えば、「タグを付けるようにお願いします」といった運用ルール依存の管理から脱却できます。
まずは Audit で現状把握し、次に Deny で強制する、といった段階的導入もおすすめです。
クラウドガバナンスの第一歩として、Azure Policy によるタグ強制をぜひ検討してみてください。