次の方法で共有


異なるテナント間でカスタマー マネージド キーを構成する

Azure Key Vault と Azure AI Search が異なる Azure テナントにある場合は、Microsoft Entra マルチテナント アプリを使用して、別のテナントのキーを使用して カスタマー マネージド キー (CMK) 暗号化 を有効にします。

[前提条件]

テナント A でマルチテナント Microsoft Entra アプリケーションを作成する

Azure CLI を使用して要求を送信します。 Azure AI Search を含むテナントを テナント A と参照します。

  1. テナント ID を取得します。

    az account show --query tenantId --output tsv

  2. テナント A にサインインしていることを確認します。

    az login --tenant <tenant-A-id>

  3. アプリケーション登録を作成します。

    az ad app create --display-name cross-tenant-auth --sign-in-audience AzureADMultipleOrgs

  4. この手順のアプリ ID 出力を保存します。

マルチテナント アプリケーションにクライアント シークレットを追加する

  1. テナント A のマルチテナント アプリケーションにクライアント シークレットを追加するには、次のコマンドを実行します。

    az ad app credential reset --id <multitenant-app-id>

  2. この手順のパスワード出力を保存します。 パスワード出力は、Azure AI Search で CMK を設定 するために必要な入力です。

  3. クライアント シークレットの有効期限を指定するには、このコマンドに終了日パラメーターを指定します。

    az ad app credential reset --id <multitenant-app-id> --end-date <end-date>

    終了日パラメーターは、ISO 8601 形式の日付を受け取ります。 たとえば、 az ad app credential reset --id <multitenant-app-id> --end-date 2026-12-31と指定します。

マルチテナント アプリケーションのテナント B にサービス プリンシパルを作成する

Azure Key Vault を含むテナントを テナント B と見なします。テナント B で、テナント A のマルチテナント アプリケーションのサービス プリンシパルを作成します。

  1. テナント B にログインします。

    az login --tenant <tenant-B-id>

  2. 最初の手順のマルチテナント アプリ ID 出力を使用して、サービス プリンシパルを作成します。

    az ad sp create --id <multitenant-app-id>

    このサービス プリンシパルは、テナント A のマルチテナント アプリケーションのインスタンスです。テナント B でこのサービス プリンシパルに割り当てられたロールは、テナント A のマルチテナント アプリケーションにも割り当てられます。

  3. 次のコマンドで "appOwnerOrganizationId" を確認して、テナント A と B の間のリンクを確認します。

    az ad sp show --id <multitenant-app-id>

    このコマンドは、サービス プリンシパルの詳細を JSON で表示します。 出力で "appOwnerOrganizationId" フィールドを探して、テナント A の ID と一致することを確認します。

  4. このステップで、サービス プリンシパルのオブジェクト ID ("id" フィールドから) を保存します。 オブジェクト ID は、Azure AI Search で CMK を設定するために必要な入力です。

  5. Azure Key Vault のリソース ID を取得します。

    az keyvault show --name <key-vault-name> --query id --output tsv

  6. テナント B の キー コンテナーの Key Vault Crypto Service Encryption ユーザー ロールを新しいサービス プリンシパルに割り当てます。

    az role assignment create --assignee <service-principal-object-id> --role "Key Vault Crypto Service Encryption User" --scope <key-vault-resource-id>

    この割り当ての例は次のようになります。

    az role assignment create --assignee 12345678-1234-1234-1234-123456789012 --role "Key Vault Crypto Service Encryption User" --scope /subscriptions/87654321-4321-4321-4321-210987654321/resourceGroups/myKeyVaultRG/providers/Microsoft.KeyVault/vaults/myCompanyKeyVault

暗号化のテスト

セットアップを検証するために、検索サービス (テナント A) にテスト インデックスを作成します。 マルチテナント アプリ ID と、"アクセス資格情報" オブジェクトに追加した資格情報を使用して、他のテナントのキー コンテナーに対して認証します。

このサンプル インデックス スキーマは、テストに使用できます。 Azure portal を使用してインデックスを追加し、この JSON を指定するか、 REST クライアント を使用してインデックスの作成要求を送信できます。

{
  "name": "cross-tenant-cmk-test", 
  "fields": [ 
        { 
            "name": "id", 
            "type": "Edm.String", 
            "key": true 
        } 
      ], 
  "encryptionKey": { 
    "keyVaultUri": "https://myCompanyKeyVault.vault.azure.net/", 
    "keyVaultKeyName": "search-encryption-key", 
    "keyVaultKeyVersion": "abc123def456ghi789", 
    "accessCredentials": { 
      "applicationId": "12345678-1234-1234-1234-123456789012", 
      "applicationSecret": "secretValueFromStep2" 
    } 
  } 
}

インデックスが正常に作成されたことを確認します。

GET https://<search-service>.search.windows.net/indexes/cross-tenant-cmk-test?api-version=2025-09-01

キーをローテーションまたは管理する方法の詳細については、「 データ暗号化用にカスタマー マネージド キーを構成する」を参照してください。