Azure リソースのマネージド ID とは
サービス間の通信をセキュリティで保護するために使用されるシークレット、資格情報、証明書、キーの管理は、開発者にとって共通の課題です。 マネージド ID により、開発者はこれらの資格情報を管理する必要がなくなります。
開発者は Azure Key Vault にシークレットを安全に保存できますが、サービスには Azure Key Vault にアクセスする手段が必要です。 マネージド ID により、Microsoft Entra ID 認証をサポートするリソースに接続するときに使用される Microsoft Entra のマネージド ID がアプリケーションに提供されます。 アプリケーションは、マネージド ID を使用して、資格情報を管理することなく Microsoft Entra トークンを取得できます。
次のビデオでは、マネージド ID を使用する方法を示します。
以下に、マネージド ID を使用するベネフィットをいくつか紹介します。
- 資格情報を自ら管理する必要がない。 資格情報には、自分もアクセスできません。
- マネージド ID を使用すると、独自のアプリケーションを含む、Microsoft Entra 認証をサポートするあらゆるリソースに対して認証を行うことができます。
- マネージド ID は追加コストなしで利用できます。
注意
Azure リソースのマネージド ID は、以前のマネージドサービス ID (MSI) の新しい名前です。
マネージド ID の種類
マネージド ID には、次の 2 種類があります。
システム割り当て。 仮想マシンなどの一部の Azure リソースでは、リソースでマネージド ID を直接有効にすることができます。 システム割り当てマネージド ID を有効にした場合:
- 特別な種類のサービス プリンシパルが、ID 用に Microsoft Entra ID に作成されます。 このサービス プリンシパルは、その Azure リソースのライフサイクルに関連付けられます。 Azure リソースが削除されると、Azure により自動的にサービス プリンシパルが削除されます。
- その ID を使用して Microsoft Entra ID にトークンを要求できるのは、必然的に、その Azure リソースのみとなります。
- マネージド ID が 1 つ以上のサービスにアクセスできるように承認します。
- システム割り当てサービス プリンシパルの名前は、それが作成された Azure リソースの名前と常に同じです。 デプロイ スロットの場合、システムによって割り当てられた ID の名前は、
<app-name>/slots/<slot-name>
です。
ユーザー割り当て。 スタンドアロンの Azure リソースとしてマネージド ID を自分で作成することもできます。 ユーザー割り当てマネージド ID を作成して、1 つ以上の Azure リソースに割り当てることができます。 ユーザー割り当てマネージド ID を有効にする際は、次の点に注意します。
- 特別な種類のサービス プリンシパルが、ID 用に Microsoft Entra ID に作成されます。 サービス プリンシパルは、それを使うリソースとは別に管理されます。
- ユーザー割り当て ID は、複数のリソースで使用できます。
- マネージド ID が 1 つ以上のサービスにアクセスできるように承認します。
次の表は、2 種類のマネージド ID の違いを示しています。
プロパティ | システム割り当てマネージド ID | ユーザー割り当てマネージド ID |
---|---|---|
作成 | Azure リソース (たとえば、Azure Virtual Machines または Azure App Service) の一部として作成されます。 | スタンドアロンの Azure リソースとして作成されます。 |
ライフ サイクル | マネージド ID の作成に使用された Azure リソースとの共有ライフ サイクル。 親リソースが削除されると、マネージド ID も削除されます。 |
独立したライフ サイクル。 明示的に削除する必要があります。 |
Azure リソース間で共有されます | 共有できません。 1 つの Azure リソースにのみ関連付けることができます。 |
共有できます。 同じユーザー割り当てマネージド ID を、複数の Azure リソースに関連付けることができます。 |
一般的なユース ケース | 1 つの Azure リソース内に含まれるワークロード。 独立した ID を必要としているワークロード。 たとえば、1 つの仮想マシンで実行されるアプリケーション。 |
複数のリソースで実行され、1 つの ID を共有できるワークロード。 プロビジョニング フローの一部として、セキュリティで保護されたリソースへの事前認可が必要なワークロード。 リソースが頻繁にリサイクルされるものの、アクセス許可は一貫性を保つ必要があるワークロード。 たとえば、複数の仮想マシンが同じリソースにアクセスする必要があるワークロード。 |
Azure リソースのマネージド ID を使用する方法
マネージド ID は、次の手順に従って使用できます。
- Azure でマネージド ID を作成します。 システム割り当てマネージド ID またはユーザー割り当てマネージド ID を選択できます。
- ユーザー割り当てマネージド ID を使う場合、マネージド ID を、仮想マシン、Azure ロジック アプリや、Azure Web アプリなどの "ソース" Azure リソースに割り当てます。
- "ターゲット" サービスにアクセスできるマネージド ID を承認します。
- マネージド ID を使用してリソースにアクセスします。 この手順では、Azure SDK と Azure.Identity ライブラリを使用できます。 一部の "ソース" リソースでは、マネージド ID を使用した接続の方法を認識しているコネクタが提供されます。 その場合は、ID をその "ソース" リソースの機能として使用します。
この機能をサポートする Azure サービスは?
Azure リソースのマネージド ID は、Microsoft Entra 認証をサポートするサービスの認証に使用することができます。 サポートされる Azure サービスの一覧については、Azure リソースのマネージド ID をサポートするサービスに関する記事を参照してください。
マネージド ID を使用してどの操作を実行できますか?
システム割り当てマネージド ID をサポートするリソースでは、次のことが可能です。
- リソース レベルでマネージド ID を有効または無効にする。
- ロールベースのアクセス制御 (RBAC) を使用してアクセス許可を付与する。
- Azure アクティビティ ログ内の作成、読み取り、更新、削除 (CRUD) 操作を表示する。
- Microsoft Entra ID サインイン ログ内のサインイン アクティビティを表示します。
代わりにユーザー割り当てマネージド ID を選択した場合:
- ID の作成、読み取り、更新、削除を実行できます。
- RBAC のロールの割り当てを使用してアクセス許可を付与することができます。
- ユーザー割り当てマネージド ID は、複数のリソースで使用できます。
- CRUD 操作は、Azure アクティビティ ログ内で確認できます。
- Microsoft Entra ID サインイン ログ内のサインイン アクティビティを表示します。
マネージド ID に対する操作は、Azure Resource Manager テンプレート、Azure portal、Azure CLI、PowerShell、REST API を使用して実行できます。
次のステップ
- 開発者向けの概要とガイドライン
- VM システム割り当てマネージド ID を使用して Resource Manager にアクセスする
- App Service と Azure Functions でマネージド ID を使用する方法
- Azure Container Instances でマネージド ID を使用する方法
- Implementing managed identities for Microsoft Azure Resources (Microsoft Azure リソースにマネージド ID を導入する)
- マネージド ID のワークロード ID フェデレーションを使って、シークレットを管理せずに Microsoft Entra で保護されたリソースにアクセスする