Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat Anda membangun aplikasi obrolan dengan menggunakan pola Retrieval Augmented Generation (RAG) dengan data Anda sendiri, pastikan bahwa setiap pengguna menerima jawaban berdasarkan izin mereka. Ikuti proses dalam artikel ini untuk menambahkan kontrol akses dokumen ke aplikasi obrolan Anda.
Pengguna yang berwenang: Orang ini harus memiliki akses ke jawaban yang terkandung dalam dokumen aplikasi obrolan.
Pengguna yang tidak sah: Orang ini seharusnya tidak memiliki akses ke jawaban dari dokumen aman yang tidak memiliki otorisasi untuk dilihat.
Nota
Artikel ini menggunakan satu atau beberapa templat aplikasi AI sebagai dasar untuk contoh dan panduan dalam artikel. Templat aplikasi AI memberi Anda implementasi referensi yang terawat dengan baik yang mudah disebarkan. Ini membantu memastikan titik awal berkualitas tinggi untuk aplikasi AI Anda.
Gambaran umum arsitektur
Tanpa fitur keamanan dokumen, aplikasi obrolan perusahaan memiliki arsitektur sederhana dengan menggunakan Azure AI Search dan Azure OpenAI Models di Microsoft Foundry. Jawaban ditentukan dari kueri ke Azure AI Search tempat dokumen disimpan, dalam kombinasi dengan respons dari model GPT Azure OpenAI. Tidak ada autentikasi pengguna yang digunakan dalam alur sederhana ini.
Untuk menambahkan keamanan untuk dokumen, Anda perlu memperbarui aplikasi obrolan perusahaan:
- Tambahkan autentikasi klien ke aplikasi obrolan dengan Microsoft Entra.
- Tambahkan logika sisi server untuk mengisi indeks pencarian dengan akses pengguna dan grup.
Pencarian Azure AI tidak menyediakan izin tingkat dokumen asli dan tidak dapat memvariasikan hasil pencarian dari dalam indeks berdasarkan izin pengguna. Sebagai gantinya, aplikasi Anda dapat menggunakan filter pencarian untuk memastikan bahwa dokumen dapat diakses oleh pengguna tertentu atau oleh grup tertentu. Dalam indeks pencarian Anda, setiap dokumen harus memiliki bidang yang dapat difilter yang menyimpan informasi identitas pengguna atau grup.
Karena otorisasi tidak terkandung secara asli di Azure AI Search, Anda perlu menambahkan bidang untuk menyimpan informasi pengguna atau grup, lalu memfilter dokumen apa pun yang tidak cocok. Untuk menerapkan teknik ini, Anda perlu:
- Buat bidang kontrol akses dokumen di indeks Anda yang didedikasikan untuk menyimpan detail pengguna atau grup dengan akses dokumen.
- Isi bidang kontrol akses dokumen dengan detail pengguna atau grup yang relevan.
- Perbarui bidang kontrol akses ini setiap kali ada perubahan izin akses pengguna atau grup.
Jika pembaruan indeks Anda dijadwalkan dengan pengindeks, perubahan akan diproses pada saat pengindeks berikutnya dijalankan. Jika Anda tidak menggunakan pengindeks, Anda perlu mengindeks ulang secara manual.
Dalam artikel ini, proses mengamankan dokumen di Azure AI Search dimungkinkan dengan contoh skrip, yang akan Anda jalankan sebagai administrator pencarian. Skrip mengaitkan satu dokumen dengan satu identitas pengguna. Anda dapat mengambil skrip ini dan menerapkan persyaratan keamanan dan produksi Anda sendiri untuk menyesuaikan dengan kebutuhan Anda.
Menentukan konfigurasi keamanan
Solusi ini menyediakan variabel lingkungan Boolean untuk mengaktifkan fitur yang diperlukan untuk keamanan dokumen dalam sampel ini.
| Pengaturan | Tujuan |
|---|---|
AZURE_USE_AUTHENTICATION |
Saat diatur ke true, memungkinkan pengguna masuk ke aplikasi obrolan dan autentikasi Azure App Service. Mengaktifkan Use oid security filter di pengaturan pengembang aplikasi obrolan. |
AZURE_ENFORCE_ACCESS_CONTROL |
Saat diatur ke true, memerlukan autentikasi untuk akses dokumen apa pun.
Pengaturan Pengembang untuk ID objek (OID) dan keamanan grup diaktifkan dan dinonaktifkan sehingga tidak dapat dinonaktifkan dari UI. |
AZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS |
Ketika diatur ke true, pengaturan ini memungkinkan pengguna terautentikasi untuk mencari pada dokumen yang tidak memiliki kontrol akses yang ditetapkan, bahkan ketika kontrol akses diperlukan. Parameter ini harus digunakan hanya ketika AZURE_ENFORCE_ACCESS_CONTROL diaktifkan. |
AZURE_ENABLE_UNAUTHENTICATED_ACCESS |
Ketika diatur ke true, pengaturan ini memungkinkan pengguna yang tidak diautentikasi untuk menggunakan aplikasi, bahkan ketika kontrol akses diberlakukan. Parameter ini harus digunakan hanya ketika AZURE_ENFORCE_ACCESS_CONTROL diaktifkan. |
Gunakan bagian berikut untuk memahami profil keamanan yang didukung dalam sampel ini. Artikel ini mengonfigurasi profil Enterprise.
Perusahaan: Akun yang diwajibkan + filter dokumen
Setiap pengguna situs harus masuk. Situs ini berisi isi publik untuk semua pengguna. Filter keamanan tingkat dokumen diterapkan ke semua permintaan.
Variabel lingkungan:
AZURE_USE_AUTHENTICATION=trueAZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS=trueAZURE_ENFORCE_ACCESS_CONTROL=true
Penggunaan campuran: Akun opsional + filter dokumen
Setiap pengguna situs mungkin masuk. Situs ini berisi isi publik untuk semua pengguna. Filter keamanan tingkat dokumen diterapkan ke semua permintaan.
Variabel lingkungan:
AZURE_USE_AUTHENTICATION=trueAZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS=trueAZURE_ENFORCE_ACCESS_CONTROL=trueAZURE_ENABLE_UNAUTHENTICATED_ACCESS=true
Prasyarat
Lingkungan kontainer pengembangan tersedia dengan semua dependensi yang diperlukan untuk menyelesaikan artikel ini. Anda dapat menjalankan kontainer pengembangan di GitHub Codespaces (di browser) atau secara lokal dengan menggunakan Visual Studio Code.
Untuk menggunakan artikel ini, Anda memerlukan prasyarat berikut:
- Sebuah langganan Azure. Buat akun gratis.
- Izin akun Azure: Akun Azure Anda harus memiliki:
- Izin untuk mengelola aplikasi di ID Microsoft Entra.
-
Microsoft.Authorization/roleAssignments/writeizin, seperti Administrator Akses Pengguna atau Pemilik.
Anda memerlukan lebih banyak prasyarat tergantung pada lingkungan pengembangan pilihan Anda.
- GitHub Codespaces (disarankan)
- Visual Studio Code
Membuka lingkungan pengembangan
Gunakan instruksi berikut untuk menyebarkan lingkungan pengembangan yang telah dikonfigurasi sebelumnya yang berisi semua dependensi yang diperlukan untuk menyelesaikan artikel ini.
- GitHub Codespaces (disarankan)
- Visual Studio Code
GitHub Codespaces menjalankan kontainer pengembangan yang dikelola oleh GitHub dengan Visual Studio Code untuk Web sebagai antarmuka pengguna. Untuk lingkungan pengembangan yang paling mudah, gunakan GitHub Codespaces sehingga Anda memiliki alat dan dependensi pengembang yang benar yang telah diinstal sebelumnya untuk menyelesaikan artikel ini.
Penting
Semua akun GitHub dapat menggunakan GitHub Codespaces hingga 60 jam gratis setiap bulan dengan dua instans inti. Untuk informasi selengkapnya, lihat penyimpanan dan jam inti yang disertakan setiap bulan di GitHub Codespaces.
Mulai proses untuk membuat ruang kode GitHub baru di cabang
mainAzure-Samples/azure-search-openai-demo repositori GitHub.Klik kanan tombol berikut, dan pilih tautan buka di jendela baru agar lingkungan pengembangan dan dokumentasi tersedia secara bersamaan.
Pada halaman Buat codespace , tinjau pengaturan konfigurasi codespace, lalu pilih Buat codespace baru.
Tunggu hingga codespace menyala. Proses startup ini dapat memakan waktu beberapa menit.
Di terminal di bagian bawah layar, masuk ke Azure dengan Azure Developer CLI.
azd auth loginSelesaikan proses autentikasi.
Tugas yang tersisa dalam artikel ini berlangsung dalam konteks kontainer pengembangan ini.
Mendapatkan informasi yang diperlukan dengan Azure CLI
Dapatkan ID langganan dan ID penyewa Anda dengan perintah Azure CLI berikut. Salin nilai yang akan digunakan sebagai nilai Anda AZURE_TENANT_ID .
az account list --query "[].{subscription_id:id, name:name, tenantId:tenantId}" -o table
Jika Anda mendapatkan kesalahan tentang kebijakan akses bersyarat penyewa, Anda memerlukan penyewa kedua tanpa kebijakan akses bersyarat.
- Penyewa pertama Anda, yang terkait dengan akun pengguna Anda, digunakan sebagai variabel lingkungan
AZURE_TENANT_ID. - Penyewa kedua Anda, tanpa akses bersyarat, digunakan sebagai variabel lingkungan
AZURE_AUTH_TENANT_IDuntuk mengakses Microsoft Graph. Untuk penyewa dengan kebijakan akses bersyarat, temukan ID penyewa kedua tanpa kebijakan akses bersyarat atau buat penyewa baru.
Atur variabel lingkungan
Jalankan perintah berikut untuk mengonfigurasi aplikasi untuk profil Enterprise .
azd env set AZURE_USE_AUTHENTICATION true azd env set AZURE_ENABLE_GLOBAL_DOCUMENTS_ACCESS true azd env set AZURE_ENFORCE_ACCESS_CONTROL trueJalankan perintah berikut untuk mengatur tenant, yang mengotorisasi masuk pengguna ke lingkungan aplikasi yang dihosting. Ganti
<YOUR_TENANT_ID>dengan ID penyewa.azd env set AZURE_TENANT_ID <YOUR_TENANT_ID>
Nota
Jika Anda memiliki kebijakan akses bersyarat pada penyewa pengguna, Anda perlu menentukan penyewa autentikasi.
Menyebarkan aplikasi obrolan ke Azure
Penyebaran terdiri dari langkah-langkah berikut:
- Buat sumber daya Azure.
- Unggah dokumen.
- Buat aplikasi identitas Microsoft Entra (klien dan server).
- Aktifkan identitas untuk sumber daya hosting.
Provisikan sumber daya Azure dan sebarkan kode sumber.
azd upGunakan tabel berikut untuk menjawab
AZDperintah penyebaran.Cepat Jawaban Nama lingkungan Gunakan nama pendek dengan informasi identifikasi seperti alias dan aplikasi Anda. Dan contohnya adalah tjones-secure-chat.Langganan Pilih langganan untuk membuat sumber daya. Lokasi untuk sumber daya Azure Pilih lokasi di dekat Anda. Lokasi untuk documentIntelligentResourceGroupLocationPilih lokasi di dekat Anda. Lokasi untuk openAIResourceGroupLocationPilih lokasi di dekat Anda. Tunggu 5 atau 10 menit setelah aplikasi disebarkan untuk memungkinkan aplikasi memulai.
Setelah aplikasi berhasil disebarkan, URL muncul di terminal.
Pilih URL berlabel
(✓) Done: Deploying service webappuntuk membuka aplikasi obrolan di browser.
Setujui pop-up autentikasi aplikasi.
Saat aplikasi obrolan muncul, perhatikan di sudut kanan atas bahwa pengguna Anda masuk.
Buka Pengaturan pengembang dan perhatikan bahwa kedua opsi berikut dipilih dan dinonaktifkan untuk perubahan:
- Menggunakan filter keamanan oid
- Menggunakan filter keamanan grup
Pilih kartu dengan Apa yang dilakukan manajer produk?.
Anda mendapatkan jawaban seperti: Sumber yang disediakan tidak berisi informasi spesifik tentang peran Manajer Produk di Contoso Electronics.
Membuka akses ke dokumen untuk pengguna
Aktifkan izin Anda untuk dokumen yang tepat sehingga Anda bisa mendapatkan jawabannya. Anda memerlukan beberapa informasi:
- Azure Storage
- Nama akun
- Nama kontainer
- URL dokumen/blob untuk
role_library.pdf
- ID pengguna di ID Microsoft Entra
Saat informasi ini diketahui, perbarui bidang indeks oids Pencarian Azure AI untuk dokumen.role_library.pdf
Mendapatkan URL untuk dokumen di penyimpanan
.azureDi folder di akar proyek, temukan direktori lingkungan, dan buka file dengan direktori tersebut.env.Cari
AZURE_STORAGE_ACCOUNTentri dan salin nilainya.Gunakan perintah Azure CLI berikut untuk mendapatkan URL
role_library.pdfblob dalamcontentkontainer.az storage blob url \ --account-name <REPLACE_WITH_AZURE_STORAGE_ACCOUNT \ --container-name 'content' \ --name 'role_library.pdf'Pengaturan Tujuan --account-name Nama akun Azure Storage. --container-name Nama kontainer dalam sampel ini adalah content.--Nama Nama blob dalam langkah ini adalah role_library.pdf.Salin URL blob untuk digunakan nanti.
Mendapatkan ID pengguna Anda
- Di aplikasi obrolan, pilih Pengaturan pengembang.
- Di bagian klaim Token ID , salin parameter Anda
objectidentifier. Parameter ini dikenal di bagian berikutnya sebagaiUSER_OBJECT_ID.
Menyediakan akses pengguna ke dokumen di Azure Search
Gunakan skrip berikut untuk mengubah
oidsbidang di Azure AI Search untukrole_library.pdfagar Anda dapat mengaksesnya.python ./scripts/manageacl.py --acl-type oids --acl-action add --acl <REPLACE_WITH_YOUR_USER_OBJECT_ID> --url <REPLACE_WITH_YOUR_DOCUMENT_URL>Pengaturan Tujuan -v Output verbose. --acl-type OID grup atau pengguna: oids.--acl-action Tambahkan ke bidang Indeks pencarian. Opsi lain termasuk enable_acls,remove,remove_all, danview.--Acl Grup atau pengguna USER_OBJECT_ID.--url Lokasi file di Azure Storage, seperti https://MYSTORAGENAME.blob.core.windows.net/content/role_library.pdf. Jangan kelilingi URL dengan tanda kutip dalam perintah CLI.Output konsol untuk perintah ini terlihat seperti:
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 documentsSecara opsional, gunakan perintah berikut untuk memverifikasi bahwa izin Anda tercantum untuk file di Azure AI Search.
python ./scripts/manageacl.py -v --acl-type groups --acl-action view --url <REPLACE_WITH_YOUR_DOCUMENT_URL>Pengaturan Tujuan -v Output verbose. --acl-type OID grup atau pengguna: oids.--acl-action Lihat bidang indeks pencarian oids. Opsi lain termasukenable_acls,remove,remove_all, danadd.--url Lokasi file yang ditunjukkan, seperti https://MYSTORAGENAME.blob.core.windows.net/content/role_library.pdf. Jangan kelilingi URL dengan tanda kutip dalam perintah CLI.Output konsol untuk perintah ini terlihat seperti:
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]Array pada akhir output menyertakan parameter
USER_OBJECT_IDAnda dan digunakan untuk menentukan apakah dokumen tersebut digunakan sebagai jawaban dengan Azure OpenAI.
Verifikasi bahwa Azure AI Search berisi USER_OBJECT_ID Anda
Buka portal Microsoft Azure dan cari
AI Search.Pilih sumber daya pencarian Anda dari daftar.
Pilih manajemen pencarian>Indeks.
Pilih gptkbindex.
Pilih Tampilkan>tampilan JSON.
Ganti JSON dengan JSON berikut:
{ "search": "*", "select": "sourcefile, oids", "filter": "oids/any()" }JSON ini mencari semua dokumen di mana
oidsbidang memiliki nilai apa pun dan mengembalikansourcefilebidang danoids.role_library.pdfJika tidak memiliki OID Anda, kembali ke bagian Berikan akses pengguna ke dokumen di Azure Search dan selesaikan langkah-langkahnya.
Memverifikasi akses pengguna ke dokumen
Jika Anda menyelesaikan langkah-langkah tetapi tidak melihat jawaban yang benar, verifikasi bahwa parameter Anda USER_OBJECT_ID diatur dengan benar di Pencarian Azure AI untuk role_library.pdf.
Kembali ke aplikasi obrolan. Anda mungkin perlu masuk lagi.
Masukkan kueri yang sama sehingga
role_librarykonten digunakan dalam jawaban Azure OpenAI:What does a product manager do?.Lihat hasilnya, yang sekarang menyertakan jawaban yang sesuai dari dokumen pustaka peran.
Membersihkan sumber daya
Langkah-langkah berikut memandu Anda melalui proses membersihkan sumber daya yang telah Anda gunakan.
Membersihkan sumber daya Azure
Sumber daya Azure yang dibuat dalam artikel ini ditagihkan ke langganan Azure Anda. Jika Anda tidak mengharapkan untuk membutuhkan sumber daya ini di masa mendatang, hapus sumber daya tersebut untuk menghindari dikenakan lebih banyak biaya.
Jalankan perintah Azure Developer CLI berikut untuk menghapus sumber daya Azure dan menghapus kode sumber.
azd down --purge
Membersihkan GitHub Codespaces dan Visual Studio Code
Langkah-langkah berikut memandu Anda melalui proses membersihkan sumber daya yang telah Anda gunakan.
Menghapus lingkungan GitHub Codespaces memastikan bahwa Anda dapat memaksimalkan kuota jam penggunaan inti gratis yang Anda dapatkan untuk akun Anda.
Penting
Untuk informasi lebih lanjut tentang hak akun GitHub Anda, lihat penyimpanan dan jam inti bulanan yang sudah termasuk dalam GitHub Codespaces.
Masuk ke dasbor GitHub Codespaces.
Temukan ruang kode Anda yang saat ini berjalan dan berasal dari repositori GitHub Azure-Samples/azure-search-openai-demo.
Buka menu konteks untuk codespace, lalu pilih Hapus.
Dapatkan bantuan
Repositori sampel menawarkan informasi pemecahan masalah.
Penyelesaian Masalah
Bagian ini membantu Anda memecahkan masalah khusus untuk artikel ini.
Menyediakan tenant autentikasi
Saat autentikasi Anda terletak di penyewa yang terpisah dari aplikasi hosting Anda, Anda perlu mengonfigurasi penyewa autentikasi tersebut menggunakan proses berikut.
Jalankan perintah berikut untuk mengonfigurasi sampel agar menggunakan tenant kedua dalam tenant autentikasi.
azd env set AZURE_AUTH_TENANT_ID <REPLACE-WITH-YOUR-TENANT-ID>Pengaturan Tujuan AZURE_AUTH_TENANT_IDJika AZURE_AUTH_TENANT_IDdiatur, penyewalah yang menghosting aplikasi.Sebarkan ulang solusi dengan perintah berikut:
azd up
Konten terkait
- Buat aplikasi obrolan dengan arsitektur solusi praktik terbaik Azure OpenAI.
- Pelajari tentang kontrol akses di aplikasi AI generatif dengan Azure AI Search.
- Bangun solusi Azure OpenAI yang siap untuk perusahaan dengan Azure API Management.
- Lihat Azure AI Search: Mengungguli pencarian vektor dengan kemampuan pengambilan dan peringkat hibrid.