Anahtarlar olmadan Azure AI Search'i kullanma
Uygulama kodunuzda, kimlik doğrulaması ve yetkilendirme için Microsoft Entra Kimliğini ve rolleri kullanan Azure AI Search'e anahtarsız bir bağlantı ayarlayabilirsiniz. Çoğu Azure hizmeti için uygulama isteklerinin kimlik doğrulaması anahtarlarla veya anahtarsız bağlantılarla yapılmalıdır. Geliştiricilerin anahtarları güvenli olmayan bir konumda asla kullanıma sunmaması için dikkatli olması gerekir. Anahtara erişim kazanan herkes hizmette kimlik doğrulaması yapabilir. Anahtarsız kimlik doğrulaması, depoacak anahtar (veya bağlantı dizesi) olmadığından hesap anahtarına göre gelişmiş yönetim ve güvenlik avantajları sunar.
Anahtarsız bağlantılar aşağıdaki adımlarla etkinleştirilir:
- Kimlik doğrulamanızı yapılandırın.
- Ortam değişkenlerini gerektiği gibi ayarlayın.
- Azure AI Search istemci nesnesi oluşturmak için Bir Azure Kimlik kitaplığı kimlik bilgisi türü kullanın.
Önkoşullar
Hem yerel geliştirme hem de üretim iş yükleri için aşağıdaki adımların tamamlanması gerekir:
- Yapay Zeka Arama kaynağı oluşturma
- Arama hizmetinizde rol tabanlı erişimi etkinleştirme
- Azure Identity istemci kitaplığını yükleme
Yapay Zeka Arama kaynağı oluşturma
Bu makaleye devam etmeden önce, çalışmak için bir Azure AI Search kaynağına ihtiyacınız vardır. Kaynağınız yoksa kaynağınızı şimdi oluşturun. Kaynak için rol tabanlı erişim denetimini (RBAC) etkinleştirin.
Azure Identity istemci kitaplığını yükleme
Anahtarsız yerel olarak çalışmadan önce AI Search özellikli kodunuzu Azure Identity istemci kitaplığıyla güncelleştirin.
.NET için Azure Identity istemci kitaplığını yükleyin:
dotnet add package Azure.Identity
Kaynak kodu DefaultAzureCredential kullanacak şekilde güncelleştirme
Azure Kimlik kitaplığı, DefaultAzureCredential
yerel geliştirme ortamında ve Azure bulutunda aynı kodu çalıştırmanıza olanak tanır. Tek bir kimlik bilgisi oluşturun ve belirteç önbelleğinden yararlanmak için kimlik bilgisi örneğini gerektiği şekilde yeniden kullanın.
.NET hakkında DefaultAzureCredential
daha fazla bilgi için bkz . .NET için Azure Identity istemci kitaplığı.
using Azure;
using Azure.Search.Documents;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.Models;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_SEARCH_ENDPOINT");
string indexName = "my-search-index";
DefaultAzureCredential credential = new();
SearchClient searchClient = new(new Uri(endpoint), indexName, credential);
SearchIndexClient searchIndexClient = new(endpoint, credential);
Yerel geliştirme
Anahtarsız olmayan yerel geliştirme şu adımları içerir:
- Belirli bir kaynakta RBAC rolleri ile kişisel kimliğinizi atayın.
- Azure ile kimlik doğrulaması yapmak için bir araç kullanın.
- Kaynağınız için ortam değişkenleri oluşturun.
Yerel geliştirme rolleri
Yerel bir geliştirici olarak Azure kimliğinizin hizmetiniz için tam denetime sahip olması gerekir. Bu denetim RBAC rolleri ile sağlanır. Geliştirme sırasında kaynağınızı yönetmek için önerilen roller şunlardır:
- Arama Hizmeti Katkıda Bulunanı
- Arama Dizini Veri Katkıda Bulunanı
- Arama Dizini Veri Okuyucusu
Aşağıdaki araçlardan biriyle kişisel kimliğinizi bulun. Değer olarak <identity-id>
bu kimliği kullanın.
Azure CLI'da oturum açın.
az login
Kişisel kimliğinizi alın.
az ad signed-in-user show \ --query id -o tsv
Rol tabanlı erişim denetimi (RBAC) rolünü kaynak grubunun kimliğine atayın.
az role assignment create \ --role "<role-name>" \ --assignee "<identity-id>" \ --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Uygun olduğunda , <subscription-id>
ve <resource-group-name>
değerlerini gerçek değerlerinizle değiştirin<identity-id>
.
Yerel geliştirme için kimlik doğrulaması
Azure kimliğinde kimlik doğrulaması yapmak için yerel geliştirme ortamınızda bir araç kullanın. Kimliğiniz doğrulandıktan sonra kaynak kodunuzdaki DefaultAzureCredential
örnek kimlik doğrulamasını bulur ve kullanır.
Yerel geliştirme sırasında kimlik doğrulaması için bir araç seçin.
Yerel geliştirme için ortam değişkenlerini yapılandırma
Azure AI Search'e bağlanmak için kodunuzun kaynak uç noktanızı bilmesi gerekir.
Azure AI Search uç noktanız için adlı AZURE_SEARCH_ENDPOINT
bir ortam değişkeni oluşturun. Bu URL genellikle biçimindedir https://<YOUR-RESOURCE-NAME>.search.windows.net/
.
Üretim iş yükleri
Üretim iş yüklerini dağıtma şu adımları içerir:
- En az ayrıcalık ilkesine bağlı olan RBAC rollerini seçin.
- Belirli bir kaynakta üretim kimliğinize RBAC rolleri atayın.
- Kaynağınız için ortam değişkenlerini ayarlayın.
Üretim iş yükleri için roller
Üretim kaynaklarınızı oluşturmak için kullanıcı tarafından atanan bir yönetilen kimlik oluşturmanız ve ardından bu kimliği doğru rollerle kaynaklarınıza atamanız gerekir.
Bir üretim uygulaması için aşağıdaki rol önerilir:
Rol adı | Id |
---|---|
Arama Dizini Veri Okuyucusu | 1407120a-92aa-4202-b7e9-c0e197c71c8f |
Üretim iş yükleri için kimlik doğrulaması
Kaynağı oluşturmak ve kimlik doğrulamasını ayarlamak için identityId
aşağıdaki Azure AI Search Bicep şablonunu kullanın. Bicep rol kimliğini gerektirir. name
Bu Bicep kod parçacığında gösterilen, Azure rolü değildir; Bu, Bicep dağıtımına özeldir.
// main.bicep
param environment string = 'production'
param roleGuid string = ''
module aiSearchRoleUser 'core/security/role.bicep' = {
scope: aiSearchResourceGroup
name: 'aiSearch-role-user'
params: {
principalId: (environment == 'development') ? principalId : userAssignedManagedIdentity.properties.principalId
principalType: (environment == 'development') ? 'User' : 'ServicePrincipal'
roleDefinitionId: roleGuid
}
}
Dosya, main.bicep
herhangi bir rol oluşturmak için aşağıdaki genel Bicep kodunu çağırır. Bir kullanıcı için ve diğeri üretim için olmak üzere birden çok RBAC rolü oluşturma seçeneğiniz vardır. Bu, aynı Bicep dağıtımında hem geliştirme hem de üretim ortamlarını etkinleştirmenizi sağlar.
// core/security/role.bicep
metadata description = 'Creates a role assignment for an identity.'
param principalId string // passed in from main.bicep
@allowed([
'Device'
'ForeignGroup'
'Group'
'ServicePrincipal'
'User'
])
param principalType string = 'ServicePrincipal'
param roleDefinitionId string // Role ID
resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId)
properties: {
principalId: principalId
principalType: principalType
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
}
}
Üretim iş yükleri için ortam değişkenlerini yapılandırma
Azure AI Search'e bağlanmak için kodunuzun kaynak uç noktanızı ve yönetilen kimliği bilmesi gerekir.
Dağıtılan ve anahtarsız Azure AI Arama kaynağınız için ortam değişkenleri oluşturun:
AZURE_SEARCH_ENDPOINT
: Bu URL, Azure AI Search kaynağınızın erişim noktasıdır. Bu URL genellikle biçimindedirhttps://<YOUR-RESOURCE-NAME>.search.windows.net/
.AZURE_CLIENT_ID
: Bu kimlik olarak doğrulanır.