Utveckla Azure AI-tjänstprogram med Azure Key Vault
Lär dig hur du utvecklar Azure AI-tjänstprogram på ett säkert sätt med hjälp av Azure Key Vault.
Key Vault minskar risken för att hemligheter kan läcka ut av misstag, eftersom du undviker att lagra säkerhetsinformation i ditt program.
- En giltig Azure-prenumeration – Skapa en kostnadsfritt
- Visual Studio IDE
- Ett Azure Key Vault
- En Azure AI-tjänstresurs
- En giltig Azure-prenumeration – Skapa en kostnadsfritt.
- Python 3.7 eller senare
- Azure CLI eller Azure PowerShell
- Ett Azure Key Vault
- En Azure AI-tjänstresurs
- En giltig Azure-prenumeration – Skapa en kostnadsfritt.
- Java Development Kit (JDK) version 8 eller senare
- Azure CLI eller Azure PowerShell
- Ett Azure Key Vault
- En Azure AI-tjänstresurs
- En giltig Azure-prenumeration – Skapa en kostnadsfritt.
- Aktuell Node.js v14 LTS eller senare
- Azure CLI eller Azure PowerShell
- Ett Azure Key Vault
- En Azure AI-tjänstresurs
Anteckning
Läs dokumentationen och snabbstartsartiklarna för den Azure AI-tjänst som du använder för att få en förståelse för:
- Autentiseringsuppgifterna och annan information som du behöver för att skicka API-anrop.
- De paket och den kod du behöver för att köra programmet.
Innan du lägger till information om dina autentiseringsuppgifter i ditt Azure-nyckelvalv måste du hämta dem från azure AI-tjänstresursen. Om din tjänst till exempel behöver en nyckel och en slutpunkt hittar du dem med hjälp av följande steg:
Gå till din Azure-resurs i Azure Portal.
Välj Nycklar och slutpunkt i menyn som kan komprimeras till vänster.
Vissa Azure AI-tjänster kräver olika information för att autentisera API-anrop, till exempel en nyckel och region. Se till att hämta den här informationen innan du fortsätter.
För att programmet ska kunna hämta och använda dina autentiseringsuppgifter för att autentisera API-anrop måste du lägga till dem i dina nyckelvalvshemligheter.
Upprepa de här stegen för att generera en hemlighet för varje nödvändig resursautentiseringsuppgift. Till exempel en nyckel och en slutpunkt. Dessa hemliga namn används senare för att autentisera ditt program.
Öppna en ny webbläsarflik eller ett nytt fönster. Gå till ditt nyckelvalv i Azure Portal.
Välj Objekthemligheter> i menyn som kan komprimeras till vänster.
Välj Generera/Importera.
På skärmen Skapa en hemlighet anger du följande värden:
Name Värde Uppladdningsalternativ Manuell Name Ett hemligt namn för din nyckel eller slutpunkt. Till exempel: "CognitiveServicesKey" eller "CognitiveServicesEndpoint" Värde Resursnyckeln eller slutpunkten för Azure AI-tjänster. Senare använder programmet hemligheten "Namn" för att på ett säkert sätt komma åt värdet.
Lämna de andra värdena som standardvärden. Välj Skapa.
Tips
Kom ihåg de namn som du har angett för dina hemligheter, eftersom du kommer att använda dem senare i programmet.
Du bör nu ha namngett hemligheter för din resursinformation.
Vi rekommenderar att du skapar en miljövariabel för namnet på ditt Azure-nyckelvalv. Programmet läser den här miljövariabeln vid körning för att hämta nyckel- och slutpunktsinformation.
Om du vill ange miljövariabler använder du följande kommandon. KEY_VAULT_NAME
med namnet på miljövariabeln och ersätt Your-Key-Vault-Name
med namnet på ditt nyckelvalv, som lagras i miljövariabeln.
Skapa och tilldela en bevarad miljövariabel med tanke på värdet.
setx KEY_VAULT_NAME "Your-Key-Vault-Name"
I en ny instans av kommandotolken läser du miljövariabeln.
echo %KEY_VAULT_NAME%
Utvecklare som använder Visual Studio 2017 eller senare kan autentisera ett Microsoft Entra-konto via Visual Studio. På så sätt kan du komma åt hemligheter i ditt nyckelvalv genom att logga in på din Azure-prenumeration inifrån IDE:t.
Om du vill autentisera i Visual Studio väljer du Verktyg på den översta navigeringsmenyn och väljer Alternativ. Gå till alternativet Azure Service Authentication för att logga in med ditt användarnamn och lösenord.
Innan du kan ge åtkomst till ditt nyckelvalv måste du autentisera med ditt Microsoft Entra-användarnamn och lösenord.
Kör kommandot för att autentisera az login
med Azure CLI.
az login
På system med en standardwebbläsare startar Azure CLI webbläsaren för att autentisera. För system utan en standardwebbläsare az login
använder kommandot autentiseringsflödet för enhetskod. Du kan också tvinga Azure CLI att använda enhetskodflödet i stället för att starta en webbläsare genom att --use-device-code
ange argumentet.
Om du har flera prenumerationer måste du välja den Azure-prenumeration som innehåller ditt nyckelvalv.
Skapa en åtkomstprincip för ditt nyckelvalv som ger ditt användarkonto hemliga behörigheter.
Om du vill ange åtkomstprincipen kör du kommandot az keyvault set-policy . Ersätt Your-Key-Vault-Name
med namnet på ditt nyckelvalv. Ersätt user@domain.com
med ditt Microsoft Entra-användarnamn.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Skapa en ny .NET Core-konsolapp med Visual Studio IDE. Då skapas ett "Hello World"-projekt med en enda C#-källfil: program.cs
.
Installera följande klientbibliotek genom att högerklicka på lösningen i Solution Explorer och välja Hantera NuGet-paket. I pakethanteraren som öppnas väljer du Bläddra och söker efter följande bibliotek och väljer Installera för var och en:
Azure.Security.KeyVault.Secrets
Azure.Identity
Kopiera följande exempelkod till filen program.cs
. Ersätt Your-Key-Secret-Name
och Your-Endpoint-Secret-Name
med de hemliga namn som du angav i nyckelvalvet.
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");
}
}
}
Kör programmet genom att välja knappen Felsök överst i Visual Studio. Dina nyckel- och slutpunktshemligheter hämtas från nyckelvalvet.
Om du använder en resurs för flera tjänster eller en språkresurs kan du uppdatera ditt program genom att följa de här stegen för att skicka ett exempel på ett anrop för namngiven entitetsigenkänning genom att hämta en nyckel och en slutpunkt från nyckelvalvet.
Azure.AI.TextAnalytics
Installera biblioteket genom att högerklicka på lösningen i Solution Explorer och välja Hantera NuGet-paket. I pakethanteraren som öppnas väljer du Bläddra och söker efter följande bibliotek och väljer Installera för var och en:Lägg till följande direktiv överst
program.cs
i filen.using Azure.AI.TextAnalytics;
Lägg till följande kodexempel i ditt program.
// 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"); } }
Lägg till följande kod för att anropa
EntityRecognitionExample()
från huvudmetoden med dina nyckel- och slutpunktsvärden.EntityRecognitionExample(keySecret.Value.Value, endpointSecret.Value.Value);
Kör programmet.
Innan du kan ge åtkomst till ditt nyckelvalv måste du autentisera med ditt Microsoft Entra-användarnamn och lösenord.
Kör kommandot för att autentisera az login
med Azure CLI.
az login
På system med en standardwebbläsare startar Azure CLI webbläsaren för att autentisera. För system utan en standardwebbläsare az login
använder kommandot autentiseringsflödet för enhetskod. Du kan också tvinga Azure CLI att använda enhetskodflödet i stället för att starta en webbläsare genom att --use-device-code
ange argumentet.
Om du har flera prenumerationer måste du välja den Azure-prenumeration som innehåller ditt nyckelvalv.
Skapa en åtkomstprincip för ditt nyckelvalv som ger ditt användarkonto hemliga behörigheter.
Om du vill ange åtkomstprincipen kör du kommandot az keyvault set-policy . Ersätt Your-Key-Vault-Name
med namnet på ditt nyckelvalv. Ersätt user@domain.com
med ditt Microsoft Entra-användarnamn.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Skapa en ny mapp med namnet keyVaultExample
. Använd sedan önskad kodredigerare för att skapa en fil med namnet program.py
i den nyligen skapade mappen.
I en terminal eller kommandotolk går du till projektmappen och installerar Microsoft Entra-identitetsbiblioteket:
pip install azure-identity
Installera key vault-hemlighetsbiblioteket:
pip install azure-keyvault-secrets
Lägg till följande kodexempel i filen med namnet program.py
. Ersätt Your-Key-Secret-Name
och Your-Endpoint-Secret-Name
med de hemliga namn som du angav i nyckelvalvet.
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}.");
Använd följande kommando för att köra programmet. Dina nyckel- och slutpunktshemligheter hämtas från nyckelvalvet.
python ./program.py
Om du använder en resurs för flera tjänster eller en språkresurs kan du uppdatera ditt program genom att följa de här stegen för att skicka ett exempel på ett anrop för namngiven entitetsigenkänning genom att hämta en nyckel och en slutpunkt från nyckelvalvet.
Installera språktjänstbiblioteket:
pip install azure-ai-textanalytics==5.1.0
Lägg till följande kod i ditt program
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))
Kör programmet.
Innan du kan ge åtkomst till ditt nyckelvalv måste du autentisera med ditt Microsoft Entra-användarnamn och lösenord.
Kör kommandot för att autentisera az login
med Azure CLI.
az login
På system med en standardwebbläsare startar Azure CLI webbläsaren för att autentisera. För system utan en standardwebbläsare az login
använder kommandot autentiseringsflödet för enhetskod. Du kan också tvinga Azure CLI att använda enhetskodflödet i stället för att starta en webbläsare genom att --use-device-code
ange argumentet.
Om du har flera prenumerationer måste du välja den Azure-prenumeration som innehåller ditt nyckelvalv.
Skapa en åtkomstprincip för ditt nyckelvalv som ger ditt användarkonto hemliga behörigheter.
Om du vill ange åtkomstprincipen kör du kommandot az keyvault set-policy . Ersätt Your-Key-Vault-Name
med namnet på ditt nyckelvalv. Ersätt user@domain.com
med ditt Microsoft Entra-användarnamn.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
I önskad IDE skapar du ett nytt Java-konsolprogramprojekt och skapar en klass med namnet Example
.
I projektet lägger du till följande beroenden i pom.xml
filen.
<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>
Kopiera följande kod till en fil med namnet Example.java
. Ersätt Your-Key-Secret-Name
och Your-Endpoint-Secret-Name
med de hemliga namn som du angav i nyckelvalvet.
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)
}
}
Om du använder en resurs för flera tjänster eller en språkresurs kan du uppdatera ditt program genom att följa de här stegen för att skicka ett exempel på ett anrop för namngiven entitetsigenkänning genom att hämta en nyckel och en slutpunkt från nyckelvalvet.
Lägg till följande beroende i ditt program:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-textanalytics</artifactId> <version>5.1.12</version> </dependency>
lägg till följande importinstruktioner i filen.
import com.azure.ai.textanalytics.models.*; import com.azure.ai.textanalytics.TextAnalyticsClientBuilder; import com.azure.ai.textanalytics.TextAnalyticsClient;
Lägg till följande kod i
main()
-metoden i ditt program: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()); }
Köra ditt program
Innan du kan ge åtkomst till ditt nyckelvalv måste du autentisera med ditt Microsoft Entra-användarnamn och lösenord.
Kör kommandot för att autentisera az login
med Azure CLI.
az login
På system med en standardwebbläsare startar Azure CLI webbläsaren för att autentisera. För system utan en standardwebbläsare az login
använder kommandot autentiseringsflödet för enhetskod. Du kan också tvinga Azure CLI att använda enhetskodflödet i stället för att starta en webbläsare genom att --use-device-code
ange argumentet.
Om du har flera prenumerationer måste du välja den Azure-prenumeration som innehåller ditt nyckelvalv.
Skapa en åtkomstprincip för ditt nyckelvalv som ger ditt användarkonto hemliga behörigheter.
Om du vill ange åtkomstprincipen kör du kommandot az keyvault set-policy . Ersätt Your-Key-Vault-Name
med namnet på ditt nyckelvalv. Ersätt user@domain.com
med ditt Microsoft Entra-användarnamn.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Skapa ett Node.js program som använder ditt nyckelvalv.
I en terminal skapar du en mapp med namnet key-vault-js-example
och ändrar till den mappen:
mkdir key-vault-js-example && cd key-vault-js-example
Initiera Node.js projektet:
npm init -y
Använd terminalen och installera Azure Key Vault-hemlighetsbiblioteket @azure/keyvault-secrets för Node.js.
npm install @azure/keyvault-secrets
Installera Azure Identity-biblioteket @azure /identitetspaketet för att autentisera till ett Nyckelvalv.
npm install @azure/identity
Lägg till följande kodexempel i en fil med namnet index.js
. Ersätt Your-Key-Secret-Name
och Your-Endpoint-Secret-Name
med de hemliga namn som du angav i nyckelvalvet.
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);
});
Använd följande kommando för att köra programmet. Dina nyckel- och slutpunktshemligheter hämtas från nyckelvalvet.
node index.js
Om du använder en resurs för flera tjänster eller en språkresurs kan du uppdatera ditt program genom att följa de här stegen för att skicka ett exempel på ett anrop för namngiven entitetsigenkänning genom att hämta en nyckel och en slutpunkt från nyckelvalvet.
Installera Azure AI-tjänsten för språkbiblioteket @azure /ai-text-analytics för att skicka API-begäranden till språktjänsten.
npm install @azure/ai-text-analytics@5.1.0
Lägg till följande kod i programmet:
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}`); }); });
Kör programmet.
- Se Vad är Azure AI-tjänster för tillgängliga funktioner som du kan utveckla tillsammans med Azure Key Vault.
- Mer information om säker programutveckling finns i: