Bagikan melalui


Autentikasi dan otorisasi layanan Azure AI menggunakan .NET

Permintaan aplikasi ke Azure AI Services harus diautentikasi. Dalam artikel ini, Anda menjelajahi opsi yang tersedia untuk mengautentikasi ke Azure OpenAI dan layanan AI lainnya menggunakan .NET. Konsep ini berlaku untuk Semantic Kernel SDK, serta SDK dari layanan tertentu seperti Azure OpenAI. Sebagian besar layanan AI menawarkan dua cara utama untuk mengautentikasi aplikasi dan pengguna:

  • Autentikasi berbasis kunci menyediakan akses ke layanan Azure menggunakan nilai kunci rahasia. Nilai rahasia ini terkadang dikenal sebagai kunci API atau kunci akses tergantung pada layanan.
  • MICROSOFT Entra ID menyediakan solusi manajemen identitas dan akses yang komprehensif untuk memastikan bahwa identitas yang benar memiliki tingkat akses yang benar ke sumber daya Azure yang berbeda.

Bagian di depan memberikan gambaran umum konseptual untuk kedua pendekatan ini, daripada langkah-langkah implementasi terperinci. Untuk informasi selengkapnya tentang menyambungkan ke layanan Azure, kunjungi sumber daya berikut:

Catatan

Contoh dalam artikel ini terutama berfokus pada koneksi ke Azure OpenAI, tetapi konsep dan langkah implementasi yang sama juga berlaku untuk banyak layanan Azure AI lainnya.

Autentikasi menggunakan kunci

Kunci akses memungkinkan aplikasi dan alat untuk mengautentikasi ke layanan Azure AI, seperti Azure OpenAI, menggunakan kunci rahasia yang disediakan oleh layanan. Ambil kunci rahasia menggunakan alat seperti portal Azure atau Azure CLI dan gunakan untuk mengonfigurasi kode aplikasi Anda untuk terhubung ke layanan AI:

builder.Services.AddAzureOpenAIChatCompletion(
    "deployment-model",
    "service-endpoint",
    "service-key"); // Secret key
var kernel = builder.Build();

Menggunakan kunci adalah opsi mudah, tetapi pendekatan ini harus digunakan dengan hati-hati. Kunci bukan opsi autentikasi yang direkomendasikan karena:

  • Jangan ikuti prinsip hak akses minimum. Mereka memberikan izin yang ditingkatkan terlepas dari siapa yang menggunakannya atau untuk tugas apa.
  • Dapat secara tidak sengaja diperiksa ke kontrol sumber atau disimpan di lokasi yang tidak aman.
  • Dapat dengan mudah dibagikan dengan atau dikirim ke pihak yang seharusnya tidak memiliki akses.
  • Sering kali memerlukan administrasi dan rotasi manual.

Sebagai gantinya, pertimbangkan untuk menggunakan ID Microsoft Entra untuk autentikasi, yang merupakan solusi yang direkomendasikan untuk sebagian besar skenario.

Autentikasi menggunakan ID Microsoft Entra

MICROSOFT Entra ID adalah layanan manajemen identitas dan akses berbasis cloud yang menyediakan serangkaian fitur yang luas untuk skenario bisnis dan aplikasi yang berbeda. MICROSOFT Entra ID adalah solusi yang direkomendasikan untuk terhubung ke Azure OpenAI dan layanan AI lainnya dan memberikan manfaat berikut:

  • Autentikasi tanpa kunci menggunakan identitas .
  • Kontrol akses berbasis peran (RBAC) untuk menetapkan identitas izin minimum yang diperlukan.
  • Dapat menggunakan Azure.Identity pustaka klien untuk mendeteksi kredensial yang berbeda di seluruh lingkungan tanpa memerlukan perubahan kode.
  • Secara otomatis menangani tugas pemeliharaan administratif seperti memutar kunci yang mendasar.

Alur kerja untuk menerapkan autentikasi Microsoft Entra di aplikasi Anda umumnya menyertakan langkah-langkah berikut:

  • Pengembangan lokal:

    1. Masuk ke Azure menggunakan alat pengembangan lokal seperti Azure CLI atau Visual Studio.
    2. Konfigurasikan kode Anda untuk menggunakan Azure.Identity pustaka dan DefaultAzureCredential kelas klien.
    3. Tetapkan peran Azure ke akun yang Anda gunakan untuk mengaktifkan akses ke layanan AI.
  • Aplikasi yang dihosting Azure:

    1. Sebarkan aplikasi ke Azure setelah mengonfigurasinya untuk mengautentikasi menggunakan Azure.Identity pustaka klien.
    2. Tetapkan identitas terkelola ke aplikasi yang dihosting Azure.
    3. Tetapkan peran Azure ke identitas terkelola untuk mengaktifkan akses ke layanan AI.

Konsep utama alur kerja ini dieksplorasi di bagian berikut.

Mengautentikasi ke Azure secara lokal

Saat mengembangkan aplikasi secara lokal yang tersambung ke layanan Azure AI, autentikasi ke Azure menggunakan alat seperti Visual Studio atau Azure CLI. Kredensial lokal Anda dapat ditemukan oleh Azure.Identity pustaka klien dan digunakan untuk mengautentikasi aplikasi Anda ke layanan Azure, seperti yang dijelaskan di bagian Konfigurasi kode aplikasi.

Misalnya, untuk mengautentikasi ke Azure secara lokal menggunakan Azure CLI, jalankan perintah berikut:

az login

Mengonfigurasi kode aplikasi

Azure.Identity Gunakan pustaka klien dari Azure SDK untuk menerapkan autentikasi Microsoft Entra dalam kode Anda. Azure.Identity Pustaka mencakup DefaultAzureCredential kelas , yang secara otomatis menemukan kredensial Azure yang tersedia berdasarkan lingkungan dan alat saat ini yang tersedia. Kunjungi dokumentasi Azure SDK untuk .NET untuk kumpulan lengkap kredensial lingkungan yang didukung dan urutan pencariannya.

Misalnya, konfigurasikan Semantic Kernel untuk mengautentikasi menggunakan DefaultAzureCredential kode berikut:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddAzureOpenAITextGeneration(
        "your-model",
        "your-endpoint",
        new DefaultAzureCredential())
    .Build();

DefaultAzureCredential memungkinkan aplikasi dipromosikan dari pengembangan lokal ke produksi tanpa perubahan kode. Misalnya, selama pengembangan DefaultAzureCredential menggunakan kredensial pengguna lokal Anda dari Visual Studio atau Azure CLI untuk mengautentikasi ke layanan AI. Saat aplikasi disebarkan ke Azure, DefaultAzureCredential menggunakan identitas terkelola yang ditetapkan ke aplikasi Anda.

Menetapkan peran ke identitas Anda

Kontrol akses berbasis peran Azure (Azure RBAC) adalah sistem yang menyediakan manajemen akses terperinci sumber daya Azure. Tetapkan peran ke prinsip keamanan yang digunakan oleh untuk menyambungkan DefaultAzureCredential ke layanan Azure AI, baik itu pengguna individu, grup, perwakilan layanan, atau identitas terkelola. Peran Azure adalah kumpulan izin yang memungkinkan identitas melakukan berbagai tugas, seperti menghasilkan penyelesaian atau membuat dan menghapus sumber daya.

Tetapkan peran seperti Pengguna OpenAI Cognitive Services (ID peran: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) ke identitas yang relevan menggunakan alat seperti Azure CLI, Bicep, atau Portal Microsoft Azure. Misalnya, gunakan az role assignment create perintah untuk menetapkan peran menggunakan Azure CLI:

az role assignment create \
        --role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
        --assignee-object-id "$PRINCIPAL_ID" \
        --scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
        --assignee-principal-type User

Pelajari selengkapnya tentang Azure RBAC menggunakan sumber daya berikut:

Menetapkan identitas terkelola ke aplikasi Anda

Dalam sebagian besar skenario, aplikasi yang dihosting Azure harus menggunakan identitas terkelola untuk terhubung ke layanan lain seperti Azure OpenAI. Identitas terkelola menyediakan identitas yang dikelola sepenuhnya di ID Microsoft Entra untuk digunakan aplikasi saat menyambungkan ke sumber daya yang mendukung autentikasi Microsoft Entra. DefaultAzureCredential menemukan identitas yang terkait dengan aplikasi Anda dan menggunakannya untuk mengautentikasi ke layanan Azure lainnya.

Ada dua jenis identitas terkelola yang dapat Anda tetapkan ke aplikasi Anda:

  • Identitas yang ditetapkan sistem terkait dengan aplikasi Anda dan dihapus jika aplikasi Anda dihapus. Aplikasi hanya dapat memiliki satu identitas yang ditetapkan sistem.
  • Identitas yang ditetapkan pengguna adalah sumber daya Azure mandiri yang dapat ditetapkan ke aplikasi Anda. Aplikasi dapat memiliki beberapa identitas yang ditetapkan pengguna.

Tetapkan peran ke identitas terkelola seperti akun pengguna individual, seperti peran Pengguna OpenAI Cognitive Services. pelajari selengkapnya tentang bekerja dengan identitas terkelola menggunakan sumber daya berikut: