Azure マネージドIDについてまとめてみた

●マネージド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の公式マニュアル上でも展開されてます。(正直内容はよく分からなかった…)

https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-managed-identities-work-vm

私が見たブログ記事では、以下のような処理が行われている旨まとめられてました。

結果としては「Azure上から特殊なIPアドレス(リンクローカルアドレス)が割り当てられているAzure Instance Metadata Serviceを経由してEntra IDにトークンを要求する」という処理が行われているようです。

リンク先ではVM上からマネージドIDを利用してアクセストークンを取得する際のフローが説明されているのですが、ざっくりまとめると

  1. VM 内からのみアクセスできる Azure Instance Metadata サービス エンドポイントにトークン (http://169.254.169.254/metadata/identity/oauth2/token) を要求
  2. クライアント ID と証明書を使用してAzure Instance Metadata ServiceがMicrosoft Entra IDにトークンを要求し、Entra IDがトークンを返却する
  3. 取得したトークンを利用して認証を行う

という流れが記載されています。

●最後に

マネージドIDとは、

  • Azureリソースにアクセスする際に利用する認証方式の1つ(アクセストークンを発行)
  • 構成ファイルにアクセス情報を含めないため、セキュアなキー管理を実現
  • 2種類(システム割り当てマネージドIDとユーザー割り当てマネージドID)存在する
  • サービスプリンシパルとの違いは、アプリやスクリプトがAzureリソースにアクセスする際に用いるか、もしくはAzureリソース同士のアクセスの際に用いるか

●参考

https://qiita.com/shimonishim/items/8d01b18f512eeeae2972

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です