クラウドサービス

Azure Resource Manager / Bicep

インフラをコードで宣言的に記述し、同じ構成を何度でも確実に展開。Azure の制御基盤 ARM と IaC 言語 Bicep をやさしく解説。AWS の CloudFormation 相当。

中級運用上の優秀性信頼性
最終更新: 2026-07-29公式ドキュメント
3つの要点
TL;DR
  1. ARM は Azure のコントロールプレーン操作を受け付ける統一基盤である。
  2. Bicep は ARM テンプレートを簡潔に書ける宣言的 IaC 言語である。
  3. 通常は増分デプロイを使い、管理対象の削除と保護にはDeployment Stacksを使う。

解決する課題

クラウド インフラを手作業のポータル操作で構築すると、環境差異・設定漏れ・再現性の欠如が避けられません。Azure Resource Manager(ARM)と Bicep は、インフラをコードとして宣言的に記述し、繰り返し同じ結果で展開できるようにします。

  • 開発・検証・本番で同一構成を再現したい(環境ドリフトの排除)
  • リソース作成を手順書ではなくコードで残し、レビュー・履歴管理したい
  • 複数リソースの依存関係と作成順序を自動で解決したい
  • 権限・タグ・ポリシーを統一の制御プレーンから一貫して適用したい

主要概念と用語

  • Azure Resource Manager(ARM): ポータル・CLI・PowerShell・SDK からのコントロールプレーン操作を受け付ける統一基盤。認証、RBAC、Policy、ロック、タグ、デプロイの依存関係を扱う。ストレージ内データなどのデータプレーン操作は各サービスの入口を通る
  • ARM テンプレート: リソースを宣言する JSON ファイル。ARM がネイティブに解釈する原形式
  • Bicep: ARM テンプレートを簡潔に書くためのドメイン固有言語(DSL)。デプロイ時に ARM テンプレート(JSON)へ変換(トランスパイル)される。JSON より可読性が高く、AWS の CloudFormation に対する CDK に近い立ち位置だが、命令的言語ではなく宣言的
  • リソース プロバイダー: Microsoft.Compute や Microsoft.Storage など、リソース種別ごとの操作を実装する名前空間。利用には登録が必要
  • デプロイ(Deployment): テンプレートを適用する操作。同じ入力なら結果が同じになるべき等性を持つ
  • スコープ: デプロイの適用範囲。リソース グループ/サブスクリプション/管理グループ/テナントの4階層
  • モジュール(Bicep module): 再利用可能な Bicep の部品。テンプレートを分割・共有する単位
  • パラメータ/変数/出力: 入力値・中間値・他テンプレートへ渡す戻り値を表す要素
  • What-if 操作: 適用前に変更内容(作成・変更・削除)を事前確認する機能(CloudFormation の変更セットに相当)

仕様・制限・クォータ

  • 宣言的かつべき等: テンプレートは「あるべき状態」を記述し、ARM が現状との差分を適用します。同じテンプレートを再実行しても結果は変わりません
  • デプロイ モード: 増分(Incremental)は既存リソースを保持しテンプレート記載分を追加・更新します。記載外を削除する完全(Complete)は段階的に非推奨化されるため、新規設計では増分と Deployment Stacks を使います
  • 依存関係: ARM はリソース間参照から依存を自動推論し、可能なものは並列に展開します。明示指定も可能です
  • スコープ単位の上限: 1 回のデプロイで扱えるリソース数や、テンプレートのサイズ・パラメータ数などに上限があります。大規模構成はモジュール分割やネスト デプロイで回避します
  • Bicep から ARM テンプレート(JSON) へ変換できる。既存 JSON の decompile は移行の起点にできるが、最善努力の逆変換であり、生成後の警告確認と手直しが必要
  • 具体的な上限値は時期やリソース種別で変わり得るため、設計時は最新の公式ドキュメントで確認します

内部の仕組み

横にスクロール

ポータルやBicepからの要求をAzure Resource Managerが認証・RBAC・Policyで評価し、依存関係に沿って各リソースプロバイダーへ渡す制御経路
ARMはAzureの制御面の共通入口です。通常のテンプレート展開は増分を使い、テンプレート外資源の削除や一括ライフサイクル管理はDeployment Stacksへ移します。

ARM は Azure のコントロールプレーン操作の入口です。ポータル・az CLI・PowerShell・管理用 REST API の操作を受け、認証、RBAC、ポリシー、ロックを評価して各リソース プロバイダーへ処理を委譲します。作成後のアプリ通信やデータ読み書きは、ARM ではなく各サービスのデータプレーンを通ります。

Bicep ファイルはデプロイ時にまず ARM テンプレート(JSON)へトランスパイルされ、テンプレートとパラメータがデプロイとして ARM に投入されます。ARM はテンプレート内のリソース間参照から依存グラフを構築し、依存のないリソースは並列に、依存のあるものは順序を守って各プロバイダーに展開を指示します。各リソースの作成・更新はべき等で、既に望ましい状態にあるものは再作成されません。

Bicep と JSON の関係

Bicep は新しい実行エンジンではなく、ARM テンプレートを生成するための言語です。ランタイムは従来どおり ARM なので、Bicep を採用しても機能差はなく、可読性と保守性が上がるだけと理解すると整理しやすいです。

設計パターン / ベストプラクティス

  • モジュール化: ネットワーク・ストレージ・アプリ層などを Bicep モジュールに分割し、環境ごとにパラメータで差し替える
  • 環境分離: 同一テンプレート+環境別パラメータ ファイル(dev/staging/prod)で構成差異をパラメータに閉じ込める
  • What-if で事前確認: 本番適用前に必ず what-if を実行し、想定外の削除・変更を検出する
  • CI/CD 連携: テンプレートを Git で管理し、GitHub Actions や Azure Pipelines から自動デプロイ(PR レビュー → what-if → 適用)
  • 削除は Deployment Stacks で管理: 既定の増分モードを基本とし、テンプレート管理外になったリソースの削除や一括ライフサイクル管理には Deployment Stacks を使う
  • タグとネーミング規約を変数・モジュールで一元化し、コスト配賦と運用を容易にする

運用・監視

  • デプロイ履歴: リソース グループ単位でデプロイ履歴と各操作の成否・エラー詳細が記録され、失敗時の原因追跡に使える
  • アクティビティ ログ: ARM 経由のすべてのコントロール プレーン操作(作成・変更・削除)が証跡として残る(AWS の CloudTrail 相当)
  • 失敗の切り分け: プロバイダー未登録、クォータ超過、RBAC 権限不足、依存関係の記述漏れが典型的な失敗要因
  • ドリフト対策: ポータルでの手動変更がテンプレートと乖離する「ドリフト」を、what-if や定期的な再デプロイで検出・是正する
  • Azure Policy 連携: 命名・リージョン・SKU 制限などをポリシーで強制し、テンプレート外の逸脱も防ぐ

コスト

ARM と Bicep によるデプロイ操作自体は無償です。課金が発生するのは、テンプレートが作成した個々のリソース(仮想マシン・ストレージなど)であり、IaC レイヤーには直接の利用料金はありません。コスト最適化の観点では、テンプレートで SKU・サイズ・冗長性をパラメータ化し、環境ごとに過剰なリソースを作らないことが重要です。

項目課金有無補足
ARM のデプロイ操作無償テンプレート適用や what-if に料金は発生しない
作成されたリソース従量課金VM・ストレージ等それぞれの料金で課金される
タグ付与無償コスト配賦・集計のためにテンプレートで一元管理

セキュリティ

  • 認可は RBAC: ARM は操作ごとに Microsoft Entra ID + Azure RBAC で認可します。デプロイ実行者やパイプラインのサービス プリンシパルには最小権限を割り当てます
  • シークレットを直書きしない: 接続文字列やパスワードはテンプレートにハードコードせず、Azure Key Vault 参照でデプロイ時に注入します
  • マネージド ID をパイプラインに使い、長期資格情報の保存を避けます
  • Azure Policy で許可リージョン・SKU・命名規約などを強制し、テンプレートの逸脱や手動変更を防ぎます
  • Deployment Stacks による削除は破壊的影響を持つため、誰がどのスコープで実行できるかを RBAC で厳格に制御します
完全モードへ新規依存しない

完全モードはテンプレートに無いリソースを削除しますが、Microsoft はこのモードを段階的に非推奨化する方針です。通常は増分モードを使い、管理外リソースの削除は Deployment Stacks で明示的に設計し、事前に what-if と削除対象を確認します。

Well-Architected の観点

  • 運用上の優秀性(operational): インフラをコード化し、レビュー・バージョン管理・自動デプロイの対象にできます。手作業を排し、再現性と監査性を高めます
  • 信頼性(reliability): べき等なデプロイと環境別パラメータにより、本番と同一構成を確実に再現でき、災害復旧時の再構築も自動化できます。what-if による事前検証で変更リスクを下げます

試験で問われるポイント

頻出
  • ARM = Azure の統一制御プレーンで、ポータル・CLI・PowerShell・管理 API のコントロールプレーン操作がここを通り、データプレーン操作は別経路であること
  • Bicep は ARM テンプレート(JSON)にトランスパイルされる宣言的 DSL であり、新しいランタイムではない点
  • デプロイは増分が既定で、完全モードは段階的に非推奨化されるため、記載外リソースの削除には Deployment Stacks を使うこと
  • デプロイ スコープはリソース グループ/サブスクリプション/管理グループ/テナントの4階層
  • ARM は依存関係を自動推論し可能な範囲で並列展開、デプロイはべき等である点
  • 適用前のwhat-ifで変更内容を事前確認できること(AWS の変更セット相当)
  • シークレットはKey Vault 参照で注入し、テンプレートに直書きしないこと
  • AWS の相当サービスは CloudFormation

関連サービス・比較

観点Azure Resource Manager / BicepAWS CloudFormation
位置づけAzure の統一制御プレーンと IaCAWS の宣言的 IaC サービス
記述言語Bicep(DSL)または ARM テンプレート(JSON)テンプレート(YAML / JSON)
展開単位デプロイスタック
事前確認what-if 操作変更セット
適用範囲リソース グループ/サブスクリプション/管理グループ/テナントリージョン内のスタック(StackSets で横断)
再利用部品Bicep モジュールネストスタック / モジュール
操作の監査アクティビティ ログCloudTrail

ハンズオン / CLI例

# リソース グループを作成
az group create --name demo-rg --location japaneast

# Bicep ファイルの適用前に変更内容を事前確認(what-if)
az deployment group what-if \
  --resource-group demo-rg \
  --template-file main.bicep \
  --parameters env=dev

# Bicep ファイルをリソース グループ スコープにデプロイ(既定は増分モード)
az deployment group create \
  --resource-group demo-rg \
  --name infra-deploy \
  --template-file main.bicep \
  --parameters @dev.parameters.json

# デプロイ結果(出力値)を確認
az deployment group show \
  --resource-group demo-rg \
  --name infra-deploy \
  --query properties.outputs

# 既存 ARM テンプレート(JSON)を Bicep へ逆変換
az bicep decompile --file azuredeploy.json

Azure Service

Azure Resource Manager / Bicepを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

管理・ガバナンス

比較で見る軸

クラウド: Azure / カテゴリ: 管理・ガバナンス / 難易度: intermediate

導入後に効く点

Bicep は ARM テンプレートを簡潔に書ける宣言的 IaC 言語である。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Azure
カテゴリ
管理・ガバナンス
難易度
intermediate
関連資格
設計柱
operational / reliability

判断チェックリスト

  • 自社の用途が「管理・ガバナンス / operational」に近いか確認する。
  • 強みである「ARM は Azure のコントロールプレーン操作を受け付ける統一基盤である。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

管理・ガバナンスoperationalreliability