Desenvolver aplicativos de serviços de IA do Azure com o Azure Key Vault
Saiba como desenvolver aplicativos de serviços de IA do Azure com segurança usando o Azure Key Vault.
O Key Vault reduz o risco de que segredos possam ser vazados acidentalmente, porque você evita armazenar informações de segurança em seu aplicativo.
Pré-requisitos
- Uma subscrição válida do Azure - Crie uma gratuitamente
- Visual Studio IDE
- Um Cofre da Chave do Azure
- Um recurso de serviços de IA do Azure
- Uma assinatura válida do Azure - Crie uma gratuitamente.
- Python 3.7 ou posterior
- CLI do Azure ou Azure PowerShell
- Um Cofre da Chave do Azure
- Um recurso de serviços de IA do Azure
- Uma assinatura válida do Azure - Crie uma gratuitamente.
- Java Development Kit (JDK) versão 8 ou superior
- CLI do Azure ou Azure PowerShell
- Um Cofre da Chave do Azure
- Um recurso de serviços de IA do Azure
- Uma assinatura válida do Azure - Crie uma gratuitamente.
- Atual Node.js v14 LTS ou posterior
- CLI do Azure ou Azure PowerShell
- Um Cofre da Chave do Azure
- Um recurso de serviços de IA do Azure
Nota
Reveja a documentação e os artigos de início rápido do serviço de IA do Azure que está a utilizar para compreender sobre:
- As credenciais e outras informações necessárias para enviar chamadas de API.
- Os pacotes e o código que você precisará para executar seu aplicativo.
Obtenha suas credenciais do recurso de serviços de IA do Azure
Antes de adicionar suas informações de credenciais ao cofre de chaves do Azure, você precisa recuperá-las do seu recurso de serviços de IA do Azure. Por exemplo, se o seu serviço precisar de uma chave e um ponto de extremidade, você os encontrará usando as seguintes etapas:
Navegue até seu recurso do Azure no portal do Azure.
No menu dobrável à esquerda, selecione Teclas e Ponto de extremidade.
Alguns serviços de IA do Azure exigem informações diferentes para autenticar chamadas de API, como uma chave e uma região. Certifique-se de recuperar essas informações antes de continuar.
Adicione as suas credenciais ao cofre de chaves
Para que seu aplicativo recupere e use suas credenciais para autenticar chamadas de API, você precisará adicioná-las aos segredos do cofre de chaves.
Repita essas etapas para gerar um segredo para cada credencial de recurso necessária. Por exemplo, uma chave e um ponto de extremidade. Esses nomes secretos serão usados posteriormente para autenticar seu aplicativo.
Abra uma nova guia ou janela do navegador. Navegue até o cofre da chave no portal do Azure.
No menu dobrável à esquerda, selecione Segredos de objetos>.
Selecione Gerar/Importar.
Na tela Criar um segredo, insira os seguintes valores:
Nome Valor Opções de carregamento Manual Nome Um nome secreto para sua chave ou ponto de extremidade. Por exemplo: "CognitiveServicesKey" ou "CognitiveServicesEndpoint" Value Sua chave de recurso ou ponto de extremidade dos serviços de IA do Azure. Mais tarde, a sua aplicação utilizará o "Nome" secreto para aceder com segurança ao "Valor".
Deixe os outros valores como padrão. Selecione Criar.
Gorjeta
Lembre-se dos nomes que você definiu para seus segredos, pois você os usará mais tarde em seu aplicativo.
Agora você deve ter nomeado segredos para suas informações de recurso.
Criar uma variável de ambiente para o nome do cofre de chaves
Recomendamos a criação de uma variável de ambiente para o nome do seu cofre de chaves do Azure. Seu aplicativo lerá essa variável de ambiente em tempo de execução para recuperar suas informações de chave e ponto final.
Para definir variáveis de ambiente, use um dos seguintes comandos. KEY_VAULT_NAME
com o nome da variável de ambiente, e substitua Your-Key-Vault-Name
pelo nome do seu cofre de chaves, que será armazenado na variável de ambiente.
Crie e atribua variável de ambiente persistente, dado o valor.
setx KEY_VAULT_NAME "Your-Key-Vault-Name"
Em uma nova instância do prompt de comando, leia a variável de ambiente.
echo %KEY_VAULT_NAME%
Autenticar no Azure usando o Visual Studio
Os desenvolvedores que usam o Visual Studio 2017 ou posterior podem autenticar uma conta do Microsoft Entra por meio do Visual Studio. Isso permite que você acesse segredos em seu cofre de chaves entrando em sua assinatura do Azure de dentro do IDE.
Para autenticar no Visual Studio, selecione Ferramentas no menu de navegação superior e selecione Opções. Navegue até a opção Autenticação de Serviço do Azure para entrar com seu nome de usuário e senha.
Autenticar usando a linha de comando
Antes de conceder acesso ao cofre de chaves, você deve autenticar com seu nome de usuário e senha do Microsoft Entra.
Para autenticar com a CLI do Azure, execute o az login
comando.
az login
Em sistemas com um navegador da Web padrão, a CLI do Azure iniciará o navegador para autenticação. Para sistemas sem um navegador da Web padrão, o az login
comando usará o fluxo de autenticação do código do dispositivo. Você também pode forçar a CLI do Azure a usar o fluxo de código do dispositivo em vez de iniciar um navegador especificando o --use-device-code
argumento.
Se tiver várias subscrições, certifique-se de que seleciona a subscrição do Azure que contém o seu cofre de chaves.
Conceder acesso ao seu cofre de chaves
Crie uma política de acesso para o cofre de chaves que conceda permissões secretas à sua conta de utilizador.
Para definir a política de acesso, execute o comando az keyvault set-policy . Substitua Your-Key-Vault-Name
pelo nome do cofre de chaves. Substitua user@domain.com
pelo seu nome de usuário do Microsoft Entra.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Criar um novo aplicativo C#
Com o IDE do Visual Studio, crie uma nova aplicação de consola .NET Core. Isso criará um projeto "Hello World" com um único arquivo de origem C#: program.cs
.
Instale as seguintes bibliotecas de cliente clicando com o botão direito do mouse na solução no Gerenciador de Soluções e selecionando Gerenciar Pacotes NuGet. No gerenciador de pacotes aberto, selecione Procurar e procure as seguintes bibliotecas e selecione Instalar para cada uma:
Azure.Security.KeyVault.Secrets
Azure.Identity
Importar o código de exemplo
Copie o código de exemplo a seguir para o program.cs
arquivo. Substitua Your-Key-Secret-Name
e Your-Endpoint-Secret-Name
pelos nomes secretos que definiu no cofre de chaves.
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");
}
}
}
Executar a aplicação
Execute o aplicativo selecionando o botão Depurar na parte superior do Visual Studio. Os segredos da sua chave e do ponto final serão recuperados do seu cofre de chaves.
Enviar uma chamada de serviço de idioma de teste (opcional)
Se você estiver usando um recurso multisserviço ou um recurso de idioma, poderá atualizar seu aplicativo seguindo estas etapas para enviar um exemplo de chamada de Reconhecimento de Entidade Nomeada recuperando uma chave e um ponto de extremidade do seu cofre de chaves.
Instale a biblioteca clicando com o
Azure.AI.TextAnalytics
botão direito do mouse na solução no Gerenciador de Soluções e selecionando Gerenciar Pacotes NuGet. No gerenciador de pacotes aberto, selecione Procurar e procure as seguintes bibliotecas e selecione Instalar para cada uma:Adicione a seguinte diretiva à parte superior do ficheiro
program.cs
.using Azure.AI.TextAnalytics;
Adicione o exemplo de código a seguir ao seu aplicativo.
// 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"); } }
Adicione o seguinte código para chamar
EntityRecognitionExample()
a partir do seu método principal, com os seus valores de chave e ponto final.EntityRecognitionExample(keySecret.Value.Value, endpointSecret.Value.Value);
Execute a aplicação.
Autenticar a sua aplicação
Antes de conceder acesso ao cofre de chaves, você deve autenticar com seu nome de usuário e senha do Microsoft Entra.
Para autenticar com a CLI do Azure, execute o az login
comando.
az login
Em sistemas com um navegador da Web padrão, a CLI do Azure iniciará o navegador para autenticação. Para sistemas sem um navegador da Web padrão, o az login
comando usará o fluxo de autenticação do código do dispositivo. Você também pode forçar a CLI do Azure a usar o fluxo de código do dispositivo em vez de iniciar um navegador especificando o --use-device-code
argumento.
Se tiver várias subscrições, certifique-se de que seleciona a subscrição do Azure que contém o seu cofre de chaves.
Conceder acesso ao seu cofre de chaves
Crie uma política de acesso para o cofre de chaves que conceda permissões secretas à sua conta de utilizador.
Para definir a política de acesso, execute o comando az keyvault set-policy . Substitua Your-Key-Vault-Name
pelo nome do cofre de chaves. Substitua user@domain.com
pelo seu nome de usuário do Microsoft Entra.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Criar uma aplicação Python
Crie uma nova pasta com o nome keyVaultExample
. Em seguida, use seu editor de código preferido para criar um arquivo nomeado program.py
dentro da pasta recém-criada.
Instalar pacotes de serviço Key Vault e Language
Em um terminal ou prompt de comando, navegue até a pasta do projeto e instale a biblioteca de identidades do Microsoft Entra:
pip install azure-identity
Instale a biblioteca de segredos do Key Vault:
pip install azure-keyvault-secrets
Importar o código de exemplo
Adicione o exemplo de código a seguir ao arquivo chamado program.py
. Substitua Your-Key-Secret-Name
e Your-Endpoint-Secret-Name
pelos nomes secretos que definiu no cofre de chaves.
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}.");
Executar a aplicação
Use o seguinte comando para executar o aplicativo. Os segredos da sua chave e do ponto final serão recuperados do seu cofre de chaves.
python ./program.py
Enviar uma chamada de serviço de idioma de teste (opcional)
Se você estiver usando um recurso multisserviço ou um recurso de idioma, poderá atualizar seu aplicativo seguindo estas etapas para enviar um exemplo de chamada de Reconhecimento de Entidade Nomeada recuperando uma chave e um ponto de extremidade do seu cofre de chaves.
Instale a biblioteca do serviço de idiomas:
pip install azure-ai-textanalytics==5.1.0
Adicione o seguinte código ao seu aplicativo
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))
Execute a aplicação.
Autenticar a sua aplicação
Antes de conceder acesso ao cofre de chaves, você deve autenticar com seu nome de usuário e senha do Microsoft Entra.
Para autenticar com a CLI do Azure, execute o az login
comando.
az login
Em sistemas com um navegador da Web padrão, a CLI do Azure iniciará o navegador para autenticação. Para sistemas sem um navegador da Web padrão, o az login
comando usará o fluxo de autenticação do código do dispositivo. Você também pode forçar a CLI do Azure a usar o fluxo de código do dispositivo em vez de iniciar um navegador especificando o --use-device-code
argumento.
Se tiver várias subscrições, certifique-se de que seleciona a subscrição do Azure que contém o seu cofre de chaves.
Conceder acesso ao seu cofre de chaves
Crie uma política de acesso para o cofre de chaves que conceda permissões secretas à sua conta de utilizador.
Para definir a política de acesso, execute o comando az keyvault set-policy . Substitua Your-Key-Vault-Name
pelo nome do cofre de chaves. Substitua user@domain.com
pelo seu nome de usuário do Microsoft Entra.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Criar uma aplicação java
No seu IDE preferido, crie um novo projeto de aplicativo de console Java e crie uma classe chamada Example
.
Adicionar dependências
Em seu projeto, adicione as seguintes dependências ao seu pom.xml
arquivo.
<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>
Importar o código de exemplo
Copie o código a seguir em um arquivo chamado Example.java
. Substitua Your-Key-Secret-Name
e Your-Endpoint-Secret-Name
pelos nomes secretos que definiu no cofre de chaves.
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)
}
}
Enviar uma chamada de serviço de idioma de teste (opcional)
Se você estiver usando um recurso multisserviço ou um recurso de idioma, poderá atualizar seu aplicativo seguindo estas etapas para enviar um exemplo de chamada de Reconhecimento de Entidade Nomeada recuperando uma chave e um ponto de extremidade do seu cofre de chaves.
Em seu aplicativo, adicione a seguinte dependência:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-textanalytics</artifactId> <version>5.1.12</version> </dependency>
Adicione as seguintes instruções de importação ao seu arquivo.
import com.azure.ai.textanalytics.models.*; import com.azure.ai.textanalytics.TextAnalyticsClientBuilder; import com.azure.ai.textanalytics.TextAnalyticsClient;
Adicione o seguinte código ao
main()
método em seu aplicativo: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()); }
Executar a aplicação
Autenticar a sua aplicação
Antes de conceder acesso ao cofre de chaves, você deve autenticar com seu nome de usuário e senha do Microsoft Entra.
Para autenticar com a CLI do Azure, execute o az login
comando.
az login
Em sistemas com um navegador da Web padrão, a CLI do Azure iniciará o navegador para autenticação. Para sistemas sem um navegador da Web padrão, o az login
comando usará o fluxo de autenticação do código do dispositivo. Você também pode forçar a CLI do Azure a usar o fluxo de código do dispositivo em vez de iniciar um navegador especificando o --use-device-code
argumento.
Se tiver várias subscrições, certifique-se de que seleciona a subscrição do Azure que contém o seu cofre de chaves.
Conceder acesso ao seu cofre de chaves
Crie uma política de acesso para o cofre de chaves que conceda permissões secretas à sua conta de utilizador.
Para definir a política de acesso, execute o comando az keyvault set-policy . Substitua Your-Key-Vault-Name
pelo nome do cofre de chaves. Substitua user@domain.com
pelo seu nome de usuário do Microsoft Entra.
az keyvault set-policy --name Your-Key-Vault-Name --upn user@domain.com --secret-permissions delete get list set purge
Criar uma nova aplicação Node.js
Crie um aplicativo Node.js que use seu cofre de chaves.
Em um terminal, crie uma pasta chamada key-vault-js-example
e altere para essa pasta:
mkdir key-vault-js-example && cd key-vault-js-example
Inicialize o projeto Node.js:
npm init -y
Instalar pacotes de serviço Key Vault e Language
Usando o terminal, instale a biblioteca de segredos do Azure Key Vault, @azure/keyvault-secrets para Node.js.
npm install @azure/keyvault-secrets
Instale a biblioteca de Identidades do Azure, @azure/pacote de identidade para autenticar em um Cofre de Chaves.
npm install @azure/identity
Importar o exemplo de código
Adicione o exemplo de código a seguir a um arquivo chamado index.js
. Substitua Your-Key-Secret-Name
e Your-Endpoint-Secret-Name
pelos nomes secretos que definiu no cofre de chaves.
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);
});
Executar o exemplo de aplicação
Use o seguinte comando para executar o aplicativo. Os segredos da sua chave e do ponto final serão recuperados do seu cofre de chaves.
node index.js
Enviar uma chamada de serviço de idioma de teste (opcional)
Se você estiver usando um recurso multisserviço ou um recurso de idioma, poderá atualizar seu aplicativo seguindo estas etapas para enviar um exemplo de chamada de Reconhecimento de Entidade Nomeada recuperando uma chave e um ponto de extremidade do seu cofre de chaves.
Instale o serviço Azure AI para biblioteca de idiomas, @azure/ai-text-analytics para enviar solicitações de API para o serviço de idiomas.
npm install @azure/ai-text-analytics@5.1.0
Adicione o seguinte código ao seu aplicativo:
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}`); }); });
Execute a aplicação.
Próximos passos
- Consulte O que são os serviços de IA do Azure para obter os recursos disponíveis que você pode desenvolver junto com o Azure Key Vault.
- Para obter informações adicionais sobre o desenvolvimento seguro de aplicativos, consulte: