Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kendi verilerinizle Alma Artırılmış Oluşturma (RAG) desenini kullanarak bir sohbet uygulaması oluşturduğunuzda, her kullanıcının izinlerine göre bir yanıt aldığından emin olun. Sohbet uygulamanıza belge erişim denetimi eklemek için bu makaledeki işlemi izleyin.
Yetkili kullanıcı: Bu kişinin sohbet uygulamasının belgelerinde yer alan yanıtlara erişimi olmalıdır.
Yetkisiz kullanıcı: Bu kişinin, görme yetkisi olmayan güvenli belgelerden gelen yanıtlara erişimi olmamalıdır.
Uyarı
Bu makalede, makaledeki örnekler ve kılavuzlar için temel olarak bir veya daha fazla yapay zeka uygulaması şablonu kullanılır. Yapay zeka uygulama şablonları, dağıtımı kolay ve iyi bakımlı referans uygulamaları sağlar. Yapay zeka uygulamalarınız için yüksek kaliteli bir başlangıç noktası sağlamaya yardımcı olur.
Mimariye genel bakış
Belge güvenliği özelliği olmadan kurumsal sohbet uygulaması, Microsoft Foundry'de Azure Yapay Zeka Arama ve Azure OpenAI Modellerini kullanarak basit bir mimariye sahiptir. Belgelerin depolandığı Azure Yapay Zeka Arama sorgularından bir yanıt, Azure OpenAI GPT modelinden alınan yanıtla birlikte belirlenir. Bu basit akışta kullanıcı kimlik doğrulaması kullanılmaz.
Belgelere güvenlik eklemek için kurumsal sohbet uygulamasını güncelleştirmeniz gerekir:
- Microsoft Entra ile sohbet uygulamasına istemci kimlik doğrulaması ekleyin.
- Arama dizinini kullanıcı ve grup erişimiyle doldurmak için sunucu tarafı mantığı ekleyin.
Azure Yapay Zeka Arama yerel belge düzeyi izinleri sağlamaz ve kullanıcı izinlerine göre bir dizinin içinden arama sonuçlarını değiştiremez. Bunun yerine, uygulamanız bir belgenin belirli bir kullanıcı veya belirli bir grup tarafından erişilebilir olmasını sağlamak için arama filtrelerini kullanabilir. Arama dizininizde, her belgenin kullanıcı veya grup kimliği bilgilerini depolayan filtrelenebilir bir alanı olmalıdır.
Yetkilendirme Azure Yapay Zeka Arama'te yerel olarak bulunmadığından, kullanıcı veya grup bilgilerini barındırmak için bir alan eklemeniz ve ardından eşleşmeyen belgeleri filtrelemeniz gerekir. Bu tekniği uygulamak için şunları yapmanız gerekir:
- Dizininizde, belge erişimi olan kullanıcıların veya grupların ayrıntılarını depolamak için ayrılmış bir belge erişim denetimi alanı oluşturun.
- Belgenin erişim denetimi alanını ilgili kullanıcı veya grup ayrıntılarıyla doldurun.
- Kullanıcı veya grup erişim izinlerinde değişiklik olduğunda bu erişim denetimi alanını güncelleştirin.
Dizin güncelleştirmeleriniz bir dizin oluşturucuyla zamanlanmışsa, değişiklikler sonraki dizin oluşturucu çalışmasında alınır. Dizin oluşturucu kullanmıyorsanız el ile yeniden dizin oluşturmanız gerekir.
Bu makalede, Azure Yapay Zeka Arama'teki belgelerin güvenliğini sağlama işlemi, arama yöneticisi olarak çalıştıracağınız örnek betiklerle mümkün hale getiriliyor. Betikler tek bir belgeyi tek bir kullanıcı kimliğiyle ilişkilendirir. Bu betikleri alabilir ve gereksinimlerinize göre ölçeklendirmek için kendi güvenlik ve üretim gereksinimlerinizi uygulayabilirsiniz.
Güvenlik yapılandırmasını belirleme
Çözüm, bu örnekte belge güvenliği için gerekli olan özellikleri açmak için Boole ortam değişkenleri sağlar.
| Parametre | Amaç |
|---|---|
AZURE_USE_AUTHENTICATION |
olarak trueayarlandığında, kullanıcının sohbet uygulamasında oturum açmasını ve Azure App Service kimlik doğrulamasını etkinleştirir. Sohbet uygulaması Use oid security filter etkinleştirir. |
AZURE_ENFORCE_ACCESS_CONTROL |
olarak trueayarlandığında, herhangi bir belge erişimi için kimlik doğrulaması gerektirir. Kullanıcı arabiriminden devre dışı bırakılmaması için nesne kimliği (OID) ve grup güvenliği için Geliştirici ayarları açılır ve devre dışı bırakılır. |
AZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS |
olarak ayarlandığında true, bu ayar kimliği doğrulanmış kullanıcıların erişim denetimi gerektiğinde bile erişim denetimi atanmamış belgelerde arama yapmasına olanak tanır. Bu parametre yalnızca etkinleştirildiğinde AZURE_ENFORCE_ACCESS_CONTROL kullanılmalıdır. |
AZURE_ENABLE_UNAUTHENTICATED_ACCESS |
olarak ayarlandığında true, bu ayar kimliği doğrulanmamış kullanıcıların erişim denetimi uygulandığında bile uygulamayı kullanmasına izin verir. Bu parametre yalnızca etkinleştirildiğinde AZURE_ENFORCE_ACCESS_CONTROL kullanılmalıdır. |
Bu örnekte desteklenen güvenlik profillerini anlamak için aşağıdaki bölümleri kullanın. Bu makalede Kurumsal profil yapılandırılır.
Kurumsal: Gerekli hesap + belge filtresi
Sitenin her kullanıcısı oturum açmalıdır . Site, tüm kullanıcılar için ortak olan içerik içerir. Belge düzeyi güvenlik filtresi tüm isteklere uygulanır.
Ortam değişkenleri:
AZURE_USE_AUTHENTICATION=trueAZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS=trueAZURE_ENFORCE_ACCESS_CONTROL=true
Karma kullanım: İsteğe bağlı hesap + belge filtresi
Sitenin her kullanıcısı oturum açabilir . Site, tüm kullanıcılar için ortak olan içerik içerir. Belge düzeyi güvenlik filtresi tüm isteklere uygulanır.
Ortam değişkenleri:
AZURE_USE_AUTHENTICATION=trueAZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS=trueAZURE_ENFORCE_ACCESS_CONTROL=trueAZURE_ENABLE_UNAUTHENTICATED_ACCESS=true
Önkoşullar
Bu makaleyi tamamlamak için gereken tüm bağımlılıklarla birlikte bir geliştirme kapsayıcısı ortamı sağlanır. Geliştirme kapsayıcısını GitHub Codespaces'ta (tarayıcıda) veya Visual Studio Code kullanarak yerel olarak çalıştırabilirsiniz.
Bu makaleyi kullanmak için aşağıdaki önkoşullara ihtiyacınız vardır:
- Bir Azure aboneliği. Ücretsiz bir tane oluşturun.
- Azure hesabı izinleri: Azure hesabınızın sahip olması gerekenler:
- Microsoft Entra Id'de uygulamaları yönetme izni.
-
Microsoft.Authorization/roleAssignments/writeKullanıcı Erişim Yöneticisi veya Sahip gibi izinler.
Tercih ettiğiniz geliştirme ortamına bağlı olarak daha fazla önkoşula ihtiyacınız vardır.
- GitHub Codespaces (önerilen)
- Visual Studio Code
Geliştirme ortamı açma
Bu makaleyi tamamlamak için gerekli tüm bağımlılıkları içeren önceden yapılandırılmış bir geliştirme ortamı dağıtmak için aşağıdaki yönergeleri kullanın.
- GitHub Codespaces (önerilen)
- Visual Studio Code
GitHub Codespaces, Web için Visual Studio Code'u kullanıcı arabirimi olarak kullanarak GitHub tarafından yönetilen bir geliştirme kapsayıcısını çalıştırır. En basit geliştirme ortamı için GitHub Codespaces'ı kullanarak bu makaleyi tamamlamak için doğru geliştirici araçlarını ve bağımlılıklarını önceden yüklemiş olursunuz.
Önemli
Tüm GitHub hesapları, iki çekirdek örneğiyle her ay 60 saate kadar ücretsiz gitHub Codespaces kullanabilir. Daha fazla bilgi için bkz. GitHub Codespaces aylık olarak dahil edilen depolama ve çekirdek çalışma saatleri.
mainGitHub deposunun dalında yeni bir GitHub kod alanı oluşturma işlemini başlatın.Aşağıdaki düğmeye sağ tıklayın ve Bağlantıyı yeni pencerede aç seçeneğini seçerek geliştirme ortamı ve belgelerin aynı anda kullanılabilir olmasını sağlayın.
Codespace oluştur sayfasında codespace yapılandırma ayarlarını gözden geçirin, ardından Yeni kod alanı oluştur'u seçin.
Kod alanının başlamasını bekleyin. Bu başlatma işlemi birkaç dakika sürebilir.
Ekranın alt kısmındaki terminalde Azure Geliştirici CLI'sı ile Azure'da oturum açın.
azd auth loginKimlik doğrulama işlemini tamamlayın.
Bu makalede kalan görevler, bu geliştirme konteyneri bağlamında gerçekleşir.
Azure CLI ile gerekli bilgileri alma
Aşağıdaki Azure CLI komutuyla abonelik kimliğinizi ve kiracı kimliğinizi alın. Değerini, değeriniz AZURE_TENANT_ID olarak kullanmak üzere kopyalayın.
az account list --query "[].{subscription_id:id, name:name, tenantId:tenantId}" -o table
Kiracınızın koşullu erişim ilkesiyle ilgili bir hata alırsanız, koşullu erişim ilkesi olmayan ikinci bir kiracıya ihtiyacınız vardır.
- Kullanıcı hesabınızla ilişkili ilk kiracı hesabınız, için ortam değişkeni
AZURE_TENANT_IDkullanılır. - Koşullu erişim olmadan, ikinci kiracınız, ortam değişkeninin Microsoft Graph'a erişmesi için kullanılır. Koşullu erişim ilkesi olan kiracılar için, koşullu erişim ilkesi olmayan ikinci bir kiracının kimliğini bulun veya yeni bir kiracı oluşturun.
Ortam değişkenlerini belirleme
Uygulamayı Kurumsal profil için yapılandırmak için aşağıdaki komutları çalıştırın.
azd env set AZURE_USE_AUTHENTICATION true azd env set AZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS true azd env set AZURE_ENFORCE_ACCESS_CONTROL trueKiracıyı ayarlamak için aşağıdaki komutu çalıştırın. Bu komut, kullanıcının barındırılan uygulama ortamında oturum açmasına izin verdi.
<YOUR_TENANT_ID>ifadesini kiracı kimliğiyle değiştirin.azd env set AZURE_TENANT_ID <YOUR_TENANT_ID>
Uyarı
Kullanıcı kiracınızda koşullu erişim ilkeniz varsa , bir kimlik doğrulama kiracısı belirtmeniz gerekir.
Sohbet uygulamasını Azure'a dağıtma
Dağıtım aşağıdaki adımlardan oluşur:
- Azure kaynaklarını oluşturun.
- Belgeleri karşıya yükleyin.
- Microsoft Entra kimlik uygulamalarını (istemci ve sunucu) oluşturun.
- Barındırma kaynağı için kimlik doğrulamayı etkinleştirin.
Azure kaynaklarını sağlayın ve kaynak kodunu dağıtın.
azd upAşağıdaki tabloyu kullanarak
AZDdağıtım sorgularını yanıtlayın.Uyarı Cevap Ortam adı Takma adınız ve uygulamanız gibi tanımlayıcı bilgilerle kısa bir ad kullanın. Ve örnek: tjones-secure-chat.Abonelik Kaynakların oluşturulacağı aboneliği seçin. Azure kaynaklarının konumu Size yakın bir konum seçin. Konum: documentIntelligentResourceGroupLocationSize yakın bir konum seçin. Konum: openAIResourceGroupLocationSize yakın bir konum seçin. Uygulamanın başlatılmasına izin vermek için uygulama dağıtıldıktan sonra 5 veya 10 dakika bekleyin.
Uygulama başarıyla dağıtıldıktan sonra terminalde bir URL görüntülenir.
Sohbet uygulamasını tarayıcıda açmak için etiketli
(✓) Done: Deploying service webappURL'yi seçin.
Uygulamanın kimlik doğrulama açılır penceresini kabul edin.
Sohbet uygulaması görüntülendiğinde, sağ üst köşedeki kullanıcınızın oturum açtığına dikkat edin.
Geliştirici ayarlarını açın ve değişiklik için aşağıdaki seçeneklerin ikisinin de seçili ve devre dışı olduğuna dikkat edin:
- Oid güvenlik filtresi kullanma
- Grup güvenlik filtrelerini kullanma
Ürün yöneticisi ne yapar? kartını seçin.
Şunun gibi bir yanıt alırsınız: Sağlanan kaynaklar Contoso Electronics'te Bir Ürün Yöneticisi'nin rolü hakkında belirli bilgiler içermiyor.
Kullanıcı için belgeye erişimi açma
Yanıtı alabilmek için tam belge için izinlerinizi açın. Birkaç bilgiye ihtiyacınız vardır:
- Azure Depolama
- Hesap adı
- Konteyner adı
- Blob/belge URL'si için
role_library.pdf
- Microsoft Entra Id'de kullanıcı kimliği
Bu bilgiler bilindiğinde, belge için Azure Yapay Zeka Arama dizin oids alanını güncelleştirin role_library.pdf .
Depolamadaki bir belgenin URL'sini alma
.azureProjenin kökündeki klasörde ortam dizinini bulun ve dosyayı bu dizinle açın.env.Girdiyi
AZURE_STORAGE_ACCOUNTarayın ve değerini kopyalayın.Kapsayıcıdaki blobun URL'sini
role_library.pdfcontentalmak için aşağıdaki Azure CLI komutlarını kullanın.az storage blob url \ --account-name <REPLACE_WITH_AZURE_STORAGE_ACCOUNT \ --container-name 'content' \ --name 'role_library.pdf'Parametre Amaç --account-name Azure Depolama hesabı adı. --container-name Bu örnekteki kapsayıcı adı şeklindedir content.--ad Bu adımda blob adı şeklindedir role_library.pdf.Blob URL'sini daha sonra kullanmak üzere kopyalayın.
Kullanıcı kimliğinizi alma
- Sohbet uygulamasında Geliştirici ayarları'nı seçin.
-
Kimlik Belirteci talepleri bölümünde parametrenizi
objectidentifierkopyalayın. Bu parametre sonraki bölümde olarakUSER_OBJECT_IDbilinir.
Azure Search'te bir belgeye kullanıcı erişimi sağlama
Azure Yapay Zeka Arama'teki
oidsalanınırole_library.pdfiçin, erişiminiz olacak şekilde değiştirmek üzere aşağıdaki betiği kullanın.python ./scripts/manageacl.py --acl-type oids --acl-action add --acl <REPLACE_WITH_YOUR_USER_OBJECT_ID> --url <REPLACE_WITH_YOUR_DOCUMENT_URL>Parametre Amaç -v Ayrıntılı çıkış. --acl-type Grup veya kullanıcı OID'leri: oids.--acl-action Arama dizini alanına ekleyin. Diğer seçenekler arasında enable_acls,remove,remove_allveviewbulunur.--Acl Grup veya kullanıcı USER_OBJECT_ID.--URL Dosyanın Azure Depolama'daki konumu, örneğin https://MYSTORAGENAME.blob.core.windows.net/content/role_library.pdf. CLI komutunda URL'yi tırnak işaretleri ile çevrelemeyin.Bu komutun konsol çıkışı şöyle görünür:
Loading azd .env file from current environment... Creating Python virtual environment "app/backend/.venv"... Installing dependencies from "requirements.txt" into virtual environment (in quiet mode)... Running manageacl.py. Arguments to script: -v --acl-type oids --acl-action add --acl 00000000-0000-0000-0000-000000000000 --url https://mystorage.blob.core.windows.net/content/role_library.pdf Found 58 search documents with storageUrl https://mystorage.blob.core.windows.net/content/role_library.pdf Adding acl 00000000-0000-0000-0000-000000000000 to 58 search documentsİsteğe bağlı olarak, Azure Yapay Zeka Arama'te dosya için izninizin listelendiğini doğrulamak için aşağıdaki komutu kullanın.
python ./scripts/manageacl.py -v --acl-type groups --acl-action view --url <REPLACE_WITH_YOUR_DOCUMENT_URL>Parametre Amaç -v Ayrıntılı çıkış. --acl-type Grup veya kullanıcı OID'leri: oids.--acl-action Arama dizini alanını oidsgörüntüleyin. Diğer seçenekler arasındaenable_acls,remove,remove_allveaddbulunur.--URL Dosyanın bulunduğu konumun gösterildiği yer, örneğin https://MYSTORAGENAME.blob.core.windows.net/content/role_library.pdf. CLI komutunda URL'yi tırnak işaretleri ile çevrelemeyin.Bu komutun konsol çıkışı şöyle görünür:
Loading azd .env file from current environment... Creating Python virtual environment "app/backend/.venv"... Installing dependencies from "requirements.txt" into virtual environment (in quiet mode)... Running manageacl.py. Arguments to script: -v --acl-type oids --acl-action view --acl 00000000-0000-0000-0000-000000000000 --url https://mystorage.blob.core.windows.net/content/role_library.pdf Found 58 search documents with storageUrl https://mystorage.blob.core.windows.net/content/role_library.pdf [00000000-0000-0000-0000-000000000000]Çıktının sonundaki dizi parametrenizi
USER_OBJECT_IDiçerir ve belgenin Azure OpenAI ile yanıtta kullanılıp kullanılmadığını belirlemek için kullanılır.
Azure Yapay Zeka Arama'in USER_OBJECT_ID içerdiğini doğrulayın
Azure portalını açın ve için
AI Searcharama yapın.Listeden arama kaynağınızı seçin.
Arama yönetimi>Dizinlerini seçin.
gptkbindex'i seçin.
JSON görünümünü> seçin.
JSON değerini aşağıdaki JSON ile değiştirin:
{ "search": "*", "select": "sourcefile, oids", "filter": "oids/any()" }Bu JSON,
oidsalanının herhangi bir değere sahip olduğu tüm belgeleri arar vesourcefileveoidsalanlarını döndürür.role_library.pdfOID'niz yoksa Azure Search'te bir belgeye kullanıcı erişimi sağlama bölümüne dönün ve adımları tamamlayın.
Belgeye kullanıcı erişimini doğrulama
Adımları tamamladıysanız ancak doğru yanıtı görmediyseniz, USER_OBJECT_ID için Azure Yapay Zeka Arama'te role_library.pdf parametrenizin doğru şekilde ayarlandığını doğrulayın.
Sohbet uygulamasına dönün. Yeniden oturum açmanız gerekebilir.
İçeriğin Azure OpenAI yanıtında kullanılması için
role_libraryaynı sorguyu girin:What does a product manager do?.Şimdi rol kitaplığı belgesinden uygun yanıtı içeren sonucu görüntüleyin.
Kaynakları temizle
Aşağıdaki adımlar, kullandığınız kaynakları temizleme işleminde size yol gösterir.
Azure kaynaklarını temizleme
Bu makalede oluşturulan Azure kaynakları Azure aboneliğinize faturalandırılır. Gelecekte bu kaynaklara ihtiyaç duymayı beklemiyorsanız, daha fazla ücret ödememek için bunları silin.
Azure kaynaklarını silmek ve kaynak kodu kaldırmak için aşağıdaki Azure Geliştirici CLI komutunu çalıştırın.
azd down --purge
GitHub Codespaces ve Visual Studio Code'ı temizleme
Aşağıdaki adımlar, kullandığınız kaynakları temizleme işleminde size yol gösterir.
GitHub Codespaces ortamını silmek, hesabınız için elde ettiğiniz ücretsiz çekirdek başına saat yetkilendirmesi miktarını en üst düzeye çıkarmanızı sağlar.
Önemli
GitHub hesabınızın hakları hakkında daha fazla bilgi için GitHub Codespaces aylık dahil edilen depolama ve çekirdek saatler'e bakın.
GitHub Codespaces kontrol panelinegiriş yapın.
Azure-Samples/azure-search-openai-demo GitHub deposundan alınan şu anda çalışan kod alanlarınızı bulun.
Codespace bağlam menüsünü açın ve sil'i seçin.
Yardım alın
Örnek depo sorun giderme bilgileri sunar.
Sorun giderme
Bu bölüm, bu makaleye özgü sorunları gidermenize yardımcı olur.
Kimlik doğrulama ortamı sağlama
Kimlik doğrulamanız barındırma uygulamanızdan ayrı bir kiracıda olduğunda, aşağıdaki işlemle bu kimlik doğrulama kiracısını ayarlamanız gerekir.
Verilen komutu yürütarak örnek uygulamayı kimlik doğrulama amacıyla ikinci bir kiracı kullanacak şekilde yapılandırın.
azd env set AZURE_AUTH_TENANT_ID <REPLACE-WITH-YOUR-TENANT-ID>Parametre Amaç AZURE_AUTH_TENANT_IDEğer AZURE_AUTH_TENANT_IDayarlanmışsa, uygulamayı barındıran kiracı budur.Çözümü aşağıdaki komutla yeniden dağıtın:
azd up
İlgili içerik
- Azure OpenAI en iyi yöntemler çözüm mimarisiyle
sohbet uygulaması oluşturun. - Azure Yapay Zeka Aramaile üretici yapay zeka uygulamalarında
erişim denetimi hakkında bilgi edinin. - Azure API Management ile kurumsal kullanıma hazır bir Azure OpenAI çözümü oluşturun.
- Bkz Azure AI Arama: Hibrit geri çağırma ve sıralama yetenekleriyle vektör aramasında üstün performans gösterme.