Service Fabric での Azure のマネージド ID の使用
クラウド アプリケーションを構築するときの共通の課題は、さまざまなサービスに対する認証を行うために、コード内の資格情報を開発者ワークステーションやソース管理にローカルに保存せずにどのように安全に管理するかということです。 Azure のマネージド ID により、Microsoft Entra ID 内のリソースに自動的に管理された ID を付与することにより、Microsoft Entra ID 内のすべてのリソースでこの問題が解決されます。 サービスの ID を使用すれば、コードに保存された資格情報がなくても、Microsoft Entra 認証をサポートするあらゆるサービス (Key Vault を含む) に対して認証を行うことができます。
Azure リソースのマネージド ID は、Azure サブスクリプションの Microsoft Entra ID で無料で利用できます。 追加コストは発生しません。
注意
Azure のマネージド ID は、以前のマネージド サービス ID (MSI) の新しい名前です。
概念
Azure のマネージド ID は、以下に示すいくつかの重要な概念に基づいています:
クライアント ID - Microsoft Entra ID によって生成される一意識別子で、初期プロビジョニングの間にアプリケーションおよびサービス プリンシパルと結び付けられます (アプリケーション (クライアント) ID に関するトピックも参照)。
プリンシパル ID - マネージド ID に対するサービス プリンシパル オブジェクトのオブジェクト ID であり、Azure リソースへのロールベースのアクセス権を付与するために使用されます。
サービス プリンシパル - Microsoft Entra オブジェクト。特定のテナントでの Microsoft Entra アプリケーションのプロジェクションを表します (サービス プリンシパルに関するトピックも参照)。
マネージド ID には、次の 2 種類があります。
- システム割り当てマネージド ID は、Azure サービス インスタンス上で直接有効にされます。 システム割り当て ID のライフサイクルは、その ID が有効にされた Azure サービス インスタンスに固有です。
- ユーザー割り当てマネージド ID は、スタンドアロン Azure リソースとして作成されます。 ID は、1 つ以上の Azure サービス インスタンスに割り当てることができ、それらのインスタンスのライフサイクルとは別に管理されます。
マネージド ID の種類の違いをより詳しく理解するには、Azure リソースのマネージド ID のしくみに関するページを参照してください。
Service Fabric アプリケーションのサポート シナリオ
Service Fabric のマネージド ID は、Azure にデプロイされた Service Fabric クラスターでのみサポートされ、Azure リソースとしてデプロイされたアプリケーション専用です。 Azure リソースとしてデプロイされていないアプリケーションに ID を割り当てることはできません。 概念的には、Azure Service Fabric クラスターでのマネージド ID のサポートは、次の 2 つのフェーズで構成されます。
1 つまたは複数のマネージド ID をアプリケーション リソースに割り当てます。アプリケーションには、1 つのシステム割り当て ID と、32 個までのユーザー割り当て ID のどちらかまたは両方をそれぞれ割り当てることができます。
アプリケーションの定義内で、アプリケーションに割り当てられた ID のうちの 1 つを、アプリケーションを構成する個々のサービスにマップします。
アプリケーションのシステム割り当て ID は、そのアプリケーションに固有です。ユーザー割り当て ID はスタンドアロン リソースであり、複数のアプリケーションに割り当てることができます。 アプリケーション内で、1 つの ID (システム割り当てまたはユーザー割り当て) をアプリケーションの複数のサービスに割り当てることができますが、個々のサービスには 1 つの ID しか割り当てることができません。 最後に、この機能にアクセスするには、サービスに明示的に ID を割り当てる必要があります。 実際には、アプリケーションの ID を、そのアプリケーションを構成するサービスにマップすると、アプリケーション内での分離が可能になります。サービスは、それにマップされた ID のみを使用できます。
この機能では次のシナリオがサポートされています:
1 つ以上のサービスと、1 つ以上の割り当てられた ID がある新しいアプリケーションをデプロイする
Azure リソースにアクセスするために、1 つ以上のマネージド ID を既存の (Azure にデプロイされた) アプリケーションに割り当てる
次のシナリオはサポートされていません、または推奨されていません。 これらのアクションはブロックされませんが、アプリケーションの停止につながる可能性があります:
アプリケーションに割り当てられている ID を削除または変更する。 変更を行う必要がある場合は、別のデプロイを送信して、先に新しい ID 割り当てを追加してから、以前に割り当てた ID を削除してください。 既存のアプリケーションから ID を削除すると、アプリケーションがアップグレード不可能な状態のままになるなど、望ましくない影響が生じる可能性があります。 ID の削除が必要な場合は、アプリケーションを完全に削除しても安全です。 アプリケーションを削除すると、アプリケーションに関連付けられているシステム割り当て ID が削除され、アプリケーションに割り当てられているユーザー割り当て ID との関連付けがすべて削除されます。
Service Fabric では、非推奨の AzureServiceTokenProvider のマネージド ID はサポートされていません。 代わりに、Azure Identity SDK を使用して、Service Fabric でマネージド ID を使用します
次のステップ
- マネージド ID サポートを使用して新しい Azure Service Fabric クラスターをデプロイする
- 既存の Azure Service Fabric クラスターでマネージド ID のサポートを有効にする
- システム割り当てのマネージド ID を持つ Azure Service Fabric アプリケーションをデプロイする
- ユーザー割り当てのマネージド ID を持つ Azure Service Fabric アプリケーションをデプロイする
- サービス コードから Service Fabric アプリケーションのマネージド ID を活用する
- Azure Service Fabric アプリケーションに他の Azure リソースへのアクセス権を付与する
- アプリケーション シークレットを KeyVaultReferences として宣言して使用する