Farklı kiracılarda müşteri tarafından yönetilen anahtarları yapılandırma

Note

Azure Yapay Zeka Arama Azure portalı, REST API'leri ve Azure SDK’ları aracılığıyla kullanılabilir. Ayrıca kuruluş içeriğini Microsoft Foundry portalındaki aracılar için yeniden kullanılabilir, izin kullanan bilgi bankalarına dönüştüren yönetilen bilgi katmanı Foundry IQ'yu temel alır.

Important

(önizleme) olarak işaretlenen özellikler, özellikler veya özellikler hizmet düzeyi sözleşmesi kapsamında değildir, üretim iş yükleri için önerilmez ve genel kullanıma sunulmadan önce değişebilir veya kısıtlanabilir. Azure Yapay Zeka Arama önizleme terimleri, tek başına veya genel kullanıma sunulan bir özelliğin parçası olsun, tüm önizleme işlevleri için geçerlidir.

Bu makalede, bir hizmet sağlayıcısının kendi kiracısında Azure Yapay Zeka Arama barındırdığı ve çok kiracılı bir Microsoft Entra uygulaması kullanarak customer tarafından yönetilen anahtar (CMK) şifreleme etkinleştirdiği kiracılar arası bir senaryo açıklanmaktadır.

Bu yapılandırmada müşteri, şifreleme anahtarını yönetmek için kendi kiracısında Azure Key Vault kullanır. Hizmet sağlayıcısının bu anahtara erişimi yok.

Önkoşullar

  • Tenant A: Kiracı ve Azure Yapay Zeka Arama hizmetini ve ilişkili nesneleri (dizinler, eş anlamlı listeler, dizin oluşturucular, veri kaynakları, vektörleştiriciler, beceri kümeleri) oluşturmak için gerekli izinler. Müşteri tarafından yönetilen anahtarlar (CMK) desteği için Temel fiyatlandırma katmanı veya üzeri gerekir.

  • Arama hizmetini rol tabanlı erişim için yapılandırın (gelişmiş güvenlik için önerilir, gerekli değildir).

  • Tenant B: Azure Key Vault’a ve bu kiracıda gerekli izinlere sahip ayrı bir müşteri kiracısı:

    • Key Vault Contributor: Yeni bir key vault oluşturmanız gerekiyorsa bu rol gereklidir.
    • Microsoft Entra ID'de uygulama kaydetme izni: Kiracılar arası CMK için hizmet sağlayıcısı tarafından yapılandırılan çok kiracılı uygulamayı yüklemek için Microsoft Entra ID'de uygulama kayıtları oluşturma iznine sahip olmanız gerekir. Bunun için genellikle Uygulama Geliştirici rolü veya Uygulama Yöneticisi veya Genel Yönetici gibi daha yüksek bir yönetici rolü gerekir.
    • Key Vault Crypto Officer: Bu rol, anahtar kasasına yeni bir anahtar eklemek için gereklidir.
    • Key Vault Kripto Hizmeti Şifreleme Kullanıcısı: Bu rol, hizmet sorumlusuna Anahtar Kasası’ndaki müşteri tarafından yönetilen anahtara erişim izni vermek için, yüklü çok kiracılı uygulama için oluşturulan hizmet sorumlusuna atanmalıdır. Bunu yapmak için Kullanıcı Erişimi Yöneticisi izniniz olmalıdır. Hizmet sorumlusu GUID'sini (Nesne Kimliği olarak da bilinir) altında görüntüleyebilirsiniz: Enterprise applications\<installed multitenant application>\Manage\Properties\Object ID.
  • Azure Key Vault ayrıca rol tabanlı erişim için yapılandırılmış olmalıdır.

  • İstek göndermek için Azure CLI.

Kimlik doğrulama yaklaşımı seçme

Çok kiracılı bir Microsoft Entra uygulamasını, aşağıdaki yaklaşımlardan birini kullanarak kiracılar arası bir senaryoda müşteri tarafından yönetilen anahtarları kullanacak şekilde yapılandırabilirsiniz:

  1. Federasyon kimliği desteği (önizleme, önerilir): Kullanıcı tarafından atanan yönetilen kimlikle (UAMI), Microsoft Entra federe kimlik kimlik bilgilerini (FIC) yapılandırın. Bu yaklaşım, yönetilen kimlik belirteçlerini kullanır ve bunları erişim belirteçleriyle değiş tokuş eder; böylece uzun ömürlü gizli bilgilere duyulan ihtiyacı ortadan kaldırır ve iş yükü kimliği federasyonu ilkeleriyle uyum sağlar. Bu yaklaşım, API sürümünde federatedIdentityClientIdkullanıma sunulan önizleme 2026-05-01-preview özelliğini gerektirir.

  2. İstemci gizli anahtarları: accessCredentials özelliğini kullanarak bir istemci gizli anahtarı yapılandırın. Bu yaklaşım daha az güvenlidir ve gizli anahtarı yenilemek ve korumak için ek yönetim gerektirir.

Note

Azure Key Vault ve Azure Key Vault Yönetilen HSM, müşteri tarafından yönetilen anahtarlar için aynı API'leri ve yönetim arabirimlerini kullanır. Azure Key Vault'da desteklenen tüm işlemler Azure Key Vault Yönetilen HSM'de de desteklenir.

A kiracısında çok kiracılı bir Microsoft Entra uygulaması oluşturma

İstek göndermek için Azure CLI'yi kullanın. Azure Yapay Zeka Arama’ü içeren hizmet sağlayıcısı kiracısı, A kiracısı olarak adlandırılacaktır.

  1. Kiracı kimliğini alın: az account show --query tenantId --output tsv

  2. A kiracısında oturum açtığınızdan emin olun: az login --tenant \<tenant-A-id\>

  3. Uygulama kaydını oluşturun: az ad app create --display-name cross-tenant-auth --sign-in-audience AzureADMultipleOrgs

  4. Bu adımda uygulama kimliği çıkışını kaydedin.

Federasyon kimliği desteğini kullanma (önizleme)

Kiracılar arası bir CMK senaryosunu desteklemek için federe kimlik kullanmak:

  1. Hizmet sağlayıcısı, AI Arama hizmetini kiracısında (Kiracı A) yapılandırıyor. Bunun nasıl yapılacağını öğrenmek için bkz. Arama Hizmeti Oluşturma (Azure portalında) veya az search service create komutunu Azure CLI.

  2. Hizmet sağlayıcısı, çok kiracılı bir Microsoft Entra uygulama kaydı oluşturur. Bunun nasıl yapılacağını öğrenmek için bkz. >'Microsoft Entra ID< da uygulama kaydetme veya Azure CLI komutunu kullanma: az ad app create. Uygulama kaydını tamamladıktan sonra Uygulama (istemci) kimliğini kaydedin.

  3. Hizmet sağlayıcısı, kullanıcı tarafından atanan bir yönetilen kimlik ayarlar. Bunun nasıl yapılacağını öğrenmek için bkz. Azure portal kullanarak kullanıcı tarafından atanan yönetilen kimlikleri yönetme veya Azure CLI kullanarak kullanıcı tarafından atanan yönetilen kimlikleri yönetme.

  4. Hizmet sağlayıcısı, kullanıcı tarafından atanan yönetilen kimlikleri uygulamada federasyon kimliği kimlik bilgileri olarak yapılandırıyor. Bunun nasıl yapılacağını öğrenmek için bkz. Bir uygulamayı dış kimlik sağlayıcısına güvenecek şekilde yapılandırma.

  5. Hizmet sağlayıcısı çok kiracılı uygulama kimliğini paylaştıktan sonra müşteri, kendi kiracısında (B Kiracısı) hizmet sağlayıcısının uygulamasına Key Vault’a erişim izni verir. Uygulamayı B kiracısına yüklemek için, çok kiracılı uygulama kimliği kullanılarak bir hizmet sorumlusu oluşturulmalıdır. Hizmet sorumlusunu oluşturmak için bir admin-consent URL oluşturun ve kiracı genelinde onay verin veya Azure CLI'da az ad sp komutunu kullanın.

  6. Müşterinin kullanabileceği bir anahtar kasası yoksa bkz. Hızlı Başlangıç - Azure portalıyla Azure Key Vault oluşturma veya Hızlı Başlangıç - Azure CLI ile Azure Key Vault oluşturma. Key Vault, izin modelinin "Azure rol tabanlı erişim denetimi (RBAC)" olarak ayarlanmış olmasını ve hizmet sağlayıcısının çok kiracılı uygulamasına Key Vault Şifreleme Hizmeti Şifreleme Kullanıcısı rolü atanarak izin verilmesini gerektirir. Müşteri daha sonra bir şifreleme anahtarı oluşturabilir. Bunun nasıl yapılacağına ilişkin yönergeler için bkz. Azure RBAC kullanarak uygulamalara Azure Key Vault’a erişim izni verme.

Bu adımlar tamamlandıktan sonra hizmet sağlayıcı artık şunlara sahip olur:

  • Müşterinin kiracısında yüklü olan ve müşterinin yönettiği anahtara erişim izni verilmiş çok kiracılı bir uygulamanın uygulama kimliği.

  • Çok kiracılı uygulamada federe kimlik bilgisi olarak yapılandırılmış yönetilen kimlik.

  • Müşterinin anahtar kasasında anahtarın konumu.

Bu üç parametreyle hizmet sağlayıcısı artık Tenant A içinde Tenant B içinde depolanan müşteri tarafından yönetilen anahtarla şifrelenebilir Azure Yapay Zeka Arama nesneleri oluşturabilir. Yeni arama nesnelerinde müşteri tarafından yönetilen anahtarları yapılandırma yönergeleri için bkz. Şifrelenmiş Azure Yapay Zeka Arama veriler için müşteri tarafından yönetilen anahtarları yapılandırma.

Federe kimlik için kiracılar arası CMK yapılandırmasını doğrulama

Çok kiracılı Microsoft Entra uygulamasını yapılandırdıktan ve müşterinin Key Vault’una bağladıktan sonra, arama hizmetinizde (kiracı A) bir test nesnesi oluşturarak yapılandırmayı doğrulayın. Bu örnek, arama hizmetinin federasyon kimlik doğrulaması kullanarak müşteri tarafından yönetilen anahtara erişebildiğini onaylamak için bir dizin oluşturur.

  1. Arama hizmeti ve müşteri tarafından yönetilen anahtarla yeni bir dizin nesnesi oluşturma yönergeleri için bkz. Azure Yapay Zeka Arama şifrelenmiş veriler için müşteri tarafından yönetilen anahtarları yapılandırma.

  2. Dizin nesnesi oluşturulduktan sonra aşağıdakileri doldurmanız gerekir:

    • keyVaultUri: Müşteriden gelen URI adresi.
    • keyVaultKeyName: Müşterinin anahtar adı.
    • keyVaultKeyVersion: Müşteriden alınan anahtar sürüm.
    • userAssignedIdentity: kiracınızdaki <subscription-id> ve <resource-group> ile <identity-name>, kullanıcı tarafından atanan yönetilen kimlik adıdır.
    • federatedIdentityClientId: Bu özellik değeri, <application-client-id>, çok kiracılı uygulama (istemci) kimliği olacaktır.
    {
      "name": "cross-tenant-cmk-test",
      "fields": [
        {
          "name": "id",
          "type": "Edm.String",
          "key": true
        }
      ],
      "encryptionKey": {
        "keyVaultUri": "https://<key-vault-name>.vault.azure.net/",
        "keyVaultKeyName": "<key-name>",
        "keyVaultKeyVersion": "<key-version>",
        "identity": {
          "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
          "userAssignedIdentity": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>",
          "federatedIdentityClientId": "<application-client-id>"
        }
      }
    }
    
  3. İstek göndererek GET dizini doğrulayın: GET https://<search-service>.search.windows.net/indexes/cross-tenant-cmk-test?api-version=2026-08-01-preview

İstek başarılı olursa, kiracılar arası CMK yapılandırması düzgün çalışır.

Dizin oluşturma işlemi anahtar erişim hatasıyla başarısız olursa şunları doğrulayın:

  • Kullanıcı tarafından atanan yönetilen kimlik doğru yapılandırıldı
  • Federe kimlik bilgisi uygulamada ayarlanır
  • Key Vault erişim ilkesi veya RBAC rol atamaları doğru

Federe kimlik kullanmak bir seçenek değilse istemci parolası kullanın

Federe kimlik bir seçenek değilse, kiracılar arası CMK senaryosunu desteklemek için çok kiracılı uygulamaya bir istemci gizli anahtarı ekleyebilirsiniz:

  1. İstemci gizli anahtarını A kiracısındaki çok kiracılı uygulamaya eklemek için aşağıdaki komutu çalıştırın.

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

  2. Bu adımdaki parola çıkışını kaydedin. Parola çıkışı, Azure Yapay Zeka Arama'te CMK'yi ayarlamak için gerekli bir giriştir.

  3. İstemci gizli dizisinin süresinin ne zaman dolacağını belirtmek için bu komut için bir bitiş tarihi parametresi belirtebilirsiniz.

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

    Bitiş tarihi parametresi ISO 8601 biçiminde bir tarih kabul eder. Örneğin: az ad app credential reset --id <multitenant-app-id> --end-date 2026-12-31.

Çok kiracılı uygulama için B kiracısında hizmet sorumlusu oluşturma

Azure Key Vault'un bulunduğu kiracıyı B kiracısı olarak adlandırıyoruz. B kiracısında, A kiracısında çok kiracılı uygulama için bir hizmet sorumlusu oluşturun.

  1. B kiracısına oturum açın

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

  2. İlk adımda çok kiracılı uygulama kimliği çıkışını kullanarak hizmet sorumlusunu oluşturun:

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

    Bu hizmet sorumlusu, A kiracısında çok kiracılı uygulamanın bir örneğidir. B kiracısında bu hizmet sorumlusuna atanan roller de A kiracısında çok kiracılı uygulamaya atanır.

  3. Aşağıdaki komuttaki "appOwnerOrganizationId" öğesini gözden geçirerek A ve B kiracısı arasındaki bağlantıyı doğrulayın:

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

    Bu komut JSON'da hizmet sorumlusu ayrıntılarını görüntüler. Çıktıda "appOwnerOrganizationId" alanını, kiracı A'nın kimliğiyle eşleştiğini onaylamak için arayın.

  4. Bu adımda hizmet sorumlusunun nesne kimliğini (alandan "id" ) kaydedin. Nesne kimliği, Azure Yapay Zeka Arama'te CMK'yi ayarlamak için gerekli bir giriştir.

  5. Azure Key Vault için kaynak kimliğini alın:

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

  6. B kiracısında anahtar kasasındaki Anahtar Kasası Şifreleme Kullanıcı rolünü yeni hizmet sorumlusuna atayın.

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

    Bu atamanın bir örneği şöyle görünebilir:

    az role assignment create --assignee 00001111-aaaa-2222-bbbb-3333cccc4444 --role "Key Vault Crypto Service Encryption User" --scope /subscriptions/87654321-4321-4321-4321-210987654321/resourceGroups/myKeyVaultRG/providers/Microsoft.KeyVault/vaults/myCompanyKeyVault

İstemci gizli anahtarı için kiracılar arası CMK yapılandırmasını doğrulayın

Çok kiracılı Microsoft Entra uygulamasını yapılandırdıktan ve müşterinin Key Vault’una bağladıktan sonra, arama hizmetinizde (kiracı A) bir test nesnesi oluşturarak yapılandırmayı doğrulayın. Bu örnek, arama hizmetinin istemci parolasını kullanarak müşteri tarafından yönetilen anahtara erişebildiğini doğrulamak için bir dizin oluşturur.

  1. Arama hizmeti ve müşteri tarafından yönetilen anahtarla yeni bir dizin nesnesi oluşturma yönergeleri için bkz. Azure Yapay Zeka Arama şifrelenmiş veriler için müşteri tarafından yönetilen anahtarları yapılandırma.

  2. Azure portalını kullanarak bir dizin ekleyip bu JSON’ı belirtebilir veya bir REST istemcisi kullanarak Create Index isteği gönderebilirsiniz. Dizin nesnesi oluşturulduktan sonra aşağıdakileri doldurmanız gerekir:

    • keyVaultUri: Müşteriden gelen URI adresi.
    • keyVaultKeyName: Müşterinin anahtar adı.
    • keyVaultKeyVersion: Müşteriden alınan anahtar sürüm.
    • accessCredentials: applicationId, 00001111-aaaa-2222-bbbb-3333cccc4444 gibi bir şeydir ve applicationSecret az önce oluşturduğunuz değerdir.
{
  "name": "cross-tenant-cmk-test",
  "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true
        }
      ],
 "encryptionKey": {
        "keyVaultUri": "https://<key-vault-name>.vault.azure.net/",
        "keyVaultKeyName": "<key-name>",
        "keyVaultKeyVersion": "<key-version>",
    "accessCredentials": {
      "applicationId": "<application-client-id>",
      "applicationSecret": "<application-client-secret>"
    }
  }
}

Dizinin başarıyla oluşturulduğunu doğrulayın:

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

Anahtarları döndürme veya yönetme hakkında daha fazla bilgi için bkz. Veri şifrelemesi için müşteri tarafından yönetilen anahtarları yapılandırma.