Skip to content

MS_AzureManagedIdentity

nishi_74322014 edited this page Aug 4, 2026 · 1 revision

Azure Managed ID

概要

  • Azure サービス プリンシパル をラップする。

    • Role Based Access Control (RBAC) のアクセス権を付与するために使用される。
    • マネージド・サービス ID (MSI) の新しい名前 → マネージド ID
  • 簡単になると言うが、何が簡単になるのか?

    • コードに資格情報を追加しなくてもAzure AD の認証を
      サポートするさまざまなサービス(Key Vault(MS_AzureKeyVault.md)を含む)に対して
      認証を行うことができる。
    • 内部的には、クライアントが IMDS に対して access_token を要求する。
  • 仮想アカウント的な動きもする(→ システム割り当てマネージド ID)。

    • Windows 認証のような感じになる。
    • クライアント&サーバでサポートが無い場合、Key Vault 経由で使用する。

補足: 「仮想アカウント 的」という喩えは的確である。 どちらも「パスワードを管理しなくてよい、リソースに紐づいた ID」であり、 資格情報のライフサイクルをプラットフォームが面倒を見る。

  • 仮想アカウント — マシン アカウントの資格情報を使う
  • マネージド ID — Azure プラットフォームが証明書を管理・ローテーションする

gMSA がドメイン環境で解いた問題を、 Azure で解いたものと考えるとよい。

詳細

用語

紐付け ≒ 関連エンティティの ID 的な。

用語 内容
クライアント ID Azure AD によって生成される ID。初期プロビジョニングの間に Azure アプリケーション、Azure サービス プリンシパル に結び付けられる
プリンシパル ID マネージド ID に対するサービス プリンシパルオブジェクトのオブジェクト ID。RBAC のアクセス権を付与するために使用される
Azure Instance Metadata Service (IMDS) クライアント ID に対する証明書が登録される。クライアントを識別し、Azure AD に問い合わせ、access_token を返す

2種類のマネージド ID

補足: 用途で使い分ける。

種別 ライフサイクル 割り当て
システム割り当て リソースと一体(リソース削除で消える) 1 リソースに 1 つ
ユーザー割り当て 独立したリソースとして存在 複数リソースで共有できる

スケール セットや複数の App Service に同じ権限を与えるなら ユーザー割り当てが便利である。 一方、リソースと権限を確実に一緒に片付けたいなら システム割り当てのほうが漏れが少ない。

動作の仕組み

アプリ → IMDS (169.254.169.254) → Azure AD → access_token
  • IMDS は VM 内からしか到達できないリンク ローカル アドレスである。
  • アプリはシークレットを一切持たず、 ローカルのエンドポイントを叩くだけでトークンを得られる。

補足(実装): .NET では Azure.IdentityDefaultAzureCredential を使うのが標準である。 ローカル開発では開発者の資格情報、 Azure 上ではマネージド ID、と自動的に切り替わる

var client = new SecretClient(
    new Uri("https://myvault.vault.azure.net/"),
    new DefaultAzureCredential());

これにより「開発環境では接続文字列、本番ではマネージド ID」という 分岐をコードから排除できる。

補足(セキュリティ): IMDS は VM 内から認証なしで叩けるため、 SSRF(サーバ サイド リクエスト フォージェリ)の標的になる。 アプリに任意の URL を取得させる機能があると、 169.254.169.254 を踏ませてトークンを盗まれうる。

  • IMDS v2 相当の保護として、Azure では Metadata: true ヘッダの付与が必須になっている(リダイレクトも不可)
  • アプリ側で外部から与えられた URL を取得しない設計にする
  • マネージド ID に与える RBAC最小限にする (盗まれた場合の被害範囲がそのまま権限範囲になる)

参考


Tags: セキュリティ, アカウント, クラウド, 認証基盤, Azure

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally