Azure ランディング ゾーン - Bicep モジュールの設計に関する考慮事項

この記事では、「クラウド導入フレームワーク (CAF)」で詳しく説明されているAzure ランディング ゾーンの概念アーキテクチャのコア プラットフォーム機能をデプロイし管理するために使用できる、モジュール化された Azure ランディング ゾーン (ALZ) - Bicep ソリューションの設計上の考慮事項について説明します。

Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。 簡潔な構文、信頼性の高いタイプ セーフ、およびコードの再利用のサポートを備えています。

GitHub logo このアーキテクチャの実装については、GitHub: Azure Landing Zones (ALZ) - Bicep 実装を参照してください。 これを出発点として使用し、実際のニーズに合わせて構成することができます。

注意

ポータル ベース、ARM テンプレート、Terraform モジュールなど、いくつかのデプロイ テクノロジの実装があります。 デプロイ テクノロジの選択は、結果として得られる Azure ランディング ゾーンのデプロイに影響しません。

ALZ Bicep アクセラレータ

ALZ Bicep アクセラレータを使用した ALZ Bicep モジュールの実装、自動化、保守に関するステップ バイ ステップのガイダンスを確認できます。

ALZ Bicep アクセラレータ フレームワークは、本格的な CI/CD パイプラインを使用した ALZ Bicep のオンボードとデプロイのためのサポート、GitHub Actions と Azure DevOps Pipelines のサポート、新しい ALZ Bicep リリースとの同期を維持しカスタム モジュールを変更または追加するための専用フレームワークを提供するために開発されたもので、Bicep モジュールのリンティングと検証のためのブランチ戦略のガイダンスと pull request パイプラインを提供します。

設計

Diagram showing the bicep modules for deploying Azure landing zones.

このアーキテクチャでは、Azure Bicep のモジュール性を利用しており、多数のモジュールで構成されています。 各モジュールで、Azure ランディング ゾーンの概念アーキテクチャの 1 つのコア機能がカプセル化されています。 モジュールは個別にデプロイできますが、依存関係があるため注意が必要です。

このアーキテクチャでは、デプロイ エクスペリエンスを簡素化するためにオーケストレーター モジュールを含めることを提案しています。 オーケストレーター モジュールを使用して、モジュールのデプロイを自動化し、さまざまなデプロイ トポロジをカプセル化できます。

モジュール

Bicep の中心となる概念は、モジュールの使用です。 モジュールを使用すると、デプロイを論理グループに編成できます。 モジュールを使用して、デプロイの複雑な詳細をカプセル化することで、Bicep ファイルの読みやすさが向上します。 また、モジュールを異なるデプロイに簡単に再利用することもできます。

モジュールを再利用できると、ランディング ゾーンの定義とデプロイを行うときに大きな利点となります。 コード内で反復可能で一貫性のある環境が実現するいっぽうで、大規模なデプロイに必要な労力が削減されます。

レイヤーとステージング

モジュール構成に加えて、Bicep ランディング ゾーン アーキテクチャは、レイヤーの概念を使用して構造化されています。 レイヤーは、一緒にデプロイすることを目的とした Bicep モジュールのグループです。 それらのグループは、実装の論理ステージを形成します。

Diagram showing the deployment layers.

このレイヤー アプローチの利点は、時間をかけて環境に段階的に追加できることです。 たとえば、開始時点では少数のレイヤーで始めることができます。 準備ができたら、後続の段階で残りのレイヤーを追加できます。

モジュールの説明

このセクションでは、このアーキテクチャのコア モジュールの概要について説明します。

レイヤー モジュール 説明 役に立つリンク
Core 管理グループ 管理グループは、Azure テナントの最上位レベルのリソースです。 管理グループを使用すると、リソースをより簡単に管理できます。 管理グループ レベルでポリシーを適用でき、そのポリシーが下位レベルのリソースに継承されます。 具体的には、管理グループの下のサブスクリプションによって継承される次の項目を管理グループ レベルで適用できます。
  • Azure Policy
  • Azure ロール ベースのアクセス制御 (RBAC) のロールの割り当て
  • コスト管理

このモジュールでは、Azure ランディング ゾーンの概念アーキテクチャで定義されている管理グループ階層をデプロイします。
Core カスタム ポリシー定義 DeployIfNotExists (DINE) ポリシーまたは Modify ポリシーは、ランディング ゾーンを構成するサブスクリプションとリソースが確実に準拠しているようにするのに役立ちます。 このポリシーにより、ランディング ゾーンの管理の負担も軽減されます。

このモジュールでは、カスタム ポリシー定義を管理グループにデプロイします。 すべてのお客様が DINE ポリシーまたは Modify ポリシーを使用できるわけではありません。 使用できない場合は、カスタム ポリシーに関する CAF ガイダンスに関する記事にガイダンスが提供されています。
Core カスタム ロールの定義 ロールベースのアクセス制御 (RBAC) により、システム内でのユーザー権限の管理が簡略化されます。 ユーザーの権限を管理する代わりに、システムのさまざまなロールに必要な権限を決定します。 Azure RBAC には、いくつかの組み込みロールがあります。 カスタム ロール定義を使用すると、環境に合わせてカスタム ロールを作成できます。

このモジュールでは、カスタム ロール定義をデプロイします。 このモジュールは、「Azure ロールベースのアクセス制御に関する CAF ガイダンス」に従う必要があります。
管理 ログ記録、Automation Sentinel Azure Monitor、Azure Automation、Microsoft Sentinel を使用すると、インフラストラクチャとワークロードを監視して管理できます。 Azure Monitor は、環境からのテレメトリを収集、分析して対応できるようにするソリューションです。

Microsoft Sentinel は、クラウドネイティブのセキュリティ情報イベント管理 (SIEM) です。 これにより次の操作を行うことができます。
  • 収集 - インフラストラクチャ全体でデータを収集します
  • 検出 - 以前に検出されなかった脅威を検出します
  • 応答 - 組み込みのオーケストレーションを使用して本物の脅威に対応します
  • 調査 - 人工知能を使用して脅威を調査します

Azure Automation はクラウドベースの自動化システムです。 次の情報が含まれます。
  • 構成管理 - Linux および Windows 仮想マシンの変更のインベントリと追跡を行い、必要な状態構成を管理します
  • 更新管理 - Windows と Linux のシステム コンプライアンスを評価し、コンプライアンスを満たすためにスケジュールされたデプロイを作成します
  • プロセスの自動化 - 管理タスクを自動化します

このモジュールでは、環境に対する脅威の監視、管理、アクセスに必要なツールをデプロイします。 これらのツールには、Azure Monitor、Azure Automation、Microsoft Sentinel が含まれている必要があります。
接続 ネットワーク ネットワーク トポロジは、Azure ランディング ゾーンのデプロイにおける重要な考慮事項です。 CAF では、次の 2 つのコア ネットワーク アプローチに重点を置いています
  • Azure Virtual WAN に基づくトポロジ
  • 従来のトポロジ

これらのモジュールは、選択したネットワーク トポロジをデプロイします。
ID ロールの割り当て ID およびアクセス管理 (IAM) は、クラウド コンピューティングの重要なセキュリティ境界です。 Azure RBAC を使用すると、セキュリティ プリンシパルに合わせた組み込みロールまたはカスタム ロール定義のロール割り当てを実行できます。

このモジュールでは、管理グループとサブスクリプション全体で、サービス プリンシパル、マネージド ID、またはセキュリティ グループへのロールの割り当てをデプロイします。 このモジュールは、「Azure ID とアクセス管理に関する CAF ガイダンス」に従う必要があります。
Core サブスクリプションの配置 管理グループに割り当てられているサブスクリプションは、次を継承します。
  • Azure Policy
  • Azure ロール ベースのアクセス制御 (RBAC) のロールの割り当て
  • コスト管理

このモジュールでは、サブスクリプションを適切な管理グループの下に移動します。
Core 組み込みポリシーとカスタム ポリシーの割り当て このモジュールでは、管理グループに既定の Azure ランディング ゾーン Azure Policy 割り当てをデプロイします。 また、ポリシーによって作成されたシステム割り当てマネージド ID のロールの割り当てが作成されます。
管理 Orchestrator モジュール Orchestrator モジュールを使用すると、デプロイ エクスペリエンスを大幅に向上させることができます。 これらのモジュールは、複数のモジュールのデプロイを 1 つのモジュールにカプセル化します。 これにより、複雑さがエンド ユーザーからは見えなくなります。

Bicep 実装のカスタマイズ

クラウド導入フレームワークの一部として提供される Azure ランディング ゾーンの実装は、さまざまな要件とユース ケースに適しています。 ただし、多くの場合、特定のビジネス ニーズを満たすためにカスタマイズが必要なシナリオがあります。

プラットフォーム ランディング ゾーンが実装されたら、次のステップはアプリケーション ランディング ゾーンのデプロイです。これにより、landing zones 管理グループの下にあるアプリケーション チームは、中央 IT または PlatformOps 管理者が必要とするガードレールを使用できるようになります。 corp 管理グループは企業接続アプリケーションを対象としています。一方、online 管理グループは主に公開されているアプリケーションを対象としていますが、一部のシナリオでは、ハブ ネットワーク経由で企業アプリケーションに接続する場合があります。

Bicep Azure ランディング ゾーンの実装は、カスタマイズしたデプロイの基礎として使用できます。 これにより、既製のオプションが除外される特定の必要な変更のために、ゼロから始める必要性がなく、実装を迅速に行う方法が提供されます。

GitHub logoモジュールのカスタマイズに関する情報は、GitHub リポジトリ wiki の「GitHub: Azure ランディング ゾーン Bicep - Wiki - コンシューマー ガイド」で入手できます。 これを出発点として使用し、実際のニーズに合わせて構成することができます。