💾

マネージドIDの資格情報利用

に公開

みなさま、はじめまして。
AZPower 株式会社のクラウドインテグレーション部に所属しているSUGI-CHANです。
私の方から、最近のAzureの新機能について紹介させて頂きます。

★分類:ID・セキュリティ
★機能:マネージドIDの資格情報利用
★提供:GAされている
    https://learn.microsoft.com/ja-jp/entra/identity/managed-identities-azure-resources/overview

ーーーー
★何ができるようになったか?
Microsoft Entra アプリでマネージドIDをフェデレーション資格情報として使用できるようになった

★マネージドIDとは?
Microsoft Entra IDによって管理されるIDで、Azureリソースが他のリソースにアクセスするための認証情報を自動的に提供する仕組み

★そもそもフェデレーション資格情報とは?
Microsoft Entra ID の「フェデレーション資格情報」とは、外部の ID プロバイダーと Microsoft Entra IDの間に信頼関係を構築し、アプリケーションがシークレット(パスワードやクライアントシークレット)なしで安全に認証・アクセスできるようにする仕組みのこと

★今まではどうしていたか?
この機能(マネージドIDを資格情報として利用する)が登場する前は、Azureリソースやアプリケーションが他のサービスにアクセスする際、以下の様な方法で対応していた

  1. クライアントシークレット(アプリケーションシークレット)
    • Microsoft Entra のアプリケーションに対して、手動でシークレット(パスワードのようなもの)を発行し、それをコードや構成ファイルに埋め込んで使用
    • 課題:期限切れ、漏洩リスク、ローテーションの手間

  2. 証明書(X.509証明書)
    • より安全な方法として、公開鍵・秘密鍵ペアを使った証明書ベースの認証
    • 課題:証明書の管理・更新が煩雑。セキュリティポリシーにより厳格な運用が必要

  3. 環境変数やKey Vaultに格納
    • シークレットや証明書をAzure Key Vaultに格納し、そこから取得して使用
    • 課題:Key Vault自体へのアクセスにも認証が必要で、結局どこかで資格情報の管理が必要

★この機能が提供されたことによって何が変わるの?
・資格情報の管理が不要に
従来はアプリケーションがAzureリソースにアクセスするために、クライアントシークレットや証明書を手動で管理する必要があった
→ 今は マネージドIDが自動的に認証情報を提供するため、開発者や運用者が資格情報を扱う必要がなくなった
→扱う必要がなくなったという事は、情報の漏洩リスクがなくなり、資格情報の更新を忘れてしまう、ということも考えなくてよくなった

・開発や運用がシンプルに
コードや構成ファイルに資格情報を埋め込む必要がなくなるので、安全性向上もさることながら、Azure SDKやCLIで簡単にマネージドIDを使った認証が可能となる

●ここまでのまとめ:何が変わったか(イメージ)

~~~

●ユーザー側の主なメリット

  1. 資格情報の管理が不要
     →Azureが自動的に認証情報を提供してくれるため、「設定ミスによるセキュリティインシデントのリスク」が減る

  2. セキュリティの強化
     →漏洩リスク低減の他、マネージドIDを、Microsoft Entra IDのアクセス制御ポリシーで管理可能

  3. 開発・運用の効率化
     →有効期限の管理などから解放される。

  4. フェデレーション資格情報として外部連携に役立つ
     →外部ツールからのアクセスも、信頼関係により安全に実現

  5. コンプライアンス対応がしやすくなる
    • Azureでの管理により監査やログの取得が容易

●こんなユーザーに特にメリット大
• セキュリティ重視の企業(資格情報漏洩が致命的な業種)
• クラウドネイティブ開発者(Azure SDKやIaCを活用している)
• インフラ管理者(資格情報の管理負担を減らしたい)

●デメリットや注意点もある

  1. 使い方や操作感が変わる
  2. 一部のサービスやシナリオでマネージドID未対応の可能性
  3. トラブルシューティングが難しくなることがある
      →認証失敗の際、マネージドIDは「トークンで管理」の為、失敗理由が見えにくい
  4. ロールとアクセス制御の設計をしっかり行う必要がある________________________________________

~~~

設定手順:マネージドIDを使って資格情報を利用する
① AzureリソースにマネージドIDを有効化
• 対象:VM、App Service、Azure Functionsなど

• 手順:

  1. Azureポータルで対象リソースを開く
  2. 「ID」→「システム割り当て」または「ユーザー割り当て」を 有効化

  1. 有効化すると、Microsoft Entra IDにサービスプリンシパルが自動作成される

② アクセス先サービスにロールを割り当て
• 例:Key Vault、Storage、SQL Databaseなど

• 手順:

  1. アクセス先リソースの「アクセス制御 (IAM)」を開く
  2. 「ロールの割り当て」→「追加」
  3. マネージドIDに必要なロール(例:Key Vault Secrets User)を付与

③ 各アプリケーションコードで資格情報を利用
• リソースが Azure Instance Metadata Service (IMDS) にトークンを要求
• IMDSがMicrosoft Entra IDトークンを要求し、返却
• アプリはそのトークンを使ってサービスにアクセス

●まとめ

~~~~
●終わりに

構成の操作自体は、それほど難しくはない内容と思います。
が、初めての技術ブログ投稿(プライベートでもブログはほとんどやったことなく、FBメイン)のため、読みづらい、わかりづらいなどもあろうかと思います。。

これからいろいろな記事を投稿していければと思いますので、よろしくお願いいたします。
簡単ではありますが、今回はここまでとさせていただきます。

AZPower Blog

Discussion