マネージド ID を使用して Azure Storage に接続する (Azure AI 検索)

この記事では、接続文字列で資格情報を指定する代わりに、マネージド ID を使用して Azure Storage アカウントへの検索サービス接続を構成する方法を説明します。

システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用できます。 マネージド ID は Microsoft Entra のログイン ID であり、Azure Storage にアクセスするためにロールの割り当てを必要とします。

前提条件

Note

ストレージがネットワークで保護されており、かつ検索サービスと同じリージョンにある場合は、システム割り当てマネージド ID と、信頼されたサービスとしての接続、またはリソース インスタンス ルールを使用した接続のいずれかのネットワーク オプションを使用する必要があります。

Azure Storage でロールの割り当てを作成する

  1. Azure portal にサインインして、目的のストレージ アカウントを見つけます。

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加] を選択し、[ロールの割り当て] を選択します。

  4. 職務権限ロールの一覧から、検索サービスに必要なロールを選択します。

    タスク ロール割り当て
    インデクサーを使用した BLOB インデックス作成 ストレージ BLOB データ閲覧者を追加します
    インデクサーを使用した ADLS Gen2 インデックス作成 ストレージ BLOB データ閲覧者を追加します
    インデクサーを使用したテーブル インデックス作成 閲覧者とデータ アクセスを追加します
    インデクサーを使用したファイル インデックス作成 閲覧者とデータ アクセスを追加します
    ナレッジ ストアに書き込む オブジェクト プロジェクションとファイル プロジェクションに Storage Blob DataContributor を追加し、テーブル プロジェクションにリーダーとデータ アクセスを追加します。
    エンリッチメント キャッシュに書き込む ストレージ BLOB データ共同作成者を追加します
    デバッグ セッション状態を保存する ストレージ BLOB データ共同作成者を追加します
  5. [次へ] を選択します。

  6. [マネージド ID] を選択し、[メンバー] を選択します。

  7. システム割り当てマネージド IDまたはユーザー割り当てマネージド ID でフィルター処理します。 以前に検索サービス用に作成したマネージド ID が表示されます。 お持ちでない場合は、マネージド ID 使用するように検索を構成する方法に関する記事を照してください。 設定済みであっても使用可能になっていない場合は、数分お待ちください。

  8. ID を選択し、ロールの割り当てを保存します。

接続文字列内のマネージド ID を指定する

ロールの割り当てを作成したら、そのロールのもとで動作する Azure Storage への接続を設定できます。

インデクサーでは、外部データ ソースへの接続にデータ ソース オブジェクトを使用します。 このセクションでは、データ ソースの接続文字列で、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を指定する方法について説明します。 マネージド ID に関する記事に、その他の接続文字列の例が記載されています。

ヒント

Azure portal でシステムまたはユーザー割り当てマネージド ID を指定して Azure Storage へのデータ ソース接続を作成し、JSON 定義を表示して接続文字列がどのように作成されているかを確認できます。

システム割り当てマネージド ID

システム割り当てマネージド ID を既に構成していることが必要であり、それに、Azure Storage でのロールの割り当てが必要です。

システム割り当てマネージド ID を使用して行われた接続の場合、データ ソース定義に対して、credentials プロパティの形式を変更するだけで済みます。

アカウント キーもパスワードもない ResourceId を指定します。 ResourceId には、ストレージ アカウントのサブスクリプション ID、ストレージ アカウントのリソース グループ、ストレージ アカウント名を含める必要があります。

POST https://[service name].search.windows.net/datasources?api-version=2023-11-01

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    }
}   

ユーザー割り当てマネージド ID

ユーザー割り当てマネージド ID を既に構成し、検索サービスに関連付けている必要があり、その ID には Azure Storage でのロールの割り当てが必要です。

ユーザー割り当てマネージド ID を使用して行われる接続では、システム割り当てマネージド ID と同じ資格情報、およびユーザー割り当てマネージド ID のコレクションを含む追加の ID プロパティを使用します。 データ ソースを作成するとき、ユーザー割り当てマネージド ID を 1 つだけ指定する必要があります。 userAssignedIdentity をユーザー割り当てマネージド ID に設定します。

アカウント キーもパスワードもない ResourceId を指定します。 ResourceId には、ストレージ アカウントのサブスクリプション ID、ストレージ アカウントのリソース グループ、ストレージ アカウント名を含める必要があります。

次の例に示す構文を使用して identity を指定します。

POST https://[service name].search.windows.net/datasources?api-version=2023-11-01

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MY-DEMO-USER-MANAGED-IDENTITY" 
    }
}   

リモート サービスの接続情報とアクセス許可は、インデクサー実行中の実行時に検証されます。 インデクサーが成功した場合、接続構文とロールの割り当ては有効です。 詳細については、「インデクサー、スキル、ドキュメントを実行またはリセットする」を参照してください。

ストレージ アカウントのネットワークで保護されたデータにアクセスする

Azure ストレージ アカウントは、ファイアウォールと仮想ネットワークを利用することでさらにセキュリティを強化できます。 ファイアウォールまたは仮想ネットワークによってセキュリティで保護されているストレージ アカウントのコンテンツのインデックスを作成する場合は、信頼されたサービスとして Azure Storage へのインデクサー接続を行う方法に関するページを参照してください。

関連項目