Aracılığıyla paylaş


Rolleri kullanarak Azure AI Search'e bağlanma

Azure, platformda çalışan tüm hizmetler için genel kimlik doğrulaması ve rol tabanlı yetkilendirme sistemi sağlar. Azure AI Search'te azure rollerini atayabilirsiniz:

Arama sonuçları üzerinden kullanıcı başına erişim (bazen satır düzeyi güvenlik veya belge düzeyi güvenlik olarak da adlandırılır) rol atamaları aracılığıyla desteklenmez. Geçici bir çözüm olarak, sonuçları kullanıcı kimliğine göre kırpan güvenlik filtreleri oluşturarak istek sahibinin erişimi olmaması gereken belgeleri kaldırır. Tanıtım için RAG kullanarak bu Kurumsal sohbet örneğine bakın.

Rol atamaları, tüm araçlarda ve istemci kitaplıklarında birikmeli ve kapsamlıdır. Azure rol tabanlı erişim denetimi belgelerinde açıklanan desteklenen yaklaşımlardan herhangi birini kullanarak rol atayabilirsiniz.

Rol tabanlı erişim isteğe bağlıdır ancak önerilir. Alternatif olarak , varsayılan olan anahtar tabanlı kimlik doğrulaması kullanılır.

Önkoşullar

  • Herhangi bir bölgede, herhangi bir katmanda rol tabanlı erişim için etkinleştirilen bir arama hizmeti.

  • Sahip, Kullanıcı Erişimi Yöneticisi veya Microsoft.Authorization/roleAssignments/write izinlerine sahip özel bir rol.

Aşağıdaki roller yerleşik olarak bulunur. Bu roller yetersizse özel bir rol oluşturun.

Role Uçak Açıklama
Sahip Denetim ve Veriler Azure rolleri atama özelliği de dahil olmak üzere arama kaynağının denetim düzlemine tam erişim. Yalnızca Sahip rolü kimlik doğrulama seçeneklerini etkinleştirebilir veya devre dışı bırakabilir ya da diğer kullanıcılar için rolleri yönetebilir. Abonelik yöneticileri varsayılan olarak üyedir.

Veri düzleminde, bu rol Arama Hizmeti Katkıda Bulunanı rolüyle aynı erişime sahiptir. Belgeleri sorgulama veya dizin oluşturma özelliği dışında tüm veri düzlemi eylemlerine erişimi içerir.
Katkıda Bulunan Denetim ve Veriler Sahip ile aynı denetim düzlemi erişimi düzeyi, rol atama veya kimlik doğrulama seçeneklerini değiştirme olanağı hariç.

Veri düzleminde, bu rol Arama Hizmeti Katkıda Bulunanı rolüyle aynı erişime sahiptir. Belgeleri sorgulama veya dizin oluşturma özelliği dışında tüm veri düzlemi eylemlerine erişimi içerir.
Okuyucu Denetim ve Veriler Arama ölçümleri, içerik ölçümleri (kullanılan depolama alanı, nesne sayısı) ve veri düzlemi kaynaklarının nesne tanımları (dizinler, dizin oluşturucular vb.) dahil olmak üzere hizmetin tamamında okuma erişimi. Ancak, API anahtarlarını okuyamaz veya dizinler içindeki içeriği okuyamaz.
Arama Hizmeti Katkıda Bulunanı Denetim ve Veriler Nesne tanımlarına (dizinler, diğer adlar, eş anlamlı eşlemeler, dizin oluşturucular, veri kaynakları ve beceri kümeleri) okuma-yazma erişimi. Bu rol, nesne oluşturan geliştiricilere ve bir arama hizmetini ve nesnelerini yöneten ancak dizin içeriğine erişimi olmayan yöneticilere yöneliktir. Dizinleri oluşturmak, silmek ve listelemek, dizin tanımlarını almak, hizmet bilgilerini (istatistikler ve kotalar) almak, çözümleyicileri test etmek, eş anlamlı eşlemeleri, dizin oluşturucuları, veri kaynaklarını ve beceri kümelerini oluşturmak ve yönetmek için bu rolü kullanın. İzin listesi için bkz Microsoft.Search/searchServices/* .
Arama Dizini Veri Katkıda Bulunanı Veri Dizinlerdeki içeriğe okuma-yazma erişimi. Bu rol, bir dizinin belge koleksiyonunu içeri aktarması, yenilemesi veya sorgulaması gereken geliştiricilere veya dizin sahiplerine yöneliktir. Bu rol dizin oluşturmayı veya yönetimi desteklemez. Varsayılan olarak, bu rol bir arama hizmetindeki tüm dizinler içindir. Kapsamı daraltmak için bkz . Tek bir dizine erişim verme.
Arama Dizini Veri Okuyucusu Veri Arama dizinlerini sorgulamak için salt okunur erişim. Bu rol, sorgu çalıştıran uygulamalar ve kullanıcılar içindir. Bu rol, nesne tanımlarına okuma erişimini desteklemez. Örneğin, arama dizini tanımını okuyamaz veya arama hizmeti istatistiklerini alamazsınız. Varsayılan olarak, bu rol bir arama hizmetindeki tüm dizinler içindir. Kapsamı daraltmak için bkz . Tek bir dizine erişim verme.

Kullanım örneğiniz için yeterli izinleri almak için bu rolleri birleştirin.

Not

Azure rol tabanlı erişimi devre dışı bırakırsanız, denetim düzlemi için yerleşik roller (Sahip, Katkıda Bulunan, Okuyucu) kullanılabilir olmaya devam eder. Rol tabanlı erişimin devre dışı bırakılması yalnızca bu rollerle ilişkili verilerle ilgili izinleri kaldırır. Veri düzlemi rolleri devre dışı bırakılırsa, Arama Hizmeti Katkıda Bulunanı, denetim düzlemi Katkıda Bulunanı ile eşdeğerdir.

Rol atama

Bu bölümde, aşağıdakiler için roller atayın:

  • Hizmet yönetimi

    Role Kimlik
    Owner 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
    Contributor b24988ac-6180-42a0-ab88-20f7382dd24c
    Reader acdd72a7-3385-48ef-bd42-f606fba81ae7
  • Bir arama hizmetine geliştirme veya yazma erişimi

    Görev Rol Kimlik
    CRUD işlemleri Search Service Contributor 7ca78c08-252a-4471-8644-bb5ff32d4ba0
    Belgeleri yükleme, dizin oluşturma işlerini çalıştırma Search Index Data Contributor 8ebe5a00-799e-43f5-93ac-243d3dce84a7
    Dizini sorgulama Search Index Data Reader 1407120a-92aa-4202-b7e9-c0e197c71c8f
  • Sorgular için salt okunur erişim

    Role Kimlik
    Search Index Data ReaderPowerShell ile 1407120a-92aa-4202-b7e9-c0e197c71c8f

Hizmet yönetimi için rol atama

Hizmet yöneticisi olarak, bir arama hizmeti oluşturup yapılandırabilir ve Yönetim REST API'sinde veya eşdeğer istemci kitaplıklarında açıklanan tüm denetim düzlemi işlemlerini gerçekleştirebilirsiniz. Role bağlı olarak, veri düzlemi Arama REST API'sinin görevlerinin çoğunu da gerçekleştirebilirsiniz.

  1. Azure Portal’ında oturum açın.

  2. Arama hizmetinize gidin.

  3. Sol gezinti bölmesinde Erişim Denetimi (IAM) öğesini seçin.

  4. + Ekle>Rol ataması ekle’yi seçin.

  5. Uygun bir rol seçin:

    • Sahip (sorgu izinleri dışında tüm veri düzlemi ve denetim düzlemi işlemlerine tam erişim)
    • Katkıda Bulunan (rol atama izinleri dışında Sahip ile aynıdır)
    • Okuyucu (ölçümleri izlemek ve görüntülemek için kabul edilebilir)
  6. Üyeler sekmesinde Microsoft Entra kullanıcı veya grup kimliğini seçin.

  7. Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.

Geliştirme için rol atama

Rol atamaları arama hizmeti genelinde geneldir. İzinlerin kapsamını tek bir dizine göre ayarlamak için PowerShell veya Azure CLI kullanarak özel bir rol oluşturun.

Tam erişim sağlayan rollerin bir diğer birleşimi de Katkıda Bulunan veya Sahip'in yanı sıra Arama Dizini Veri Okuyucusu'dur.

Önemli

Bir hizmet veya dizin için rol tabanlı erişimi yapılandırıp istekte bir API anahtarı da sağlarsanız, arama hizmeti kimlik doğrulaması için API anahtarını kullanır.

  1. Azure Portal’ında oturum açın.

  2. Arama hizmetinize gidin.

  3. Sol gezinti bölmesinde Erişim Denetimi (IAM) öğesini seçin.

  4. + Ekle>Rol ataması ekle’yi seçin.

    Rol ataması ekle menüsünün açık olduğu Erişim denetimi (IAM) sayfası.

  5. Bir rol seçin:

    • Arama Hizmeti Katkıda Bulunanı (dizinler, dizin oluşturucular, beceri kümeleri ve diğer üst düzey nesneler üzerinde oluşturma-okuma-güncelleştirme-silme işlemleri)
    • Dizin Verileri Katkıda Bulunanı Arama (belgeleri yükleme ve dizin oluşturma işlerini çalıştırma)
    • Arama Dizini Veri Okuyucusu (bir dizini sorgulama)

    Tam erişim sağlayan rollerin bir diğer birleşimi de Katkıda Bulunan veya Sahip'in yanı sıra Arama Dizini Veri Okuyucusu'dur.

  6. Üyeler sekmesinde Microsoft Entra kullanıcı veya grup kimliğini seçin.

  7. Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.

  8. Diğer roller için yineleyin. Çoğu geliştiricinin üçüne de ihtiyacı vardır.

Salt okunur sorgular için rol atama

Yalnızca bir dizine okuma erişimi gerektiren uygulamalar ve işlemler için Dizin Veri Okuyucusu Arama rolünü kullanın.

Bu çok özel bir roldür. Arama, otomatik tamamlama ve öneriler için arama dizininin belge koleksiyonuna GET veya POST erişimi verir. Dizinde veya diğer üst düzey nesnelerde GET veya LIST işlemlerini ya da GET hizmeti istatistiklerini desteklemez.

Bu bölümde rol atamasını ayarlamaya yönelik temel adımlar sağlanır ve tamlık için buradadır, ancak uygulamanızı rol tabanlı erişim için yapılandırmaya yönelik kapsamlı yönergeler için Anahtarlar olmadan Azure AI Arama'yı kullanmanızı öneririz.

  1. Azure Portal’ında oturum açın.

  2. Arama hizmetinize gidin.

  3. Sol gezinti bölmesinde Erişim Denetimi (IAM) öğesini seçin.

  4. + Ekle>Rol ataması ekle’yi seçin.

  5. Arama Dizini Veri Okuyucusu rolünü seçin.

  6. Üyeler sekmesinde Microsoft Entra kullanıcı veya grup kimliğini seçin. Başka bir hizmet için izinler ayarlanıyorsa, sistem veya kullanıcı tarafından yönetilen kimlik kullanıyor olabilirsiniz. Rol ataması bir hizmet kimliğine yönelikse bu seçeneği belirleyin.

  7. Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.

Rol atamalarını test et

Rol atamalarını test etmek için bir istemci kullanın. Rollerin birikmeli olduğunu ve abonelik veya kaynak grubu düzeyi kapsamında olan devralınan rollerin kaynak (arama hizmeti) düzeyinde silinemediğini veya reddedilebileceğini unutmayın.

Uygulamanızı anahtarsız bağlantılar için yapılandırın ve test etmeden önce rol atamalarına sahip olun.

  1. Azure Portal’ında oturum açın.

  2. Arama hizmetinize gidin.

  3. Genel Bakış sayfasında Dizinler sekmesini seçin:

    • Arama Hizmeti Katkıda Bulunanları herhangi bir nesneyi görüntüleyebilir ve oluşturabilir, ancak belgeleri yükleyemez veya bir dizini sorgulayamaz. İzinleri doğrulamak için bir arama dizini oluşturun.

    • Arama Dizini Veri Katkıda Bulunanları belgeleri yükleyebilir. Portalda Verileri içeri aktarma sihirbazının dışında belge yükleme seçeneği yoktur, ancak belge yükleme izinlerini onaylamak için bir dizin oluşturucuyu sıfırlayabilir ve çalıştırabilirsiniz.

    • Arama Dizini Veri Okuyucuları dizini sorgulayabilir. İzinleri doğrulamak için Arama gezgini'ni kullanın. Sorgu gönderebilmeniz ve sonuçları görüntüleyebilmeniz gerekir, ancak dizin tanımını görüntüleyememeniz veya oluşturmamanız gerekir.

Geçerli kullanıcı olarak test et

Zaten arama hizmetinizin Katkıda Bulunanı veya Sahibiyseniz Azure AI Search'e kimlik doğrulaması için kullanıcı kimliğiniz için bir taşıyıcı belirteci sunabilirsiniz.

  1. Azure CLI kullanarak geçerli kullanıcı için taşıyıcı belirteci alın:

    az account get-access-token --scope https://search.azure.com/.default
    

    Veya PowerShell kullanarak:

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. Bu değişkenleri Visual Studio Code'da yeni bir metin dosyasına yapıştırın.

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Yapıştırın ve erişimi onaylamak için bir istek gönderin. İşte hotels-quickstart dizinini sorgulayan bir dizin

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Tek bir dizine erişim izni verme

Bazı senaryolarda, bir uygulamanın dizin gibi tek bir kaynağa erişimini sınırlamak isteyebilirsiniz.

Portal şu anda bu ayrıntı düzeyinde rol atamalarını desteklememektedir, ancak PowerShell veya Azure CLI ile yapılabilir.

PowerShell'de New-AzRoleAssignment komutunu kullanarak Azure kullanıcı veya grup adını ve atamanın kapsamını sağlayın.

  1. Azure ve AzureAD modüllerini yükleyin ve Azure hesabınıza bağlanın:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Kapsamı tek bir dizine belirlenmiş bir rol ataması ekleyin:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Özel rol oluşturma

Yerleşik roller doğru izin birleşimini sağlamıyorsa, ihtiyacınız olan işlemleri desteklemek için özel bir rol oluşturabilirsiniz.

Bu örnek, Arama Dizini Veri Okuyucusu'na kopyalayıp dizinleri ada göre listeleme özelliğini ekler. Normalde, bir arama hizmetindeki dizinlerin listelenmesi yönetim hakkı olarak kabul edilir.

Bu adımlar, Azure portalını kullanarak Azure özel rollerini oluşturma veya güncelleştirme kaynaklarından türetilir. Mevcut bir rolden kopyalama, arama hizmeti sayfasında desteklenir.

Bu adımlar, dizinleri ada göre listelemek için arama sorgusu haklarını genişleten özel bir rol oluşturur. Dizinleri listeleme genellikle bir yönetici işlevi olarak kabul edilir.

  1. Azure portalında arama hizmetinize gidin.

  2. Sol gezinti bölmesinde Erişim Denetimi (IAM) öğesini seçin.

  3. Eylem çubuğunda Roller'i seçin.

  4. Dizin Veri Okuyucusu'na (veya başka bir role) sağ tıklayın ve Özel rol oluşturma sihirbazını açmak için Kopyala'yı seçin.

  5. Temel Bilgiler sekmesinde, özel rol için "Arama Dizini Veri Gezgini" gibi bir ad sağlayın ve İleri'yi seçin.

  6. İzinler sekmesinde İzin ekle'yi seçin.

  7. İzin ekle sekmesinde Microsoft Arama kutucuğunu arayın ve seçin.

  8. Özel rolünüz için izinleri ayarlayın. Sayfanın üst kısmında, varsayılan Eylemler seçimini kullanarak:

    • Microsoft.Search/operations altında Okuma: Kullanılabilir tüm işlemleri listele'yi seçin.
    • Microsoft.Search/searchServices/indexes altında Oku : Dizini Oku'ya tıklayın.
  9. Aynı sayfada Veri eylemleri'ne geçin ve Microsoft.Search/searchServices/indexes/documents altında Oku : Belgeleri Oku'ya tıklayın.

    JSON tanımı aşağıdaki örneğe benzer:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Rolü oluşturmak için Gözden geçir + oluştur'u seçin. Artık role kullanıcı ve grup atayabilirsiniz.

Koşullu Erişim

Çok faktörlü kimlik doğrulaması gibi kuruluş ilkelerini zorunlu kılmanız gerekiyorsa Microsoft Entra Koşullu Erişim'i öneririz.

Azure AI Search için Koşullu Erişim ilkesini etkinleştirmek için şu adımları izleyin:

  1. Azure portalda oturum açın.

  2. Microsoft Entra Koşullu Erişim'i arayın.

  3. İlkeler'i seçin.

  4. Yeni ilke'yi seçin.

  5. İlkenin Bulut uygulamaları veya eylemler bölümünde, ilkenizi nasıl ayarlamak istediğinize bağlı olarak Azure AI Arama'yı bulut uygulaması olarak ekleyin.

  6. İlkenin kalan parametrelerini güncelleştirin. Örneğin, bu ilkenin hangi kullanıcılara ve gruplara uygulanacağını belirtin.

  7. İlkeyi kaydedin.

Önemli

Arama hizmetinize atanmış bir yönetilen kimlik varsa, belirli bir arama hizmeti Koşullu Erişim ilkesinin parçası olarak dahil edilebilen veya hariç tutulabilen bir bulut uygulaması olarak görünür. Koşullu Erişim ilkeleri belirli bir arama hizmetinde zorlanamaz. Bunun yerine genel Azure AI Search bulut uygulamasını seçtiğinizden emin olun.

Sınırlamalar

  • Rol tabanlı erişim denetimi bazı isteklerin gecikme süresini artırabilir. Hizmet kaynağı (dizin, dizin oluşturucu vb.) ve hizmet sorumlusunun her benzersiz bileşimi bir yetkilendirme denetimi tetikler. Bu yetkilendirme denetimleri, istek başına 200 milisaniyeye kadar gecikme süresi ekleyebilir.

  • İsteklerin çok sayıda farklı hizmet sorumlusundan kaynaklandığı nadir durumlarda, tümü farklı hizmet kaynaklarını (dizinler, dizin oluşturucular vb.) hedefleyen durumlarda, yetkilendirme denetimlerinin azaltmaya neden olması mümkündür. Azaltma yalnızca arama hizmeti kaynağı ve hizmet sorumlusunun yüzlerce benzersiz bileşimi bir saniye içinde kullanıldığında gerçekleşir.

Rol tabanlı erişim denetimi sorunlarını giderme

Kimlik doğrulaması için rol tabanlı erişim denetimi kullanan uygulamalar geliştirirken bazı yaygın sorunlar oluşabilir:

  • Yetkilendirme belirteci yönetilen bir kimlikten geldiyse ve uygun izinler yakın zamanda atanmışsa, bu izin atamalarının etkili olması birkaç saat sürebilir.

  • Arama hizmeti için varsayılan yapılandırma anahtar tabanlı kimlik doğrulamasıdır. Varsayılan anahtar ayarını Hem hem de Rol tabanlı erişim denetimi olarak değiştirmediyseniz, rol tabanlı kimlik doğrulaması kullanan tüm istekler temel alınan izinlere bakılmaksızın otomatik olarak reddedilir.