Mengembangkan aplikasi layanan Azure AI dengan Azure Key Vault
Pelajari cara mengembangkan aplikasi layanan Azure AI dengan aman menggunakan Azure Key Vault.
Key Vault mengurangi risiko rahasia mungkin bocor secara tidak sengaja, karena Anda menghindari penyimpanan informasi keamanan di aplikasi Anda.
- Langganan Azure yang sah - Buat langganan gratis
- IDE Visual Studio
- Azure Key Vault
- Sumber daya layanan Azure AI
- Langganan Azure yang valid - Buat langganan secara gratis.
- Python 3.7 atau yang lebih baru
- CLI Azure atau Azure PowerShell
- Azure Key Vault
- Sumber daya layanan Azure AI
- Langganan Azure yang valid - Buat langganan secara gratis.
- Java Development Kit (JDK) versi 8 atau yang lebih baru
- CLI Azure atau Azure PowerShell
- Azure Key Vault
- Sumber daya layanan Azure AI
- Langganan Azure yang valid - Buat langganan secara gratis.
- Node.js v14 LTS saat ini atau yang lebih baru
- CLI Azure atau Azure PowerShell
- Azure Key Vault
- Sumber daya layanan Azure AI
Catatan
Tinjau dokumentasi dan artikel mulai cepat untuk layanan Azure AI yang Anda gunakan untuk mendapatkan pemahaman tentang:
- Informasi masuk dan informasi lain yang Anda perlukan untuk mengirim panggilan API.
- Paket dan kode yang Anda perlukan untuk menjalankan aplikasi Anda.
Sebelum menambahkan informasi kredensial ke brankas kunci Azure, Anda perlu mengambilnya dari sumber daya layanan Azure AI Anda. Misalnya, jika layanan Anda memerlukan kunci dan titik akhir, Anda dapat menemukannya dengan langkah-langkah berikut:
Buka sumber daya Anda di portal Microsoft Azure.
Dari menu yang dapat diciutkan di sebelah kiri, pilih Kunci dan Titik Akhir.
Beberapa layanan Azure AI memerlukan informasi yang berbeda untuk mengautentikasi panggilan API, seperti kunci dan wilayah. Pastikan untuk mengambil informasi ini sebelum melanjutkan.
Agar aplikasi Anda mengambil dan menggunakan info masuk Anda untuk mengautentikasi panggilan API, Anda harus menambahkan info masuk ke rahasia brankas kunci.
Ulangi langkah-langkah ini guna menghasilkan rahasia untuk setiap mandat sumber daya yang diperlukan. Misalnya, kunci dan titik akhir. Nama rahasia ini akan digunakan nanti untuk mengautentikasi aplikasi Anda.
Buka tab atau jendela baru di browser. Navigasikan ke brankas kunci Anda di portal Azure.
Dari menu yang dapat diciutkan di sebelah kiri, pilih Objek>Rahasia.
Pilih Buat/impor.
Pada layar Buat rahasia, masukkan nilai berikut:
Nama Nilai Opsi pengunggahan Manual Nama Nama rahasia untuk kunci atau titik akhir Anda. Contoh: "CognitiveServicesKey" atau "CognitiveServicesEndpoint" Nilai Kunci sumber daya atau titik akhir layanan Azure AI Anda. Nantinya, aplikasi Anda akan menggunakan "Nama" rahasia untuk mengakses "Nilai" dengan aman.
Biarkan nilai lainnya sesuai default. Pilih Buat.
Tip
Pastikan untuk mengingat nama yang Anda tetapkan untuk rahasia karena akan digunakan nanti di aplikasi Anda.
Sekarang Anda telah memiliki rahasia bernama untuk informasi sumber daya Anda.
Sebaiknya buat variabel lingkungan untuk nama brankas kunci Azure Anda. Aplikasi Anda akan membaca variabel lingkungan ini pada runtime bahasa umum untuk mengambil informasi kunci dan titik akhir Anda.
Untuk mengatur variabel lingkungan, gunakan salah satu perintah berikut. KEY_VAULT_NAME
dengan nama variabel lingkungan, dan ganti Your-Key-Vault-Name
dengan nama brankas kunci Anda, yang akan disimpan di variabel lingkungan.
Buat dan tetapkan variabel lingkungan yang bertahan, dengan nilai.
setx KEY_VAULT_NAME "Your-Key-Vault-Name"
Dalam instans baru Command Prompt, baca variabel lingkungan.
echo %KEY_VAULT_NAME%
Pengembang yang menggunakan Visual Studio 2017 atau yang lebih baru dapat mengautentikasi akun Microsoft Entra melalui Visual Studio. Hal ini memungkinkan Anda mengakses rahasia di brankas kunci Anda dengan masuk ke langganan Azure Anda dari dalam IDE.
Untuk mengautentikasi di Visual Studio, pilih Alat dari menu navigasi atas, lalu pilih Opsi. Buka opsi Autentikasi Layanan Azure untuk masuk dengan nama pengguna dan kata sandi Anda.
Sebelum dapat memberikan akses ke brankas kunci, Anda harus mengautentikasi dengan nama pengguna dan kata sandi Microsoft Entra Anda.
Untuk mengautentikasi dengan Azure CLI, jalankan perintah az login
.
az login
Pada sistem dengan browser web default, Azure CLI akan meluncurkan browser untuk mengautentikasi. Untuk sistem tanpa browser web bawaan, perintah az login
akan menggunakan alur autentikasi kode perangkat. Pengguna juga dapat memaksa Azure CLI untuk menggunakan alur kode perangkat alih-alih meluncurkan browser dengan menentukan argumen --use-device-code
.
Jika Anda memiliki beberapa langganan, pastikan untuk memilih langganan Azure yang berisi brankas kunci Anda.
Buat kebijakan akses untuk brankas kunci, yang akan memberikan izin rahasia ke akun pengguna Anda.
Untuk mengatur kebijakan akses, jalankan perintah az keyvault set-policy. Ganti Your-Key-Vault-Name
dengan nama brankas kunci Anda. Ganti user@domain.com
dengan nama pengguna Microsoft Entra Anda.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Menggunakan Ide Visual Studio, buat aplikasi konsol .NET Core baru. Ini akan membuat proyek "Halo Dunia" dengan satu file sumber C#: program.cs
.
Instal pustaka klien berikut dengan mengklik kanan solusi di Penjelajah Solusi, lalu memilih Kelola Paket NuGet. Di manajer paket yang terbuka, pilih Telusuri dan cari pustaka berikut, lalu pilih Instal untuk setiap pustaka:
Azure.Security.KeyVault.Secrets
Azure.Identity
Salin kode contoh berikut ke file program.cs
Anda. Ganti Your-Key-Secret-Name
dan Your-Endpoint-Secret-Name
dengan nama rahasia yang Anda tetapkan di brankas kunci Anda.
using System;
using System.Threading.Tasks;
using Azure;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using System.Net;
namespace key_vault_console_app
{
class Program
{
static async Task Main(string[] args)
{
//Name of your key vault
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
//variables for retrieving the key and endpoint from your key vault.
//Set these variables to the names you created for your secrets
const string keySecretName = "Your-Key-Secret-Name";
const string endpointSecretName = "Your-Endpoint-Secret-Name";
//Endpoint for accessing your key vault
var kvUri = $"https://{keyVaultName}.vault.azure.net";
var keyVaultClient = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Console.WriteLine($"Retrieving your secrets from {keyVaultName}.");
//Key and endpoint secrets retrieved from your key vault
var keySecret = await keyVaultClient.GetSecretAsync(keySecretName);
var endpointSecret = await keyVaultClient.GetSecretAsync(endpointSecretName);
Console.WriteLine($"Your key secret value is: {keySecret.Value.Value}");
Console.WriteLine($"Your endpoint secret value is: {endpointSecret.Value.Value}");
Console.WriteLine("Secrets retrieved successfully");
}
}
}
Jalankan aplikasi dengan memilih tombol Debug di bagian atas Visual Studio. Rahasia titik akhir dan kunci Anda akan diambil dari brankas kunci Anda.
Jika Anda menggunakan sumber daya multi-layanan atau sumber daya Bahasa, Anda dapat memperbarui aplikasi Anda dengan mengikuti langkah-langkah berikut untuk mengirim contoh panggilan Pengenalan Entitas Karakter dengan mengambil kunci dan titik akhir dari brankas kunci Anda.
Instal pustaka
Azure.AI.TextAnalytics
dengan mengklik kanan solusi di Penjelajah Solusi dan memilih Kelola Paket NuGet. Di manajer paket yang terbuka, pilih Telusuri dan cari pustaka berikut, lalu pilih Instal untuk setiap pustaka:Tambahkan direktif berikut ke bagian atas file
program.cs
Anda.using Azure.AI.TextAnalytics;
Tambahkan sampel kode berikut ke aplikasi Anda.
// Example method for extracting named entities from text private static void EntityRecognitionExample(string keySecret, string endpointSecret) { //String to be sent for Named Entity Recognition var exampleString = "I had a wonderful trip to Seattle last week."; AzureKeyCredential azureKeyCredential = new AzureKeyCredential(keySecret); Uri endpoint = new Uri(endpointSecret); var languageServiceClient = new TextAnalyticsClient(endpoint, azureKeyCredential); Console.WriteLine($"Sending a Named Entity Recognition (NER) request"); var response = languageServiceClient.RecognizeEntities(exampleString); Console.WriteLine("Named Entities:"); foreach (var entity in response.Value) { Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}"); Console.WriteLine($"\t\tScore: {entity.ConfidenceScore:F2},\tLength: {entity.Length},\tOffset: {entity.Offset}\n"); } }
Tambahkan kode berikut untuk memanggil
EntityRecognitionExample()
dari metode utama Anda, dengan nilai kunci dan titik akhir Anda.EntityRecognitionExample(keySecret.Value.Value, endpointSecret.Value.Value);
Jalankan aplikasi lagi.
Sebelum dapat memberikan akses ke brankas kunci, Anda harus mengautentikasi dengan nama pengguna dan kata sandi Microsoft Entra Anda.
Untuk mengautentikasi dengan Azure CLI, jalankan perintah az login
.
az login
Pada sistem dengan browser web default, Azure CLI akan meluncurkan browser untuk mengautentikasi. Untuk sistem tanpa browser web bawaan, perintah az login
akan menggunakan alur autentikasi kode perangkat. Pengguna juga dapat memaksa Azure CLI untuk menggunakan alur kode perangkat alih-alih meluncurkan browser dengan menentukan argumen --use-device-code
.
Jika Anda memiliki beberapa langganan, pastikan untuk memilih langganan Azure yang berisi brankas kunci Anda.
Buat kebijakan akses untuk brankas kunci, yang akan memberikan izin rahasia ke akun pengguna Anda.
Untuk mengatur kebijakan akses, jalankan perintah az keyvault set-policy. Ganti Your-Key-Vault-Name
dengan nama brankas kunci Anda. Ganti user@domain.com
dengan nama pengguna Microsoft Entra Anda.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Buat folder baru bernama keyVaultExample
. Kemudian gunakan penyunting kode pilihan Anda untuk membuat file bernama program.py
di dalam folder yang baru dibuat.
Di terminal atau prompt perintah, navigasikan ke folder proyek Anda dan instal pustaka identitas Microsoft Entra:
pip install azure-identity
Menginstal pustaka rahasia Key Vault:
pip install azure-keyvault-secrets
Tambahkan sampel kode berikut ke file bernama program.py
. Ganti Your-Key-Secret-Name
dan Your-Endpoint-Secret-Name
dengan nama rahasia yang Anda tetapkan di brankas kunci Anda.
import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
from azure.core.credentials import AzureKeyCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
# Set these variables to the names you created for your secrets
keySecretName = "Your-Key-Secret-Name"
endpointSecretName = "Your-Endpoint-Secret-Name"
# URI for accessing key vault
KVUri = f"https://{keyVaultName}.vault.azure.net"
# Instantiate the client and retrieve secrets
credential = DefaultAzureCredential()
kv_client = SecretClient(vault_url=KVUri, credential=credential)
print(f"Retrieving your secrets from {keyVaultName}.")
retrieved_key = kv_client.get_secret(keySecretName).value
retrieved_endpoint = kv_client.get_secret(endpointSecretName).value
print(f"Your secret key value is {retrieved_key}.");
print(f"Your secret endpoint value is {retrieved_endpoint}.");
Gunakan perintah berikut untuk menjalankan aplikasi. Rahasia titik akhir dan kunci Anda akan diambil dari brankas kunci Anda.
python ./program.py
Jika Anda menggunakan sumber daya multi-layanan atau sumber daya Bahasa, Anda dapat memperbarui aplikasi Anda dengan mengikuti langkah-langkah berikut untuk mengirim contoh panggilan Pengenalan Entitas Karakter dengan mengambil kunci dan titik akhir dari brankas kunci Anda.
Instal pustaka layanan Bahasa:
pip install azure-ai-textanalytics==5.1.0
Tambahkan kode berikut ke aplikasi Anda
from azure.ai.textanalytics import TextAnalyticsClient # Authenticate the key vault secrets client using your key and endpoint azure_key_credential = AzureKeyCredential(retrieved_key) # Now you can use key vault credentials with the Language service language_service_client = TextAnalyticsClient( endpoint=retrieved_endpoint, credential=azure_key_credential) # Example of recognizing entities from text print("Sending NER request") try: documents = ["I had a wonderful trip to Seattle last week."] result = language_service_client.recognize_entities(documents = documents)[0] print("Named Entities:\n") for entity in result.entities: print("\tText: \t", entity.text, "\tCategory: \t", entity.category, "\tSubCategory: \t", entity.subcategory, "\n\tConfidence Score: \t", round(entity.confidence_score, 2), "\tLength: \t", entity.length, "\tOffset: \t", entity.offset, "\n") except Exception as err: print("Encountered exception. {}".format(err))
Jalankan aplikasi lagi.
Sebelum dapat memberikan akses ke brankas kunci, Anda harus mengautentikasi dengan nama pengguna dan kata sandi Microsoft Entra Anda.
Untuk mengautentikasi dengan Azure CLI, jalankan perintah az login
.
az login
Pada sistem dengan browser web default, Azure CLI akan meluncurkan browser untuk mengautentikasi. Untuk sistem tanpa browser web bawaan, perintah az login
akan menggunakan alur autentikasi kode perangkat. Pengguna juga dapat memaksa Azure CLI untuk menggunakan alur kode perangkat alih-alih meluncurkan browser dengan menentukan argumen --use-device-code
.
Jika Anda memiliki beberapa langganan, pastikan untuk memilih langganan Azure yang berisi brankas kunci Anda.
Buat kebijakan akses untuk brankas kunci, yang akan memberikan izin rahasia ke akun pengguna Anda.
Untuk mengatur kebijakan akses, jalankan perintah az keyvault set-policy. Ganti Your-Key-Vault-Name
dengan nama brankas kunci Anda. Ganti user@domain.com
dengan nama pengguna Microsoft Entra Anda.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Di IDE pilihan Anda, buat proyek aplikasi konsol Java baru, dan buat kelas bernama Example
.
Di proyek Anda, tambahkan dependensi berikut ke file pom.xml
Anda.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-secrets</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
Salin kode berikut ke dalam file bernama Example.java
. Ganti Your-Key-Secret-Name
dan Your-Endpoint-Secret-Name
dengan nama rahasia yang Anda tetapkan di brankas kunci Anda.
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.core.credential.AzureKeyCredential;
public class Example {
public static void main(String[] args) {
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
//variables for retrieving the key and endpoint from your key vault.
//Set these variables to the names you created for your secrets
String keySecretName = "Your-Key-Secret-Name";
String endpointSecretName = "Your-Endpoint-Secret-Name";
//Create key vault secrets client
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
//retrieve key and endpoint from key vault
String keyValue = secretClient.getSecret(keySecretName).getValue();
String endpointValue = secretClient.getSecret(endpointSecretName).getValue();
System.out.printf("Your secret key value is: %s", keyValue)
System.out.printf("Your secret endpoint value is: %s", endpointValue)
}
}
Jika Anda menggunakan sumber daya multi-layanan atau sumber daya Bahasa, Anda dapat memperbarui aplikasi Anda dengan mengikuti langkah-langkah berikut untuk mengirim contoh panggilan Pengenalan Entitas Karakter dengan mengambil kunci dan titik akhir dari brankas kunci Anda.
Di aplikasi Anda, tambahkan dependensi berikut:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-textanalytics</artifactId> <version>5.1.12</version> </dependency>
tambahkan pernyataan import berikut ke file Anda.
import com.azure.ai.textanalytics.models.*; import com.azure.ai.textanalytics.TextAnalyticsClientBuilder; import com.azure.ai.textanalytics.TextAnalyticsClient;
Tambahkan kode berikut ke metode
main()
di aplikasi Anda:TextAnalyticsClient languageClient = new TextAnalyticsClientBuilder() .credential(new AzureKeyCredential(keyValue)) .endpoint(endpointValue) .buildClient(); // Example for recognizing entities in text String text = "I had a wonderful trip to Seattle last week."; for (CategorizedEntity entity : languageClient.recognizeEntities(text)) { System.out.printf( "Recognized entity: %s, entity category: %s, entity sub-category: %s, score: %s, offset: %s, length: %s.%n", entity.getText(), entity.getCategory(), entity.getSubcategory(), entity.getConfidenceScore(), entity.getOffset(), entity.getLength()); }
Jalankan aplikasi Anda
Sebelum dapat memberikan akses ke brankas kunci, Anda harus mengautentikasi dengan nama pengguna dan kata sandi Microsoft Entra Anda.
Untuk mengautentikasi dengan Azure CLI, jalankan perintah az login
.
az login
Pada sistem dengan browser web default, Azure CLI akan meluncurkan browser untuk mengautentikasi. Untuk sistem tanpa browser web bawaan, perintah az login
akan menggunakan alur autentikasi kode perangkat. Pengguna juga dapat memaksa Azure CLI untuk menggunakan alur kode perangkat alih-alih meluncurkan browser dengan menentukan argumen --use-device-code
.
Jika Anda memiliki beberapa langganan, pastikan untuk memilih langganan Azure yang berisi brankas kunci Anda.
Buat kebijakan akses untuk brankas kunci, yang akan memberikan izin rahasia ke akun pengguna Anda.
Untuk mengatur kebijakan akses, jalankan perintah az keyvault set-policy. Ganti Your-Key-Vault-Name
dengan nama brankas kunci Anda. Ganti user@domain.com
dengan nama pengguna Microsoft Entra Anda.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Buat aplikasi Node.js yang menggunakan brankas kunci Anda.
Di terminal, buat folder bernama key-vault-js-example
dan ubah ke folder itu:
mkdir key-vault-js-example && cd key-vault-js-example
Buat proyek Node.js baru:
npm init -y
Dengan menggunakan terminal, instal pustaka rahasia Azure Key Vault, @azure/keyvault-secrets untuk Node.js.
npm install @azure/keyvault-secrets
Instal pustaka Identitas Azure, paket @azure/identity untuk mengautentikasi ke Key Vault.
npm install @azure/identity
Tambahkan sampel kode berikut ke file bernama index.js
. Ganti Your-Key-Secret-Name
dan Your-Endpoint-Secret-Name
dengan nama rahasia yang Anda tetapkan di brankas kunci Anda.
const { SecretClient } = require("@azure/keyvault-secrets");
const { DefaultAzureCredential } = require("@azure/identity");
// Load the .env file if it exists
const dotenv = require("dotenv");
dotenv.config();
async function main() {
const credential = new DefaultAzureCredential();
const keyVaultName = process.env["KEY_VAULT_NAME"];
const url = "https://" + keyVaultName + ".vault.azure.net";
const kvClient = new SecretClient(url, credential);
// Set these variables to the names you created for your secrets
const keySecretName = "Your-Key-Secret-Name";
const endpointSecretName = "Your-Endpoint-Secret-Name";
console.log("Retrieving secrets from ", keyVaultName);
const retrievedKey = await (await kvClient.getSecret(keySecretName)).value;
const retrievedEndpoint = await (await kvClient.getSecret(endpointSecretName)).value;
console.log("Your secret key value is: ", retrievedKey);
console.log("Your secret endpoint value is: ", retrievedEndpoint);
}
main().catch((error) => {
console.error("An error occurred:", error);
process.exit(1);
});
Gunakan perintah berikut untuk menjalankan aplikasi. Rahasia titik akhir dan kunci Anda akan diambil dari brankas kunci Anda.
node index.js
Jika Anda menggunakan sumber daya multi-layanan atau sumber daya Bahasa, Anda dapat memperbarui aplikasi Anda dengan mengikuti langkah-langkah berikut untuk mengirim contoh panggilan Pengenalan Entitas Karakter dengan mengambil kunci dan titik akhir dari brankas kunci Anda.
Instal layanan Azure AI untuk Pustaka bahasa, @azure/ai-text-analytics untuk mengirim permintaan API ke layanan Bahasa.
npm install @azure/ai-text-analytics@5.1.0
Tambahkan kode berikut ke fungsi Anda:
const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics"); // Authenticate the language client with your key and endpoint const languageClient = new TextAnalyticsClient(retrievedEndpoint, new AzureKeyCredential(retrievedKey)); // Example for recognizing entities in text console.log("Sending NER request") const entityInputs = [ "I had a wonderful trip to Seattle last week." ]; const entityResults = await languageClient.recognizeEntities(entityInputs); entityResults.forEach(document => { console.log(`Document ID: ${document.id}`); document.entities.forEach(entity => { console.log(`\tName: ${entity.text} \tCategory: ${entity.category} \tSubcategory: ${entity.subCategory ? entity.subCategory : "N/A"}`); console.log(`\tScore: ${entity.confidenceScore}`); }); });
Jalankan aplikasi lagi.
- Lihat Apa itu layanan Azure AI untuk fitur yang tersedia yang dapat Anda kembangkan bersama dengan Azure Key Vault.
- Untuk informasi tambahan tentang pengembangan aplikasi yang aman, lihat: