Azure管理階層と命名規則
Azureリソースを効果的に管理するためには、管理階層(Hierarchy)の理解と、一貫した命名規則の適用が不可欠です。本ドキュメントでは、Azureの主要な管理単位と、Microsoft Cloud Adoption Framework (CAF) に基づくベストプラクティスを解説します。
Azureの管理階層
Azureの管理構造は、以下の4つのレベルで構成されています。
- 管理グループ (Management Groups)
- サブスクリプション (Subscriptions)
- リソースグループ (Resource Groups)
- リソース (Resources)
これらは親子関係を持ち、上位レベルで適用されたポリシーやアクセス権限は下位レベルに継承されます。
1. テナント (Tenant) / Microsoft Entra ID
厳密にはAzureリソースの階層構造の外側に位置しますが、アイデンティティとアクセスの境界を定義します。
- 1つの組織(企業)を表すインスタンス。
- ユーザー、グループ、アプリケーションの認証情報を管理。
2. 管理グループ (Management Groups)
複数のサブスクリプションをグループ化して管理するためのコンテナです。
- 用途: 組織全体のガバナンス、ポリシー適用、コンプライアンス管理。
- 例: 「本番環境」「開発環境」や「事業部」ごとにグループ化し、共通のポリシー(例:特定のリージョンのみ使用許可)を適用。
3. サブスクリプション (Subscriptions)
リソースの論理的なコンテナであり、課金とアクセス制御の主要な境界線です。
- 用途: コスト管理の単位、技術的な制限(クォータ)の境界。
- 戦略:
- ワークロード分離: 本番環境(Production)と非本番環境(Non-Production)でサブスクリプションを分ける(推奨)。
- カテゴリ分離: アプリケーションの種類や事業部ごとに分ける。
4. リソースグループ (Resource Groups)
Azureリソースを論理的にグループ化するコンテナです。すべてのリソースは必ず1つのリソースグループに属します。
- ライフサイクル管理: 同じライフサイクル(作成、更新、削除)を持つリソースをまとめる。
- 権限管理: 特定のプロジェクトメンバーにのみアクセス権を付与する単位。
- ベストプラクティス:
- リソースグループを削除すると、中のリソースもすべて削除されるため、環境のクリーンアップに利用できる。
- 異なるライフサイクルのリソース(例:永続的なDBと一時的なVM)は別のグループにすることを検討する。
命名規則 (Naming Conventions)
一貫した命名規則は、リソースの特定、管理、トラブルシューティングを容易にします。Microsoft CAFでは以下の構成要素を組み合わせることを推奨しています。
基本フォーマット:
[リソース種類]-[ワークロード/アプリ名]-[環境]-[リージョン]-[インスタンス番号]
推奨される省略形
| リソース種類 | 省略形 | 例 |
|---|---|---|
| Resource Group | rg | rg-myapp-prod-001 |
| App Service Plan | asp | asp-myapp-prod-eastus-001 |
| App Service (Web App) | app | app-myapp-prod-eastus-001 |
| Function App | func | func-myapp-prod-eastus-001 |
| SQL Server | sql | sql-myapp-prod-eastus-001 |
| SQL Database | sqldb | sqldb-myapp-prod-eastus-001 |
| Storage Account | st | stmyappprod001 (小文字英数字のみ) |
| Virtual Network | vnet | vnet-myapp-prod-eastus-001 |
| Key Vault | kv | kv-myapp-prod-001 |
注意点
- スコープの一意性: Storage AccountやKey Vaultなど、グローバルで一意な名前が必要なリソースがある。
- 文字制限: リソースによって使用可能な文字種(ハイフン不可など)や長さ制限が異なる。
- 変更不可: リソース名は作成後に変更できないため、慎重に決定する。
タグ付け戦略 (Tagging Strategy)
名前だけでなく、タグを使用してメタデータを付与することで、コスト分析や運用管理が効率化されます。
推奨されるタグ
Owner: リソースの責任者(メールアドレスなど)Environment:Production,Staging,DevelopmentCostCenter: 請求先の部門コードApplication: 関連するアプリケーション名Criticality:High,Medium,Low(災害復旧の優先度判断などに利用)
ベストプラクティスまとめ
- 階層構造の設計: 管理グループを活用して、組織全体のガバナンスを効かせる。
- サブスクリプションの分離: 本番環境と開発環境はサブスクリプションレベルで分離し、セキュリティリスクと誤操作を防ぐ。
- リソースグループのライフサイクル: 一緒にデプロイ・削除されるリソースを同じグループにする。
- 命名規則の徹底: 自動化やIaC (Infrastructure as Code) の導入を見据え、ルールを文書化し遵守する。
- タグの活用: コスト配分や運用自動化のために、必須タグポリシーを適用する。