暗号化されたオブジェクトと情報を検索する
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":"00001111-aaaa-2222-bbbb-3333cccc4444",
"applicationSecret":"myApplicationSecret"
}
}
encryptionKey のコンストラクトは、暗号化されたすべてのオブジェクトで共通です。 オブジェクトの名前や説明と同じ第 1 レベルのプロパティとなります。
オブジェクト定義を取得するためのアクセス許可
Search Service Contributor またはそれと同等のアクセス許可が必要です。 代わりにキーベースの認証を使用するには、管理者 API キーを指定します。 オブジェクト定義とメタデータを返す要求には、管理者アクセス許可が必要です。 管理 API キーを取得する最も簡単な方法は、Azure portal を使用することです。
Azure portal にサインインして、検索サービスの概要ページを開きます。
左側で [キー] を選択し、管理 API をコピーします。
残りの手順では、PowerShell と REST API に切り替えます。 Azure portal では、どのオブジェクトの暗号化キー情報も表示されません。
オブジェクトのプロパティを取得する
PowerShell と REST から次のコマンドを実行して、変数を設定し、オブジェクトの定義を取得します。
.NET、Python、JavaScript、Java 用の 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=2024-07-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=2024-07-01'
Invoke-RestMethod -Uri $uri -Headers $headers | ConvertTo-Json
シノニム マップを返すには、エンドポイントをシノニム コレクションに設定し、要求を送信します。
$uri= 'https://<YOUR-SEARCH-SERVICE>.search.windows.net/synonyms?api-version=2024-07-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=2024-07-01'
Invoke-RestMethod -Uri $uri -Headers $headers | ConvertTo-Json
同じパターンを使用して、インデクサー、スキルセット、データ ソース、インデックスの別名などの他の最上位オブジェクトの encryptionKey プロパティを返します。
次のステップ
キーの使用状況を監視できるように、Azure Key Vault でログを有効にすることをお勧めします。
Azure Key の使用またはカスタマー マネージド暗号化の構成について詳しくは、次の記事を参照してください。