Azure Yapay Zeka Arama Microsoft Entra ID aracılığıyla role tabanlı erişim denetimini destekler. 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.
Bir güvenlik sorumlusuna birden çok rol atarsanız, izinler birleştirilir. Rol atamaları tüm araçlara ve istemci kitaplıklarına uygulanır.
Bu makalede, hizmet yönetimi, geliştirme ve salt okunur sorgu ve alma erişimi için yerleşik rollerin nasıl atanduğu açıklanmaktadır. Ayrıca özel roller oluşturma ve rol atamalarını test etme adımlarını da sağlar.
Tavsiye
- Yerleşik rollere hızlı bir genel bakış mı istiyorsunuz? Bkz. İzinlerin özeti.
- Arama sonuçlarına erişimi belge düzeyinde, diğer bir deyişle satır düzeyi güvenlik olarak denetlemek için bkz. Azure Yapay Zeka Arama'te Belge düzeyinde erişim denetimi.
Önkoşullar
role tabanlı erişimin etkinleştirildiği Azure Yapay Zeka Arama hizmeti (herhangi bir bölge ve herhangi bir katman).
Azure rolleri atama izni. Aşağıdaki rollerden herhangi biri çalışır:
Tercih ettiğiniz istemci için rol atama yönergelerini gözden geçirin:
Tercih ettiğiniz istemcinin gerektirdiği atanan kişi değerini belirleyin. İstemciye ve atananın türüne bağlı olarak bu değer, bir kullanıcı asıl adı, grup nesnesi kimliği, hizmet sorumlusu adı, hizmet sorumlusu uygulama kimliği veya Microsoft Entra nesne kimliği olabilir.
Yerleşik roller
Roller, denetim düzlemini veya veri düzlemini etkileyen izinlerden oluşan bir koleksiyonlardır:
Kontrol düzlemi: Hizmet sağlama, yapılandırma ve yönetim işlemleri. Denetim düzlemi işlemleri arasında arama hizmetleri oluşturma veya silme, API anahtarlarını listeleme ve ağ ve kimlik doğrulama ayarlarını yönetme sayılabilir.
Azure Resource Manager REST API'leri, Search Management REST API'leri ve eşdeğer Azure SDK istemci kitaplıkları aracılığıyla kullanılabilir.
Veri düzlemi: Arama hizmeti uç noktasına yönelik işlemler. Veri düzlemi işlemleri iki kategoriye ayrılır: nesne yönetimi ve içerik erişimi.
Search Service REST API'leri ve eşdeğer Azure SDK istemci kitaplıkları aracılığıyla kullanılabilir.
Rol açıklamaları
Aşağıdaki yerleşik roller Azure Yapay Zeka Arama'e yetkiler verir. Denetim düzlemi rolleri her zaman kullanılabilirken, veri düzlemi rolleri arama hizmetinizde rol tabanlı erişimin etkinleştirilmesini gerektirir. Daha geniş erişim için yerleşik rolleri birleştirebilir veya ihtiyacınız olan belirli izinlerle özel bir rol oluşturabilirsiniz .
| Rol |
Uçak |
Açıklama |
|
Sahip |
Yönetim |
- Rol atama ve kimlik doğrulama ayarlarını değiştirme de dahil olmak üzere tam denetim düzlemi erişimi.
- Abonelik yöneticileri bu role varsayılan olarak sahiptir.
- API anahtarlarını yönetebilir.
- Arama nesneleri oluşturulamıyor, belge yüklenemiyor, dizinleri sorgulamıyor veya bilgi bankalarından alınamıyor.
|
|
Katkıda Bulunan |
Yönetim |
- Sahip ile eşit düzeyde denetim düzlemi erişimi, ancak rol atama yetkisi olmadan.
|
|
Okuyucu |
Yönetim |
- Salt-okunur kontrol düzlemi erişimi.
- Hizmet ölçümlerini ve nesne tanımlarını görüntüleyebilir.
- API anahtarlarını görüntüleyemez veya yönetemez, belgeleri yükleyemez, dizinleri sorgulayamaz veya bilgi bankalarından alamazsınız.
|
|
Arama Hizmeti Katkıda Bulunanı |
Denetim ve Veriler |
- Tam kontrol düzlemi erişimi. Veri düzlemi erişimi nesne yönetimiyle sınırlıdır.
- Dizinler, dizin oluşturucular, beceri kümeleri, bilgi bankaları ve diğer arama nesneleri oluşturabilir.
- Denetim düzlemi işlemleri aracılığıyla yönetici ve sorgu API anahtarlarını alabilir.
- Rol tabanlı erişim aracılığıyla belgeleri yükleyemez, dizinleri sorgulayamaz veya bilgi bankalarından doğrudan alamazsınız.
- Tam izin listesi için bkz.
Microsoft.Search/searchServices/*.
|
|
Arama Dizini Veri Katılımcısı |
Veri |
- Okuma-yazma içerik erişimi.
- Belgeleri yükleyebilir, dizinleri sorgulayabilir ve bilgi bankalarından alabilir.
- Nesne tanımları değiştirilemez veya yönetici anahtarları alınamaz.
|
|
Arama Dizini Veri Okuyucusu |
Veri |
- Sadece okunabilir içerik erişimi.
- Dizinleri sorgulayabilir ve bilgi bankalarından alabilir.
- Belgeler yüklenemez, nesne tanımları değiştirilemez veya yönetici anahtarları alınamaz.
|
Önemli
- Sahip, Katkı Sağlayan ve Arama Hizmeti Katkı Sağlayıcısı, veri düzlemine tam okuma-yazma erişimi sağlayan yönetici anahtarlarını alabilir. Bu rolleri yalnızca güvenilen kullanıcılara verin.
- Varsayılan olarak, veri düzlemi rolleri arama hizmetindeki tüm dizinlere uygulanır. Arama Dizini Veri Katkıda Bulunanı veya Arama Dizini Veri Okuyucusu'na tek bir dizine kapsam eklemek için bkz. Tek bir dizine erişim verme.
İzinlerin özeti
İhtiyacınız olan izinleri hangi rolün sağladığını hızla bulmak için aşağıdaki tabloyu kullanın.
| İzinler |
Sahip/Katkıda Bulunan |
Okuyucu |
Arama Hizmeti Katılımcısı |
Arama Dizini Veri Katılımcısı |
Arama Dizini Veri Okuyucusu |
| Azure Yapay Zeka Arama hizmetleri oluşturma ve yapılandırma |
✅ |
❌ |
✅ |
❌ |
❌ |
| Azure portalında erişim hizmeti |
✅ |
✅ |
✅ |
❌ |
❌ |
| Hizmet özelliklerini, ölçümlerini ve uç noktasını görüntüleme |
✅ |
✅ |
✅ |
❌ |
❌ |
| Hizmet üzerindeki tüm nesneleri listeleme |
✅ |
✅ |
✅ |
❌ |
❌ |
| Erişim kotaları ve hizmet istatistikleri |
✅ |
❌ |
✅ |
❌ |
❌ |
| Anahtarları görüntüleme, kopyalama ve yeniden oluşturma |
✅ |
❌ |
✅ |
❌ |
❌ |
| Kimlik doğrulama seçeneklerini ayarlama |
✅ |
❌ |
✅ |
❌ |
❌ |
| Rolleri, ilkeleri ve tanımları görüntüleme |
✅ |
✅ |
✅ |
❌ |
❌ |
| Ağ güvenliğini ve özel bağlantıları yapılandırma |
✅ |
❌ |
✅ |
❌ |
❌ |
| Arama nesneleri oluşturma, çalıştırma ve yönetme 1 |
❌ |
❌ |
✅ |
❌ |
❌ |
| Dizin oluşturma için verileri yükle 2 |
❌ |
❌ |
❌ |
✅ |
❌ |
| Dizin sorgulama |
❌ |
❌ |
❌ |
✅ |
✅ |
| Bilgi bankasından alma |
❌ |
❌ |
❌ |
✅ |
✅ |
|
Yükseltilmiş okuma (önizleme) ile izin filtrelerini atlama |
❌ |
❌ |
❌ |
✅ |
❌ |
1 Dizinleri, dizin oluşturucuları, veri kaynaklarını, beceri kümelerini, diğer adları, eş anlamlı eşlemeleri, hata ayıklama oturumlarını, bilgi bankalarını ve bilgi kaynaklarını içerir. Dizin oluşturucular çalıştırma ve sıfırlama işlemlerini de destekler.
2 Sahip veya Katkıda Bulunan, diğer istemcilere belge yükleyemese de dizinler oluşturmak ve yüklemek için Verileri içeri aktarma sihirbazını çalıştırabilir. Benzer şekilde, dizin oluşturucular dizin başına rol atamalarından bağımsız olarak arama hizmetindeki herhangi bir dizine yazabilir. Her iki durumda da arama hizmeti (kullanıcı değil) Microsoft.Search/searchServices/indexes/documents/* izinlerini kullanarak veri düzlemi eylemlerini gerçekleştirir.
Yerleşik roller atayın
Bu bölümde, rolleri aşağıdakiler için atarsınız:
Hizmet yönetimi için rol atama
Aşağıdaki roller bir arama hizmeti oluşturmanıza, yapılandırmanıza ve yönetmenize olanak tanır. Bu roller hiyerarşiktir, bu nedenle ihtiyacınız olan erişim düzeyine göre birini seçin.
| Rol |
Kimlik |
|
Sahip |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
|
Katkıda Bulunan |
b24988ac-6180-42a0-ab88-20f7382dd24c |
|
Okuyucu |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Azure portalında arama hizmetinize gidin.
Sol bölmeden Erişim denetimi (IAM) öğesini seçin.
+ Ekle>Rol ataması ekle’yi seçin.
Bir rol seçin: Sahip, Katkıda Bulunan veya Okuyucu.
Members sekmesinde Microsoft Entra kullanıcı veya grup kimliğini seçin. Başka bir Azure hizmeti için izinleri ayarıyorsanız sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği seçin.
Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.
Azure aboneliğinizde oturum açın.
az login
Arama hizmeti kapsamında bir rol ataması oluşturun. Atananı ve kapsamı sağlayın.
az role assignment create \
--assignee <assignee> \
--role "Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referans:az role assignment create
Gerekli modülü içeri aktarın ve Azure hesabınıza bağlanın.
Import-Module Az.Resources
Connect-AzAccount
Arama hizmeti kapsamında bir rol ataması oluşturun. Bu örnekte kullanıcı oturum açma adı kullanılmaktadır.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referans:New-AzRoleAssignment
Bir komut kabuğu açın ve Azure aboneliğinize giriş yapın.
az login
Azure Resource Manager için bir erişim belirteci alın.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Arama hizmeti kapsamında bir rol ataması oluşturmak için PUT isteği gönderin.
principalType öğesini, atanan kişiyle eşleşecek şekilde User, Group veya ServicePrincipal olarak ayarlayın.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referans:Rol Atamaları - Oluştur
Geliştirme için rol atama
Aşağıdaki roller arama nesneleri oluşturmanıza, belgeleri yüklemenize, dizinleri sorgulamanıza ve bilgi bankalarından almanıza olanak tanır. Geliştirme görevlerinin tamamını kapsayacak şekilde üç rolü de atayın.
Azure portalında arama hizmetinize gidin.
Sol bölmeden Erişim denetimi (IAM) öğesini seçin.
+ Ekle>Rol ataması ekle’yi seçin.
Arama Hizmeti Katkıda Bulunan seçin.
Members sekmesinde Microsoft Entra kullanıcı veya grup kimliğini seçin. Başka bir Azure hizmeti için izinleri ayarıyorsanız sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği seçin.
Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.
Arama Dizini Veri Katkıda Bulunanı ve Arama Dizini Veri Okuyucusu atamak için bu adımları yineleyin.
Azure aboneliğinizde oturum açın.
az login
Arama hizmeti kapsamında bir rol ataması oluşturun. Atananı ve kapsamı sağlayın.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referans:az role assignment create
(İsteğe bağlı) Bir dizinle sınırlandırılmış bir rol ataması oluşturun. Atananı ve kapsamı sağlayın.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referans:az role assignment create
Gerekli modülü içeri aktarın ve Azure hesabınıza bağlanın.
Import-Module Az.Resources
Connect-AzAccount
Arama hizmeti kapsamında bir rol ataması oluşturun. Bu örnekte kullanıcı oturum açma adı kullanılmaktadır.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referans:New-AzRoleAssignment
(İsteğe bağlı) Bir dizinle sınırlandırılmış bir rol ataması oluşturun. Bu örnekte kullanıcı oturum açma adı kullanılmaktadır.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referans:New-AzRoleAssignment
Bir komut kabuğu açın ve Azure aboneliğinize giriş yapın.
az login
Azure Resource Manager için bir erişim belirteci alın.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Arama hizmeti kapsamında bir rol ataması oluşturmak için PUT isteği gönderin.
principalType öğesini, atanan kişiyle eşleşecek şekilde User, Group veya ServicePrincipal olarak ayarlayın.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referans:Rol Atamaları - Oluştur
(İsteğe bağlı) Dizin kapsamında bir rol ataması oluşturmak için PUT isteği gönderin.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referans:Rol Atamaları - Oluştur
Salt okunur erişim için rol atama
Dizinlere ve bilgi bankalarına yalnızca okuma erişimi gerektiren uygulamalar ve işlemler için aşağıdaki rolü kullanın. Desteklenen işlemler arasında arama, arama, otomatik tamamlama ve dizinler için öneriler ve bilgi bankaları için alma yer alır.
Azure portalında arama hizmetinize gidin.
Sol bölmeden Erişim denetimi (IAM) öğesini seçin.
+ Ekle>Rol ataması ekle’yi seçin.
Arama Dizini Veri Okuyucusu rolünü seçin.
Members sekmesinde Microsoft Entra kullanıcı veya grup kimliğini seçin. Başka bir Azure hizmeti için izinleri ayarıyorsanız sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği seçin.
Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.
Azure aboneliğinizde oturum açın.
az login
Arama hizmeti kapsamında bir rol ataması oluşturun. Atananı ve kapsamı sağlayın.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referans:az role assignment create
(İsteğe bağlı) Bir dizinle sınırlandırılmış bir rol ataması oluşturun. Atananı ve kapsamı sağlayın.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referans:az role assignment create
Gerekli modülü içeri aktarın ve Azure hesabınıza bağlanın.
Import-Module Az.Resources
Connect-AzAccount
Arama hizmeti kapsamında bir rol ataması oluşturun. Bu örnekte kullanıcı oturum açma adı kullanılmaktadır.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referans:New-AzRoleAssignment
(İsteğe bağlı) Bir dizinle sınırlandırılmış bir rol ataması oluşturun. Bu örnekte kullanıcı oturum açma adı kullanılmaktadır.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referans:New-AzRoleAssignment
Bir komut kabuğu açın ve Azure aboneliğinize giriş yapın.
az login
Azure Resource Manager için bir erişim belirteci alın.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Arama hizmeti kapsamında bir rol ataması oluşturmak için PUT isteği gönderin.
principalType öğesini, atanan kişiyle eşleşecek şekilde User, Group veya ServicePrincipal olarak ayarlayın.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referans:Rol Atamaları - Oluştur
(İsteğe bağlı) Dizin kapsamında bir rol ataması oluşturmak için PUT isteği gönderin.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referans:Rol Atamaları - Oluştur
Rol atamalarını test et
Rol atamalarını test etmek için bir istemci kullanın. Rollerin kümülatif olduğunu unutmayın. Kaynak (arama hizmeti) düzeyinde abonelik veya kaynak grubu düzeyinde kapsamı belirlenmiş devralınan rolleri silemez veya reddedemezsiniz.
Devam etmeden önce uygulamanızı anahtarsız bağlantılar için yapılandırın ve rol atamaları oluşturun.
Azure portalında arama hizmetinize gidin.
Dizinle ilgili izinleri test etmek için sol bölmeden Arama yönetimi>Dizinleri'ni seçin:
Arama Hizmeti Katkıda Bulunanlar, arama nesneleri oluşturabilir, değiştirebilir ve silebilir, ancak belge yükleyemezler veya sorgu çalıştıramazlar. İzinleri doğrulamak için bir arama dizini oluşturun.
Arama Dizini Veri Katkısında Bulunanlar belgeleri yükleyebilir. Azure portalında Veri içeri aktarma sihirbazı dışında hiçbir belge yükleme seçeneği yoktur, ancak belge yükleme izinlerini onaylamak için bir dizin oluşturucuyu sıfırlayıp çalıştırarak yapabilirsiniz.
Arama Dizini Veri Okuyucuları dizinleri 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ımlarını görüntüleyemiyor veya dizin oluşturamıyor olmanız gerekir.
Bu yaklaşımda REST İstemci uzantısı ile Visual Studio Code varsayılır.
Azure CLI için bir komut kabuğu açın ve Azure aboneliğinizde oturum açın.
az login
Azure Yapay Zeka Arama veri düzlemi için bir erişim belirteci alın.
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
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
Belirttiğiniz değişkenleri kullanan bir istek gönderin. Arama Dizini Veri Okuyucusu rolü için desteklenen herhangi bir API sürümünü kullanarak sorgu gönderebilirsiniz.
POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2026-04-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"queryType": "simple",
"search": "motel",
"filter": "",
"select": "HotelName,Description,Category,Tags",
"count": true
}
Başvuru:Belgelerde Ara
Başarılı bir sorgu, eşleşen belgelere sahip arama sonuçlarını döndürür. Dizin boşsa veya eşleşmesi yoksa boş value bir dizi içerir.
Gerekli paketleri yükleyin.
dotnet add package Azure.Search.Documents
dotnet add package Azure.Identity
Azure.Identity for .NET ile belirteç kimlik doğrulaması yapın. Microsoft çoğu senaryo için DefaultAzureCredential() önerir.
İşte DefaultAzureCredential() kullanan bir istemci bağlantısı örneği.
// Create a SearchIndexClient to send create/delete index commands
// Requires Search Service Contributor role
SearchIndexClient adminClient = new SearchIndexClient(serviceEndpoint, new DefaultAzureCredential());
// Create a SearchClient to load and query documents
// Requires Search Index Data Contributor (load) or Search Index Data Reader (query)
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, new DefaultAzureCredential());
Reference:SearchClient, SearchIndexClient, DefaultAzureCredential
İşte istemci gizli anahtarı kimlik bilgisi kullanmaya ilişkin başka bir örnek.
var tokenCredential = new ClientSecretCredential(aadTenantId, aadClientId, aadSecret);
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, tokenCredential);
Burada bir sorgu çalıştırma örneği verilmiştır.
SearchResults<SearchDocument> response = srchclient.Search<SearchDocument>("motel");
foreach (SearchResult<SearchDocument> result in response.GetResults())
{
Console.WriteLine(result.Document["HotelName"]);
}
Başarılı bir sorgu arama sonuçlarını döndürür. Eşleşen belge yoksa sonuç koleksiyonu boştur.
Gerekli paketleri yükleyin.
pip install azure-search-documents azure-identity
Azure.Identity for Python kullanarak belirteç kimlik doğrulaması yapın.
Python istemcisi sunucu tarafı yürüten bir uygulamaysa DefaultAzureCredential kullanın. Uygulama bir tarayıcıda çalışıyorsa etkileşimli kimlik doğrulamasını etkinleştirin.
İşte bir örnek.
from azure.search.documents import SearchClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
endpoint = "https://<mysearch>.search.windows.net"
index_name = "myindex"
client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential)
Reference:SearchClient, DefaultAzureCredential
Gerekli bağımlılıkları pom.xml öğenize ekleyin.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-search-documents</artifactId>
<version>11.7.4</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.0</version>
</dependency>
Azure.Identity Java için belirteç kimlik doğrulamasını kullanın.
Azure üzerinde çalışan uygulamalar için DefaultAzureCredential kullanın.
Tek bir dizine erişim izni verme
Bazı senaryolarda, bir uygulamanın dizin gibi tek bir kaynağa erişimini sınırlamak isteyebilirsiniz.
şu anda Azure portalı dizin düzeyinde rol atamalarını desteklememektedir. Kapsamı tek bir dizine belirlenmiş roller atamak için Azure CLI, PowerShell veya REST API'sini kullanın.
Azure aboneliğinizde oturum açın.
az login
Kapsamı tek bir dizinle sınırlı bir rol ataması oluşturun. Atanacak kişiyi ve dizin düzeyindeki kapsamı belirtin.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referans:az role assignment create
Gerekli modülü içeri aktarın ve Azure hesabınıza bağlanın.
Import-Module Az.Resources
Connect-AzAccount
Kapsamı tek bir dizinle sınırlı bir rol ataması oluşturun. Bu örnekte kullanıcı oturum açma adı kullanılmaktadır.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referans:New-AzRoleAssignment
Bir komut kabuğu açın ve Azure aboneliğinize giriş yapın.
az login
Azure Resource Manager için bir erişim belirteci alın.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Tek bir dizinle sınırlı bir rol ataması oluşturmak için PUT isteği gönderin.
principalType öğesini, atanan kişiyle eşleşecek şekilde User, Group veya ServicePrincipal olarak ayarlayın.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referans:Rol Atamaları - Oluştur
Dizin başına kapsam ve dizin oluşturucu işlemleri
Dizin başına rol atamaları, kullanıcılardan veya uygulamalardan gelen sorgular veya belge yüklemeleri gibi yalnızca doğrudan API işlemleri için geçerlidir. Dizin oluşturucular hizmet düzeyi kimlik bilgileriyle çalıştığından dizin başına izinlerle kısıtlanmamıştır.
Arama Hizmeti Katkıda Bulunanı rolüne sahip bir kullanıcı, arama hizmetindeki herhangi bir dizine, hatta bu kullanıcının dizin başına rol atamasının olmadığı dizinlere yazan dizin oluşturucular oluşturabilir.
Dizinler arasında katı veri yalıtımı için şu yaklaşımları göz önünde bulundurun:
- Dizin düzeyinde yalıtım gerektiren ekipler veya kullanıcılar için ayrı arama hizmetleri kullanın.
-
Arama Hizmeti Katkı Sağlayıcısı yalnızca dizin oluşturucuları yöneten yöneticilere atanın.
- Paylaşılan dizindeki sorgu sonuçlarını kısıtlamak için güvenlik filtreleri ile belge düzeyi erişim denetimini kullanın.
Ö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.
Aşağıdaki örnekler Arama Dizini Veri Okuyucusu'na kopyalayıp dizinleri ada göre listeleme olanağını ekler. Normalde, bir arama hizmetindeki dizinlerin listelenmesi yönetim hakkı olarak kabul edilir.
Azure portalında oturum açın ve arama hizmetinize gidin.
Sol bölmeden Erişim denetimi (IAM) öğesini seçin.
Roller sekmesinde Arama Dizini Veri Okuyucusu'nı veya başka bir rolü bulun, üç noktayı (...) ve ardından Kopyala'yı seçin.
Basics sekmesinde, özel rol için "Arama Dizini Veri Gezgini" gibi bir ad girin ve İleri seçin.
İzinler sekmesinde İzin ekle'yi seçin.
İzinleri ekle bölmesinde Microsoft Arama kutucuğunu seçin.
Üst kısımda Eylemler seçili durumdayken aşağıdaki izinleri ayarlayın:
-
Microsoft.Search/operations altında Read: Tüm kullanılabilir işlemleri listele'i seçin.
-
Microsoft.Search/searchServices/indexes altında Read : Read Index öğesini seçin.
Üstteki Data Actions bölümüne geçin ve Microsoft.Search/searchServices/indexes/documents altında Read : Belgeleri Oku'yi seçin.
JSON tanımı aşağıdaki örneğe benzer:
{
"properties": {
"roleName": "Search Index Data Explorer",
"description": "List all indexes on the service and query them.",
"assignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
],
"permissions": [
{
"actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"notActions": [],
"dataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"notDataActions": []
}
]
}
}
Ekle'yi seçerek bölmeyi kapatın.
Rolü oluşturmak için Gözden geçir + oluştur'u seçin.
Artık role kullanıcı ve grup atayabilirsiniz. Bu adımlar hakkında daha fazla bilgi için bkz. Azure portalını kullanarak Azure özel rolleri oluşturma veya güncelleştirme.
Azure CLI örnekte, Arama Dizini Veri Okuyucusu'nun kopyası olan ancak tüm dizinleri ada göre listeleyebilen özel bir rol oluşturmaya yönelik JSON söz dizimi gösterilir. Özel rol oluşturma hakkında adım adım yönergeler için bkz. Azure CLI kullanarak özel roller Azure oluşturma veya güncelleştirme.
Hangilerine ihtiyacınız olduğunu belirlemek için atomik izinler listesini gözden geçirin. Bu örnek için aşağıdaki izinlere ihtiyacınız vardır:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Aşağıdaki rol tanımını adlı search-index-data-explorer.jsonbir JSON dosyasına kaydedin.
Id için, oluşturduğunuz yeni bir GUID belirtin.
{
"Name": "Search Index Data Explorer",
"Id": "<role-definition-guid>",
"IsCustom": true,
"Description": "List all indexes on the service and query them.",
"Actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"NotActions": [],
"DataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
JSON dosyasını az role definition create öğesine ileterek özel rolü oluşturun.
az role definition create --role-definition @search-index-data-explorer.json
Referans:az role definition create
PowerShell örneği, Arama Dizini Veri Okuyucusu'nun bir kopyası olan özel bir rol oluşturmaya yönelik JSON söz dizimini gösterir, ancak tüm dizinleri ada göre listeleyebilme özelliğine sahiptir. Özel rol oluşturma hakkında adım adım yönergeler için bkz. Azure PowerShell kullanarak özel roller Azure oluşturma veya güncelleştirme.
Hangilerine ihtiyacınız olduğunu belirlemek için atomik izinler listesini gözden geçirin. Bu örnek için aşağıdaki izinlere ihtiyacınız vardır:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Aşağıdaki rol tanımını adlı search-index-data-explorer.jsonbir JSON dosyasına kaydedin.
Id için, oluşturduğunuz yeni bir GUID belirtin.
{
"Name": "Search Index Data Explorer",
"Id": "<role-definition-guid>",
"IsCustom": true,
"Description": "List all indexes on the service and query them.",
"Actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"NotActions": [],
"DataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
JSON dosyasını New-AzRoleDefinition öğesine ileterek özel rolü oluşturun.
New-AzRoleDefinition -InputFile "search-index-data-explorer.json"
Başvuru:New-AzRoleDefinition
REST API örneği, Arama Dizini Veri Okuyucusu'nun bir kopyası olan özel bir rol oluşturmaya yönelik JSON söz dizimini gösterir, ancak tüm dizinleri ada göre listeleyebilme özelliğine sahiptir. Özel rol oluşturma hakkında adım adım yönergeler için bkz. REST API kullanarak özel roller Azure oluşturma veya güncelleştirme.
Hangilerine ihtiyacınız olduğunu belirlemek için atomik izinler listesini gözden geçirin. Bu örnek için aşağıdaki izinlere ihtiyacınız vardır:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Rol tanımı uç noktasına aşağıdaki isteği göndererek özel rolü oluşturun.
PUT https://management.azure.com/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/<role-definition-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleName": "Search Index Data Explorer",
"description": "List all indexes on the service and query them.",
"type": "CustomRole",
"permissions": [
{
"actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"notActions": [],
"dataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"notDataActions": []
}
],
"assignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
}
Başvuru:Rol Tanımları - Oluştur veya Güncelleştir
Koşullu Erişim ilkesi oluşturma
Çok faktörlü kimlik doğrulaması gibi kuruluş ilkelerini zorunlu kılmanız gerekiyorsa Microsoft Entra Koşullu Erişim kullanın.
Azure Yapay Zeka Arama için Koşullu Erişim ilkesi oluşturmak için:
Azure portalında oturum açın.
Microsoft Entra Koşullu Erişim için arama yapın.
Genel Bakış sayfasında Yeni ilke oluştur'u seçin.
Cloud uygulamaları veya eylemleri altında, ilkenizi nasıl ayarlamak istediğinize bağlı olarak bulut uygulaması olarak Azure Yapay Zeka Arama ekleyin.
İlkenizin kalan parametrelerini güncelleştirin. Örneğin, ilkenin hangi kullanıcılara ve gruplara uygulanacağını belirtin.
Politikayı kaydedin.
Önemli
Arama hizmetinize atanmış bir yönetilen kimlik varsa, belirli bir arama hizmeti bir bulut uygulaması olarak görünür. Ancak, belirli bir arama hizmetinin seçilmesi ilkenin uygulanmasını sağlamaz. Bunun yerine, arama hizmetinize Koşullu Erişim ilkeleri uygulamak için genel Azure Yapay Zeka Arama bulut uygulamasını seçin.
Sorun giderme
Kimlik doğrulaması için rol tabanlı erişim denetimi kullanan uygulamalar geliştirirken bazı yaygın sorunlarla karşılaşabilirsiniz:
Arama hizmeti için varsayılan yapılandırma anahtar tabanlı kimlik doğrulamasıdır. Bu ayarı Hem hem deRol tabanlı erişim denetimi olarak değiştirmezseniz, temel alınan izinlere bakılmaksızın rol tabanlı kimlik doğrulaması kullanan tüm istekler otomatik olarak reddedilir.
İsteğiniz rol tabanlı kimlik bilgilerinin yanı sıra bir API anahtarı içeriyorsa, hizmet anahtarı kullanarak kimlik doğrulaması yapar. Rol tabanlı kimlik doğrulamasını kullanmak için istek üst bilgilerinizden API anahtarını kaldırın.
Yetkilendirme belirteci yönetilen bir kimlikten geliyorsa ve yakın zamanda uygun izinleri atadıysanız, izin atamalarının etkili olması birkaç saat sürebilir .
Belge düzeyinde izinlere sahip sorgular beklenen sonuçları döndürmezse, araştırmak için Arama Dizini Veri Katkıda Bulunanı'nı kullanın veya yükseltilmiş izinlere (önizleme) sahip özel bir rol oluşturun.
Sonraki adım
Bu makalede, Azure Yapay Zeka Arama üzerinde denetim ve veri düzlemi işlemleri için rollerin nasıl atanacakları açıklanmaktadır. Uygulama kodunuz için rol tabanlı erişim eklemeye yönelik kapsamlı yönergeler için: