マネージド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リソースやアプリケーションが他のサービスにアクセスする際、以下の様な方法で対応していた
-
クライアントシークレット(アプリケーションシークレット)
• Microsoft Entra のアプリケーションに対して、手動でシークレット(パスワードのようなもの)を発行し、それをコードや構成ファイルに埋め込んで使用
• 課題:期限切れ、漏洩リスク、ローテーションの手間 -
証明書(X.509証明書)
• より安全な方法として、公開鍵・秘密鍵ペアを使った証明書ベースの認証
• 課題:証明書の管理・更新が煩雑。セキュリティポリシーにより厳格な運用が必要 -
環境変数やKey Vaultに格納
• シークレットや証明書をAzure Key Vaultに格納し、そこから取得して使用
• 課題:Key Vault自体へのアクセスにも認証が必要で、結局どこかで資格情報の管理が必要
★この機能が提供されたことによって何が変わるの?
・資格情報の管理が不要に
従来はアプリケーションがAzureリソースにアクセスするために、クライアントシークレットや証明書を手動で管理する必要があった
→ 今は マネージドIDが自動的に認証情報を提供するため、開発者や運用者が資格情報を扱う必要がなくなった
→扱う必要がなくなったという事は、情報の漏洩リスクがなくなり、資格情報の更新を忘れてしまう、ということも考えなくてよくなった
・開発や運用がシンプルに
コードや構成ファイルに資格情報を埋め込む必要がなくなるので、安全性向上もさることながら、Azure SDKやCLIで簡単にマネージドIDを使った認証が可能となる
●ここまでのまとめ:何が変わったか(イメージ)
~~~
●ユーザー側の主なメリット
-
資格情報の管理が不要
→Azureが自動的に認証情報を提供してくれるため、「設定ミスによるセキュリティインシデントのリスク」が減る -
セキュリティの強化
→漏洩リスク低減の他、マネージドIDを、Microsoft Entra IDのアクセス制御ポリシーで管理可能 -
開発・運用の効率化
→有効期限の管理などから解放される。 -
フェデレーション資格情報として外部連携に役立つ
→外部ツールからのアクセスも、信頼関係により安全に実現 -
コンプライアンス対応がしやすくなる
• Azureでの管理により監査やログの取得が容易
●こんなユーザーに特にメリット大
• セキュリティ重視の企業(資格情報漏洩が致命的な業種)
• クラウドネイティブ開発者(Azure SDKやIaCを活用している)
• インフラ管理者(資格情報の管理負担を減らしたい)
●デメリットや注意点もある
- 使い方や操作感が変わる
- 一部のサービスやシナリオでマネージドID未対応の可能性
- トラブルシューティングが難しくなることがある
→認証失敗の際、マネージドIDは「トークンで管理」の為、失敗理由が見えにくい - ロールとアクセス制御の設計をしっかり行う必要がある________________________________________
~~~
設定手順:マネージドIDを使って資格情報を利用する
① AzureリソースにマネージドIDを有効化
• 対象:VM、App Service、Azure Functionsなど
• 手順:
- Azureポータルで対象リソースを開く
- 「ID」→「システム割り当て」または「ユーザー割り当て」を 有効化
- 有効化すると、Microsoft Entra IDにサービスプリンシパルが自動作成される
② アクセス先サービスにロールを割り当て
• 例:Key Vault、Storage、SQL Databaseなど
• 手順:
- アクセス先リソースの「アクセス制御 (IAM)」を開く
- 「ロールの割り当て」→「追加」
- マネージドIDに必要なロール(例:Key Vault Secrets User)を付与
③ 各アプリケーションコードで資格情報を利用
• リソースが Azure Instance Metadata Service (IMDS) にトークンを要求
• IMDSがMicrosoft Entra IDトークンを要求し、返却
• アプリはそのトークンを使ってサービスにアクセス
●まとめ
~~~~
●終わりに
構成の操作自体は、それほど難しくはない内容と思います。
が、初めての技術ブログ投稿(プライベートでもブログはほとんどやったことなく、FBメイン)のため、読みづらい、わかりづらいなどもあろうかと思います。。
これからいろいろな記事を投稿していければと思いますので、よろしくお願いいたします。
簡単ではありますが、今回はここまでとさせていただきます。
Discussion