ManagedIdentityCredential 認証が利用できません。管理された ID エンドポイントが見つかりません。質問する

ManagedIdentityCredential 認証が利用できません。管理された ID エンドポイントが見つかりません。質問する

ハードコードされたクライアント ID/シークレットを使用せずに、アプリ サービス (Python) が Azure Key Vault からシークレットを取得できるようにしたいので、ManagedIdentity を使用しようとしています。

  1. サービスアプリでシステムとユーザーが割り当てた機能を有効にしました
  2. サービスアプリにシークレットへのアクセスを許可するポリシーをVaultに作成しました

コード:

credentials_object = ManagedIdentityCredential()
client = SecretClient(vault_url=VAULT_URL, credential=credentials_object)
value = client.get_secret('MYKEY').value

エラー (アプリがデプロイされ、ローカルで実行されている場合):

azure.identity._exceptions.CredentialUnavailableError: ManagedIdentityCredential 認証が利用できません。マネージド ID エンドポイントが見つかりません。

何が足りないのでしょうか? ありがとうございます!

ベストアンサー1

この場合、Azure のマネージド ID 機能は、App Service がデプロイされている場合にのみ関係することを理解することが重要です。つまり、ローカルで実行する場合とデプロイされた Web アプリの両方で互換性のあるライブラリDefaultAzureCredential()を使用することになるでしょう。Azure.Identity

このクラスは、可能な認証方法の階層を実行します。ローカルで実行する場合は、サービス プリンシパルを使用することをお勧めします。Azure CLI で次のコマンドを実行して、サービス プリンシパルを作成します。az ad sp create-for-rbac --name localtest-sp-rbac --skip-assignment次に、localtest-sp-rbac必要な Azure サービスの IAM にサービス プリンシパルを追加します。

詳細情報とローカル環境の構成方法については、この記事を読むことをお勧めします。ローカル開発環境を構成する

認証情報の種類の一覧はDefaultAzureCredential()Azure ドキュメント

おすすめ記事