Microsoft Entra ID でのマネージド ID のセキュリティ保護
この記事では、サービス間の通信をセキュリティで保護するためのシークレットと資格情報の管理について説明します。 マネージド ID では、Microsoft Entra ID で自動的に管理される ID が提供されます。 アプリケーションでは、マネージド ID を使用して、Microsoft Entra 認証をサポートするリソースに接続し、資格情報の管理なしで Microsoft Entra トークンを取得します。
マネージド ID の利点
マネージド ID を使用する利点:
マネージド ID を使用すると、資格情報は Azure によって完全に管理、ローテーション、保護されます。 ID は Azure リソースとともに提供され、削除されます。 マネージド ID により、Azure リソースと、Microsoft Entra 認証をサポートするサービスとの通信が可能になります。
割り当てられた特権ロールを含め、誰も資格情報にアクセスできません。これは、コードに含まれることによって誤って漏洩することはありません。
マネージド ID の使用
マネージド ID は、Microsoft Entra 認証をサポートするサービス間の通信に最適です。 ソース システムからターゲット サービスにアクセスを要求します。 任意の Azure リソースをソース システムにすることができます。 たとえば、Azure 仮想マシン (VM)、Azure Function インスタンス、Azure App Services インスタンスでマネージド ID がサポートされています。
詳細については、「マネージド ID を何に使用できるか」のビデオを参照してください。
認証と権限承認
マネージド ID を使用すると、ソース システムによって、所有者の資格情報の管理なしで、Microsoft Entra ID からトークンが取得されます。 資格情報は Azure で管理されます。 ソース システムによって取得されたトークンは、認証のためにターゲット システムに提示されます。
ターゲット システムは、アクセスを許可するために、ソース システムの認証および認可を行います。 ターゲット サービスで Microsoft Entra 認証がサポートされている場合は、Microsoft Entra ID によって発行されたアクセス トークンが受け入れられます。
Azure には、コントロール プレーンとデータ プレーンがあります。 コントロール プレーンでリソースを作成し、データ プレーンでアクセスします。 たとえば、コントロール プレーンで Azure Cosmos DB データベースを作成しますが、そのクエリはデータ プレーンで実行します。
ターゲット システムで認証のためにトークンが受け入れられると、コントロール プレーンとデータ プレーン用に認可のメカニズムがサポートされます。
Azure コントロール プレーン操作は Azure Resource Manager によって管理され、Azure ロールベースのアクセス制御 (Azure RBAC) を使用します。 データ プレーンでは、ターゲット システムに認可メカニズムがあります。 Azure Storage によってデータ プレーンで Azure RBAC がサポートされています。 たとえば、Azure App Services を使用するアプリケーションで Azure Storage からデータを読み取ることができ、Azure Kubernetes Service を使用するアプリケーションで Azure Key Vault に格納されているシークレットを読み取ることができます。
詳細情報:
- Azure Resource Manager とは
- Azure のロールベースの Azure RBAC とは
- Azure コントロール プレーンとデータ プレーン
- マネージド ID を使用して他のサービスにアクセスできる Azure サービス
システム割り当てとユーザー割り当てのマネージド ID
マネージド ID には、システム割り当てとユーザー割り当ての 2 種類があります。
システム割り当てマネージド ID:
- Azure リソースとの一対一のリレーションシップ
- たとえば、各 VM に関連付けられた一意のマネージド ID があります
- Azure リソースのライフサイクルに関連付けられています。 リソースが削除されると、それに関連付けられているマネージド ID が自動的に削除されます。
- このアクションにより、孤立したアカウントからのリスクが排除されます
ユーザー割り当てマネージド ID
- ライフサイクルが、Azure リソースから独立しています。 ユーザーがライフサイクルを管理します。
- 割り当て済みのユーザー割り当てマネージド ID は、Azure リソースが削除されても自動的に削除されません
- ユーザー割り当てマネージド ID は 0 個以上の Azure リソースに割り当てます
- 事前に ID を作成し、後でリソースに割り当てます
Microsoft Entra ID でマネージド ID サービス プリンシパルを検索する
マネージド ID を見つけるには、以下を使用できます。
- Azure portal の [エンタープライズ アプリケーション] ページ
- Microsoft Graph
Azure ポータル
Azure portal の左側のナビゲーションで、[Microsoft Entra ID] を選択します。
左側のナビゲーションで、[エンタープライズ アプリケーション] を選択します。
[アプリケーションの種類] 列の [値] で、下矢印を選択して [マネージド ID] を選択します。
Microsoft Graph
Microsoft Graph に対する次の GET 要求を使用して、テナント内のマネージド ID の一覧を取得します。
https://graph.microsoft.com/v1.0/servicePrincipals?$filter=(servicePrincipalType eq 'ManagedIdentity')
これらの要求をフィルター処理できます。 詳細については、「servicePrincipal を取得する」を参照してください。
マネージド ID のセキュリティの評価
マネージド ID のセキュリティを評価するには、以下を行います。
特権を調べて、最小特権モデルが選択されていることを確認します
- 次の Microsoft Graph コマンドレットを使用して、マネージド ID に割り当てられているアクセス許可を取得します。
Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId <String>
マネージド ID が特権グループ (管理者グループなど) に含まれていないことを確認します。
- 高い特権を持つグループのメンバーを Microsoft Graph で列挙するには、以下を行います。
Get-MgGroupMember -GroupId <String> [-All <Boolean>] [-Top <Int32>] [<CommonParameters>]
マネージド ID に移行する
サービス プリンシパルまたは Microsoft Entra ユーザー アカウントを使用している場合は、マネージド ID の使用を評価します。 資格情報の保護、ローテーション、および管理を行う必要がなくなります。
次のステップ
サービス アカウント