Techioz Blog

マネージド ID を使用して Azure Cognitive Search に接続中に認証が取得されない

概要

Ruby On Rails アプリケーションのマネージド ID を使用して Azure Cognitive Search (ACS) にアクセスしようとしています。

以下は使用されたスクリプトです

COGNITIVE_SEARCH_BASE_URL = "https://#{VaultService.get_secret('COGNITIVE-SEARCH-SERVICE-NAME')}.search.windows.net".freeze
API_VERSION = '2020-06-30'.freeze
endpoint = "#{COGNITIVE_SEARCH_BASE_URL}/indexes/temp/docs/$count?api-version=#{API_VERSION}"
api_url = URI(endpoint)
https = Net::HTTP.new(api_url.host, api_url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(api_url)
request["Content-Type"] = "application/json"
request["Authorization"] =  AzureAd::ManagedIdentityTokenProvider.new('https://search.azure.com', client_id: ENV['AKS_MANAGED_IDENTITY_ID']).get_authentication_header
request = https.request(request)
JSON.parse(request.read_body)

ベアラー トークンは、次の参照を適用して生成されます:- https://github.com/Azure/azure-sdk-for-ruby/blob/master/runtime/ms_rest_azure/lib/ms_rest_azure/credentials/msi_token_provider.rb

マネージド ID には、ACS のロールに対して次のアクセス権があります:-

以下は、RBAC アクセスを使用するために行われた設定です。

このドキュメントに従いました:- https://learn.microsoft.com/en-us/azure/search/search-security-rbac?tabs=config-svc-rest%2Croles-portal%2Ctest-rest%2Ccustom-role-portal %2Cdisable-keys-rest#test-role-assignments

上記のスクリプトを実行すると、401 不正エラーが発生します。 誰か私がここで間違っていることを助けてくれませんか?

解決策

今は機能しています。ロールがマネージド ID に割り当てられるまでに 10 分ほどかかったと思います。先ほどは、1 分程度かかるだろうと予想していました。