暗号化されたオブジェクトと情報を検索する

Azure AI Search では、顧客が管理する暗号化キーが Azure Key Vault で作成、保存、および管理されます。 オブジェクトが暗号化されているかどうかや、Azure Key Vault で使用されたキー名またはバージョンを調べる必要がある場合、REST API または Azure SDK を使用して、検索サービスのオブジェクトの定義から encryptionKey プロパティを取得します。

カスタマー マネージド キーで暗号化されていないオブジェクトは、encryptionKey プロパティが空になります。 それ以外の場合、定義は次の例のようになります。

"encryptionKey":{
   "keyVaultUri":"https://demokeyvault.vault.azure.net",
   "keyVaultKeyName":"myEncryptionKey",
   "keyVaultKeyVersion":"eaab6a663d59439ebb95ce2fe7d5f660",
   "accessCredentials":{
      "applicationId":"00000000-0000-0000-0000-000000000000",
      "applicationSecret":"myApplicationSecret"
   }
}

encryptionKey のコンストラクトは、暗号化されたすべてのオブジェクトで共通です。 オブジェクトの名前や説明と同じ第 1 レベルのプロパティとなります。

オブジェクト定義を取得するためのアクセス許可

Search Service Contributor またはそれと同等のアクセス許可が必要です。 代わりにキーベースの認証を使用するには、管理者 API キーを指定します。 オブジェクト定義とメタデータを返す要求には、管理者アクセス許可が必要です。 管理 API キーを取得する最も簡単な方法は、ポータルを使用することです。

  1. Azure portal にサインインして、検索サービスの概要ページを開きます。

  2. 左側で [キー] を選択し、管理 API をコピーします。

残りの手順では、PowerShell と REST API に切り替えます。 ポータルでは、どのオブジェクトの暗号化キー情報も表示されません。

オブジェクトのプロパティを取得する

PowerShell と REST から次のコマンドを実行して、変数を設定し、オブジェクトの定義を取得します。

.NETPythonJavaScriptJava 用の Azure SDK を使用することもできます。

まず、Azure アカウントに接続します。

Connect-AzAccount

テナントに複数のアクティブなサブスクリプションがある場合は、検索サービスを含むサブスクリプションを指定します:

 Set-AzContext -Subscription <your-subscription-ID>

現在のセッションの各要求で使用されるヘッダーを設定します。 検索サービス認証に使用する管理 API キーを指定します。

$headers = @{
'api-key' = '<YOUR-ADMIN-API-KEY>'
'Content-Type' = 'application/json'
'Accept' = 'application/json' }

すべての検索インデックスの一覧を返すには、エンドポイントをインデックス コレクションに設定します。

$uri= 'https://<YOUR-SEARCH-SERVICE>.search.windows.net/indexes?api-version=2023-11-01&$select=name'
Invoke-RestMethod -Uri $uri -Headers $headers | ConvertTo-Json

特定のインデックス定義を返すには、パスにその名前を指定します。 encryptionKey プロパティは末尾にあります。

$uri= 'https://<YOUR-SEARCH-SERVICE>.search.windows.net/indexes/<YOUR-INDEX-NAME>?api-version=2023-11-01'
Invoke-RestMethod -Uri $uri -Headers $headers | ConvertTo-Json

シノニム マップを返すには、エンドポイントをシノニム コレクションに設定し、要求を送信します。

$uri= 'https://<YOUR-SEARCH-SERVICE>.search.windows.net/synonyms?api-version=2023-11-01&$select=name'
Invoke-RestMethod -Uri $uri -Headers $headers | ConvertTo-Json

次の例では、定義の末尾の方にある encryptionKey プロパティを含む特定のシノニム マップ定義を返します。

$uri= 'https://<YOUR-SEARCH-SERVICE>.search.windows.net/synonyms/<YOUR-SYNONYM-MAP-NAME>?api-version=2023-11-01'
Invoke-RestMethod -Uri $uri -Headers $headers | ConvertTo-Json

同じパターンを使用して、インデクサー、スキルセット、データ ソース、インデックスの別名などの他の最上位オブジェクトの encryptionKey プロパティを返します。

次のステップ

キーの使用状況を監視できるように、Azure Key Vault でログを有効にすることをお勧めします。

Azure Key の使用またはカスタマー マネージド暗号化の構成について詳しくは、次の記事を参照してください。