【ITニュース解説】Auto-Adding Tags with Azure Policy
2025年09月12日に「Dev.to」が公開したITニュース「Auto-Adding Tags with Azure Policy」について初心者にもわかりやすく解説しています。
ITニュース概要
Azure Policyでリソースにタグを自動付与する方法を解説。Deny効果はタグがないとデプロイを止めるが、Modify効果を使えば自動でタグを追加・更新できる。既存リソースへはRemediationタスクで適用し、ガバナンスとコスト管理を効率化できる。
ITニュース解説
Azureを利用してシステムを構築・運用する際、多くのリソース(仮想マシン、データベース、ストレージなど)を使うことになる。これらのリソースが増えてくると、どのリソースが何の目的で使われているのか、誰が管理しているのか、どれくらいのコストがかかっているのかといった情報が非常に見えにくくなる。特に、コスト管理、企業全体のガバナンス(ルール作りと運用)、そしてリソースの効率的な組織化は、ITシステムを運用する上で非常に重要な課題となる。
このような課題を解決するための強力なツールの一つが「タグ」である。タグとは、リソースに付与できる小さなラベルのようなもので、キーと値のペアで構成される。例えば、「部署: 開発部」や「環境: 本番」、「担当者: 山田」といった形で、リソースに意味のある情報を付与できる。タグを適切に利用することで、リソースをカテゴリ別に分類したり、特定のプロジェクトに関連するリソースだけを抽出してコストを分析したり、セキュリティポリシーの適用範囲を限定したりと、様々なメリットが得られる。しかし、一つ一つのリソースに手動でタグを適用していく作業は、リソースの数が増えれば増えるほど手間がかかり、人的なミスも発生しやすくなる。このような状況では、タグの自動化が不可欠となる。
ここで登場するのが「Azure Policy」というサービスである。Azure Policyは、Azure環境におけるコンプライアンス(規則遵守)を強制し、リソースの管理を自動化するための強力な機能を提供する。具体的には、「特定のリソースグループに作成されるすべての仮想マシンには、必ず『環境: 開発』というタグを付ける」といったルールを定義し、それをAzure環境全体、あるいは特定の部分に適用できる。このポリシーによって、新しく作成されるリソースが自動的にルールに準拠するようにしたり、既存のリソースがルールに違反していないかを監査したり、場合によっては自動的に修正したりすることが可能となる。
今回は、このAzure Policyを使って、新しいリソースが作成されたときに「Cost Center(コストセンター)」というタグを自動的に追加する方法を解説する。例えば、「特定の部署が利用するリソースグループ内に新しく作成されるすべてのリソースに、『Cost Center: 000』というタグを自動で付与する」という目標を設定する。これにより、どのリソースがどのコストセンターに紐づいているかを常に把握し、費用の追跡や責任の割り当てを容易にできる。
筆者は当初、この自動タグ付けを実現しようとした際、一般的な間違いに遭遇した。それは、「Deny(拒否)」というポリシー効果を持つ設定を試したことである。Denyポリシーは、その名の通り「条件が満たされない場合、その操作(リソースの作成や更新など)を拒否する」という働きをする。具体的には、「もしこのリソースに『Cost Center』タグがなければ、作成を許可しない」というルールを設定したとする。この場合、新しくリソースを作成しようとすると、そのリソースに手動で『Cost Center』タグを付与しない限り、デプロイが「Validation failed: Required information is missing or not valid」というエラーで失敗してしまう。これは、ポリシーがタグを自動で追加するのではなく、タグがないことを理由に操作をブロックしているためである。Denyポリシーは、「特定の種類の仮想マシンのデプロイを禁止する」といった、厳密なコンプライアンスを強制したい場合には非常に有効だが、今回の目的である「タグの自動追加」には適していなかった。
タグを自動的に追加したり更新したりするには、「Modify(変更)」というポリシー効果を利用する必要がある。Modifyポリシーは、Denyポリシーとは異なり、リソースの作成や更新のプロセス中に積極的に介入し、指定された条件に基づいてリソースのプロパティ(今回はタグ)を変更する。つまり、「もしこのリソースに『Cost Center』タグがなければ、それを自動的に追加する」という動作を実現できるのがModifyポリシーである。
では、実際にModifyポリシーを使ってタグを自動追加する具体的な手順を見ていこう。 まず、Azure Portalにアクセスし、「Policy」サービスを検索して開く。もし、以前に「Cost Center」タグに関連するDenyポリシーを設定していた場合は、それが競合する可能性があるため、まずそのポリシー割り当てを削除する必要がある。左側のメニューから「割り当て(Assignments)」を選択し、該当する古いポリシー割り当てを見つけて削除する。
次に、新しいポリシー割り当てを作成する。「割り当て」画面で「ポリシーの割り当て(Assign policy)」をクリックする。 重要な設定項目の一つが「スコープ」である。これは、作成するポリシーがどの範囲のリソースに適用されるかを定義する部分で、管理グループ、サブスクリプション、または特定のリソースグループを選択できる。今回は、新しくリソースを作成する予定のリソースグループを指定すると良い。 次に、「ポリシー定義」を選択する。今回は組み込みのポリシー定義である「リソースグループからタグを継承(存在しない場合)(Inherit a tag from the resource group if it is missing)」を使用する。これを検索して選択する。 「パラメーター」タブに移動し、「Tag Name」には「Cost Center」と入力する。「Tag value」は、今回は空欄のままで良いが、これはポリシーがタグの値を親であるリソースグループから継承するためである。このポリシーが正しく機能するためには、このポリシーを割り当てる対象のリソースグループ自体に、事前に「Cost Center: 000」というタグが設定されている必要がある。ポリシーは、リソースグループからこのタグの値を読み取り、新しく作成されるリソースに適用する。 最後に、「レビュー + 作成」をクリックし、「作成」を選択してポリシー割り当てを完了する。
これで、指定したスコープ(リソースグループ)内で新しいリソースが作成される際に、もしそのリソースに「Cost Center」タグが存在しなければ、Azure Policyが自動的にそのタグと、リソースグループから継承した値(例えば「000」)を追加するようになる。
Modifyポリシーは、主に新しく作成されたり更新されたりするリソースに対してリアルタイムに適用される。では、すでに存在しているリソースのうち、「Cost Center」タグが付与されていないものにはどうすればタグを適用できるのだろうか。この課題を解決するのが「修正タスク(Remediation Task)」である。
Modifyポリシーの割り当てが完了したら、Azure PortalのPolicyサービスに戻り、左側のメニューから「修正(Remediation)」を選択する。「+ 新しい修正タスク(+ New remediation task)」をクリックし、先ほど割り当てた「リソースグループからタグを継承(存在しない場合)」ポリシーを選択する。次に、対象となるスコープ(リソースグループ)を指定する。Azureは、そのスコープ内でこのポリシーに準拠していない(つまり、「Cost Center」タグが不足している)既存のリソースを自動的に特定する。その後、「修正(Remediate)」をクリックすることで、指定されたポリシーに基づいて、これらの非準拠リソースに対してタグが自動的に適用される。この修正タスクはバックグラウンドで実行され、既存のリソースをポリシーに準拠した状態に更新してくれる。
まとめると、Azure環境でタグを自動的に追加・更新したい場合には、「Modify」ポリシー効果を持つAzure Policyを利用することが重要である。「Deny」ポリシーは、タグの自動追加ではなく、タグがなければデプロイをブロックするために使われるため、目的に合わない。また、タグの値を親リソースから継承するポリシーを使う場合は、親となるリソースグループ自体に目的のタグが設定されていることを事前に確認する必要がある。そして、Modifyポリシーは新規リソースや更新リソースに適用されるが、既存の非準拠リソースに対しては「修正タスク」を利用することでタグを適用できる。これらの機能を適切に活用することで、手作業なしでAzure環境全体に強力なタグ付け戦略を強制でき、ガバナンスの向上とコスト管理の効率化を実現できる。