Mengautentikasi dan mengotorisasi akses ke API Azure OpenAI menggunakan Azure API Management
BERLAKU UNTUK: Semua tingkatAN API Management
Dalam artikel ini, Anda mempelajari cara mengautentikasi dan mengotorisasi ke titik akhir Azure OpenAI API yang dikelola menggunakan Azure API Management. Artikel ini memperlihatkan metode umum berikut:
Autentikasi - Autentikasi ke AZURE OpenAI API menggunakan kebijakan yang mengautentikasi menggunakan kunci API atau identitas terkelola ID Microsoft Entra.
Otorisasi - Untuk kontrol akses yang lebih halus, praotorisasi permintaan yang meneruskan token OAuth 2.0 yang dihasilkan oleh idP seperti ID Microsoft Entra.
Untuk latar belakang, lihat:
Prasyarat
Sebelum mengikuti langkah-langkah dalam artikel ini, Anda harus memiliki:
- Sebuah instans API Management. Misalnya langkah-langkah, lihat Membuat instans Azure API Management.
- Sumber daya dan model Azure OpenAI ditambahkan ke instans API Management Anda. Misalnya langkah-langkah, lihat Mengimpor Api Azure OpenAI sebagai REST API.
- Izin untuk membuat pendaftaran aplikasi di penyedia identitas seperti penyewa Microsoft Entra yang terkait dengan langganan Azure Anda (untuk otorisasi OAuth 2.0).
Mengautentikasi dengan kunci API
Cara default untuk mengautentikasi ke Azure OpenAI API adalah dengan menggunakan kunci API. Untuk jenis autentikasi ini, semua permintaan API harus menyertakan kunci API yang valid di api-key
header HTTP.
- API Management dapat mengelola kunci API dengan cara yang aman, dengan menggunakan nilai bernama.
- Nilai bernama kemudian dapat dirujuk dalam kebijakan API untuk mengatur
api-key
header dalam permintaan ke Azure OpenAI API. Kami memberikan dua contoh cara melakukan ini: satu menggunakanset-backend-service
kebijakan, dan yang lain menggunakan kebijakan.set-header
Menyimpan kunci API dalam nilai bernama
- Dapatkan kunci API dari sumber daya Azure OpenAI. Di portal Azure, temukan kunci di halaman Kunci dan Titik Akhir sumber daya Azure OpenAI.
- Buka instans API Management Anda, dan pilih Nilai bernama di menu sebelah kiri.
- Pilih + Tambahkan, dan tambahkan nilai sebagai rahasia, atau secara opsional untuk keamanan lainnya, gunakan referensi brankas kunci.
Meneruskan kunci API dalam permintaan API - kebijakan set-backend-service
Buat backend yang menunjuk ke Azure OpenAI API.
- Di menu sebelah kiri instans API Management Anda, pilih Backend.
- Pilih + Tambahkan, dan masukkan nama deskriptif untuk backend. Contoh: openai-backend.
- Di bawah Jenis, pilih Kustom, dan masukkan URL titik akhir Azure OpenAI. Contoh:
https://contoso.openai.azure.com/openai
. - Di bawah Kredensial otorisasi, pilih Header, dan masukkan api-key sebagai nama header dan nilai bernama sebagai nilai .
- Pilih Buat.
Tambahkan cuplikan kebijakan berikut
set-backend-service
di bagianinbound
kebijakan untuk meneruskan kunci API dalam permintaan ke Azure OpenAI API.Dalam contoh ini, sumber daya backend adalah openai-backend.
<set-backend-service backend-id="openai-backend" />
Meneruskan kunci API dalam permintaan API - kebijakan set-header
Atau, tambahkan cuplikan kebijakan berikut set-header
di bagian inbound
kebijakan untuk meneruskan kunci API dalam permintaan ke Azure OpenAI API. Cuplikan kebijakan ini mengatur api-key
header dengan nilai bernama yang Anda siapkan.
Dalam contoh ini, nilai bernama dalam API Management adalah openai-api-key.
<set-header name="api-key" exists-action="override">
<value>{{openai-api-key}}</value>
</set-header>
Mengautentikasi dengan identitas terkelola
Cara alternatif untuk mengautentikasi ke Azure OpenAI API dengan menggunakan identitas terkelola di ID Microsoft Entra. Untuk latar belakang, lihat Cara mengonfigurasi Azure OpenAI Service dengan identitas terkelola.
Berikut ini adalah langkah-langkah untuk mengonfigurasi instans API Management Anda untuk menggunakan identitas terkelola untuk mengautentikasi permintaan ke Azure OpenAI API.
Aktifkan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna untuk instans API Management Anda. Contoh berikut mengasumsikan bahwa Anda telah mengaktifkan identitas terkelola yang ditetapkan sistem instans.
Tetapkan identitas terkelola peran Pengguna OpenAI Cognitive Services, yang terlingkup ke sumber daya yang sesuai. Misalnya, tetapkan identitas terkelola yang ditetapkan sistem peran Pengguna OpenAI Cognitive Services pada sumber daya Azure OpenAI. Untuk langkah-langkah terperinci, lihat Kontrol akses berbasis peran untuk layanan Azure OpenAI.
Tambahkan cuplikan kebijakan berikut di bagian
inbound
kebijakan untuk mengautentikasi permintaan ke Azure OpenAI API menggunakan identitas terkelola.Dalam contoh ini:
- Kebijakan ini
authentication-managed-identity
mendapatkan token akses untuk identitas terkelola. - Kebijakan
set-header
menetapkanAuthorization
header permintaan dengan token akses.
<authentication-managed-identity resource="https://cognitiveservices.azure.com" output-token-variable-name="managed-id-access-token" ignore-error="false" /> <set-header name="Authorization" exists-action="override"> <value>@("Bearer " + (string)context.Variables["managed-id-access-token"])</value> </set-header>
- Kebijakan ini
Otorisasi OAuth 2.0 menggunakan IdP
Untuk mengaktifkan akses yang lebih terperinci ke API OpenAPI oleh pengguna atau klien tertentu, Anda dapat melakukan praotorisasi akses ke Azure OpenAI API menggunakan otorisasi OAuth 2.0 dengan ID Microsoft Entra atau penyedia identitas lain. Untuk latar belakang, lihat Melindungi API di Azure API Management menggunakan otorisasi OAuth 2.0 dengan ID Microsoft Entra.
Catatan
Gunakan otorisasi OAuth 2.0 sebagai bagian dari strategi pertahanan mendalam. Ini bukan pengganti untuk autentikasi kunci API atau autentikasi identitas terkelola ke Azure OpenAI API.
Berikut ini adalah langkah-langkah tingkat tinggi untuk membatasi akses API ke pengguna atau aplikasi yang diotorisasi menggunakan penyedia identitas.
Buat aplikasi di idP Anda untuk mewakili Api OpenAI di Azure API Management. Jika Anda menggunakan ID Microsoft Entra, daftarkan aplikasi di penyewa ID Microsoft Entra Anda. Catat detail seperti ID aplikasi dan URI audiens.
Sesuai kebutuhan, konfigurasikan aplikasi untuk memiliki peran atau cakupan yang mewakili izin menenangkan yang diperlukan untuk mengakses Azure OpenAI API.
Tambahkan cuplikan
inbound
kebijakan di instans API Management Anda untuk memvalidasi permintaan yang menyajikan token web JSON (JWT) diAuthorization
header. Tempatkan cuplikan ini sebelum kebijakan laininbound
yang Anda tetapkan untuk mengautentikasi ke Azure OpenAI API.Catatan
Contoh berikut menunjukkan struktur umum kebijakan untuk memvalidasi JWT. Sesuaikan dengan penyedia identitas Anda dan persyaratan aplikasi dan API Anda.
validate-azure-ad-token - Jika Anda menggunakan ID Microsoft Entra, konfigurasikan
validate-azure-ad-token
kebijakan untuk memvalidasi audiens dan klaim di JWT. Untuk detailnya, lihat referensi kebijakan.<validate-azure-ad-token tenant-id={{TENANT_ID}} header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <client-application-ids> <application-id>{{CLIENT_APP_ID}}</application-id> </client-application-ids> <audiences> <audience>...</audience> </audiences> <required-claims> <claim name=...> <value>...</value> </claim> </required-claims> </validate-azure-ad-token>
validate-jwt - Jika Anda menggunakan IdP lain, konfigurasikan
validate-jwt
kebijakan untuk memvalidasi audiens dan klaim di JWT. Untuk detailnya, lihat referensi kebijakan.<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url={{OPENID_CONFIGURATION_URL}} /> <issuers> <issuer>{{ISSUER_URL}}</issuer> </issuers> <audiences> <audience>...</audience> </audiences> <required-claims> <claim name=...> <value>...</value> </claim> </required-claims> </validate-jwt>
Konten terkait
- Pelajari selengkapnya tentang MICROSOFT Entra ID dan OAuth2.0.
- Mengautentikasi permintaan ke layanan Azure AI
- Melindungi kunci Azure OpenAI dengan API Management