Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak Azure AI Search'e Bağlan

Azure, platformda çalışan tüm hizmetler için genel rol tabanlı erişim denetimi yetkilendirme sistemi sağlar. Azure AI Search'te Azure rollerini aşağıdakiler için kullanabilirsiniz:

  • Denetim düzlemi işlemleri (Azure Resource Manager aracılığıyla hizmet yönetimi görevleri).

  • Dizin oluşturma, yükleme ve sorgulama gibi veri düzlemi işlemleri.

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) 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.

Not

Azure AI Search'te "denetim düzlemi", Yönetim REST API'sinde veya eşdeğer istemci kitaplıklarında desteklenen işlemleri ifade eder. "Veri düzlemi", dizin oluşturma veya sorgular gibi arama hizmeti uç noktasına yönelik işlemleri ya da Search REST API'sinde veya eşdeğer istemci kitaplıklarında belirtilen diğer işlemleri ifade eder.

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

Rol 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, eş anlamlı eşlemeler, dizin oluşturucular, veri kaynakları ve beceri kümeleri) okuma-yazma erişimi. İzin listesi için bkz Microsoft.Search/searchServices/* . Bu rol dizindeki içeriğe erişebileceğinden sorgulama veya dizin oluşturma işlemi yoktur, ancak dizin oluşturabilir, silebilir ve listeleyebilir, dizin tanımlarını ve istatistikleri döndürebilir ve çözümleyicileri test edebilir. Bu rol, arama hizmetini ve nesnelerini yönetmesi gereken ancak içerik erişimi olmayan arama hizmeti yöneticileri içindir.
Arama Dizini Veri Katkıda Bulunanı Veri Arama hizmetindeki tüm 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.
Arama Dizini Veri Okuyucusu Veri Arama hizmetindeki tüm arama dizinlerine salt okunur erişim. Bu rol, sorgu çalıştıran uygulamalar ve kullanıcılar içindir.

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. Azure RBAC'nin devre dışı bırakılması yalnızca bu rollerle ilişkili verilerle ilgili izinleri kaldırır. Devre dışı bırakılmış RBAC senaryosunda Arama Hizmeti Katkıda Bulunanı, denetim düzlemi Katkıda Bulunanı ile eşdeğerdir.

Sınırlamalar

  • Rol tabanlı erişim denetiminin benimsenmesi bazı isteklerin gecikme süresini artırabilir. bir istekte kullanılan hizmet kaynağı (dizin, dizin oluşturucu vb.) ve hizmet sorumlusunun her benzersiz bileşimi yetkilendirme denetimini tetikler. Bu yetkilendirme denetimleri bir isteğe 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.

Veri düzlemi için rol tabanlı erişimi yapılandırma

Şunlar için geçerlidir: Arama Dizini Veri Katkıda Bulunanı, Arama Dizini Veri Okuyucusu, Arama Hizmeti Katkıda Bulunanı

Bu adımda, arama hizmetinizi OAuth2 erişim belirteci sağlayan veri isteklerindeki yetkilendirme üst bilgisini tanıyacak şekilde yapılandırın.

  1. Azure portalında oturum açın ve arama hizmeti sayfasını açın.

  2. Sol gezinti bölmesinde Tuşlar'ı seçin.

    Kimlik doğrulama seçeneklerini içeren anahtarlar sayfasının ekran görüntüsü.

  3. BIR API erişim denetimi seçeneği belirleyin. Esneklik istiyorsanız veya uygulamaları geçirmeniz gerekiyorsa her ikisini de öneririz.

    Seçenek Açıklama
    API Anahtarı (varsayılan). Yetkilendirme için istek üst bilgisinde bir yönetici veya sorgu API anahtarları gerektirir. Hiçbir rol kullanılmaz.
    Rol tabanlı erişim denetimi Bir sonraki adımda açıklanan görevi tamamlamak için rol atamasında üyelik gerektirir. Ayrıca bir yetkilendirme üst bilgisi gerektirir.
    Her ikisi İstekler API anahtarı veya rol tabanlı erişim denetimi kullanılarak geçerlidir.

Değişiklik hemen geçerli olur, ancak test etmeden önce birkaç saniye bekleyin.

Arama hizmeti işlemleri için tüm ağ çağrıları ve içerik seçtiğiniz seçeneğe uygundur: API anahtarları, taşıyıcı belirteci veya Her İkisi'ni seçerseniz bunlardan biri.

Portalda rol tabanlı erişim denetimini etkinleştirdiğinizde, yetkilendirme başarısız olursa hata modu "http401WithBearerChallenge" olur.

Rol atama

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 atamalarını yönetmek için Sahip olmanız veya Microsoft.Authorization/roleAssignments/write izinlerine sahip olmanız gerekir.

Portaldaki rol atamaları hizmet genelindedir. Tek bir dizine izin vermek istiyorsanız bunun yerine PowerShell veya Azure CLI kullanın.

  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. Uygun bir rol seçin:

    • Sahip
    • Katılımcı
    • Okuyucu
    • Arama Hizmeti Katkıda Bulunanı
    • Arama Dizini Veri Katkıda Bulunanı
    • Arama Dizini Veri Okuyucusu
  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.

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 kapsamındaki devralınan rollerin kaynak (arama hizmeti) düzeyinde silinemediğini veya reddedilebileceğini unutmayın.

Erişimi test etmeden önce istemci uygulamanızı Microsoft Entra ID'ye kaydettiğinizden ve rol atamalarınızın olduğundan emin olun.

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

  2. Arama hizmetinize gidin.

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

    • Katkıda bulunanlar herhangi bir nesneyi görüntüleyebilir ve oluşturabilir, ancak Arama Gezgini'nde bir dizini sorgulayamaz.

    • Arama Dizini Veri Okuyucuları, dizini sorgulamak için Arama Gezgini'ni kullanabilir. Erişimi denetlemek için herhangi bir API sürümünü kullanabilirsiniz. Sorgu gönderebilmeniz ve sonuçları görüntüleyebilmeniz gerekir, ancak dizin tanımını görüntüleyememelisiniz.

    • Arama Dizini Verilerine Katkıda Bulunanlar yeni bir dizin oluşturmak için Yeni Dizin'i seçebilir. Yeni bir dizinin kaydedilmesi, hizmette yazma erişimini doğrular.

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://graph.microsoft.com/"
    
  2. Visual Studio Code'daki yeni bir metin dosyasına şu değişkenleri 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 bileş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/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-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.

API anahtarı kimlik doğrulamayı devre dışı bırakma

Arama Hizmeti Katkıda Bulunanı, Arama Dizini Veri Katkıda Bulunanı ve Arama Dizini Veri Okuyucusu rollerini ve Microsoft Entra kimlik doğrulamasını kullanıyorsanız, hizmetinizde anahtar erişimi veya yerel kimlik doğrulaması devre dışı bırakılabilir. API anahtarlarının devre dışı bırakılması, arama hizmetinin üst bilgide bir API anahtarı geçiren verilerle ilgili tüm istekleri reddetmesine neden olur.

Not

Yönetici API anahtarları yalnızca devre dışı bırakılabilir, silinemez. Sorgu API anahtarları silinebilir.

Özellikleri devre dışı bırakmak için Sahip veya Katkıda Bulunan izinleri gereklidir.

Anahtar tabanlı kimlik doğrulamasını devre dışı bırakmak için Azure portalını veya Yönetim REST API'sini kullanın.

  1. Azure portalında arama hizmetinize gidin.

  2. Sol gezinti bölmesinde Anahtarlar'ı seçin.

  3. Rol tabanlı erişim denetimi'ni seçin.

Değişiklik hemen geçerli olur, ancak test etmeden önce birkaç saniye bekleyin. Rolleri Sahip, hizmet yöneticisi veya ortak yönetici üyesi olarak atama izniniz olduğunu varsayarsak, rol tabanlı erişimi test etmek için portal özelliklerini kullanabilirsiniz.

Koşullu Erişim

Koşullu Erişim , Microsoft Entra ID'de kuruluş ilkelerini zorunlu kılmak için kullanılan bir araçtır. Koşullu Erişim ilkelerini kullanarak, kuruluşunuzun güvenliğini sağlamak için gerektiğinde doğru erişim denetimlerini uygulayabilirsiniz. Rol tabanlı erişim denetimi kullanarak Azure AI Arama hizmeti erişirken Koşullu Erişim kuruluş ilkelerini zorunlu kılabilir.

Azure AI Search için Koşullu Erişim ilkesini etkinleştirmek için aşağıdaki 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.

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: