-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureManagedIdentity
nishi_74322014 edited this page Aug 4, 2026
·
1 revision
- 戻る(仮想アカウント、Role Based Access Control (RBAC))
- Azure サービス プリンシパル
- Azure Managed ID
-
Azure サービス プリンシパル をラップする。
- Role Based Access Control (RBAC) のアクセス権を付与するために使用される。
- マネージド・サービス ID (MSI) の新しい名前 → マネージド ID。
-
簡単になると言うが、何が簡単になるのか?
-
コードに資格情報を追加しなくても、Azure AD の認証を
サポートするさまざまなサービス(Key Vault(MS_AzureKeyVault.md)を含む)に対して
認証を行うことができる。 - 内部的には、クライアントが IMDS に対して
access_tokenを要求する。
-
コードに資格情報を追加しなくても、Azure AD の認証を
-
仮想アカウント的な動きもする(→ システム割り当てマネージド 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 を返す |
補足: 用途で使い分ける。
種別 ライフサイクル 割り当て システム割り当て リソースと一体(リソース削除で消える) 1 リソースに 1 つ ユーザー割り当て 独立したリソースとして存在 複数リソースで共有できる スケール セットや複数の App Service に同じ権限を与えるなら ユーザー割り当てが便利である。 一方、リソースと権限を確実に一緒に片付けたいなら システム割り当てのほうが漏れが少ない。
アプリ → IMDS (169.254.169.254) → Azure AD → access_token
- IMDS は VM 内からしか到達できないリンク ローカル アドレスである。
- アプリはシークレットを一切持たず、 ローカルのエンドポイントを叩くだけでトークンを得られる。
補足(実装): .NET では
Azure.IdentityのDefaultAzureCredentialを使うのが標準である。 ローカル開発では開発者の資格情報、 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 は最小限にする (盗まれた場合の被害範囲がそのまま権限範囲になる)
- Azure サービス プリンシパル
- Role Based Access Control (RBAC)
- Azureのアクセス制御と権限
- 仮想アカウント
- gMSA
- WebAPIの認証
- Azure リソースのマネージド ID - Microsoft Learn
Tags: セキュリティ, アカウント, クラウド, 認証基盤, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。