●マネージドIDとは?
Azureリソースへアクセスする際に利用する認証方式の1つ。
Entra認証をサポートしているサービスにアクセスするためのトークンを取得する際に利用。マネージドIDはAzure側で管理。
構成ファイルにアクセス情報(トークン、秘密鍵等)を含めなくて良いため、セキュアなキー管理が実現できる。
※トークン:ワンタイムパスワードを生成するツールの総称。簡単なイメージでいうと、データの鍵(これを持っていると毎回ログインしなくて済む)みたいなイメージ
●マネージドIDには2種類ある
①システム割り当てマネージドID
②ユーザ割り当てマネージドID
主な特徴は以下の通り。
システム割り当てマネージドD | ユーザ割り当てマネージドID | |
作成方法 | Azureリソースに紐づいて作成される | 単独のAzureリソースとして作成する |
ライフサイクル | 作成したリソースに紐付けられ、リソースが削除されるとマネージドIDも削除される | 独立したライフサイクルを持つ(特定のリソースに紐付けられない) |
Azureリソースとの関連付け | 1つのAzureリソースにのみ紐付けることができる | 1つのユーザ割り当てマネージドIDを複数のAzureリソースに紐付けることができる |
●サービスプリンシパルとは?
簡単なイメージとしては、ユーザ側で行うRole付与はサービスプリンシパルで行われており、サービスプリンシパルを経由して各種リソースにアクセスしている。
以下、サービスプリンシパルとマネージドIDの違いについてChatGPTの回答

●トークンの取得フロー
MSの公式マニュアル上でも展開されてます。(正直内容はよく分からなかった…)
私が見たブログ記事では、以下のような処理が行われている旨まとめられてました。
結果としては「Azure上から特殊なIPアドレス(リンクローカルアドレス)が割り当てられているAzure Instance Metadata Serviceを経由してEntra IDにトークンを要求する」という処理が行われているようです。
リンク先ではVM上からマネージドIDを利用してアクセストークンを取得する際のフローが説明されているのですが、ざっくりまとめると
- VM 内からのみアクセスできる Azure Instance Metadata サービス エンドポイントにトークン (http://169.254.169.254/metadata/identity/oauth2/token) を要求
- クライアント ID と証明書を使用してAzure Instance Metadata ServiceがMicrosoft Entra IDにトークンを要求し、Entra IDがトークンを返却する
- 取得したトークンを利用して認証を行う
という流れが記載されています。
●最後に
マネージドIDとは、
- Azureリソースにアクセスする際に利用する認証方式の1つ(アクセストークンを発行)
- 構成ファイルにアクセス情報を含めないため、セキュアなキー管理を実現
- 2種類(システム割り当てマネージドIDとユーザー割り当てマネージドID)存在する
- サービスプリンシパルとの違いは、アプリやスクリプトがAzureリソースにアクセスする際に用いるか、もしくはAzureリソース同士のアクセスの際に用いるか
●参考
コメントを残す