Zelfstudie: Azure Key Vault gebruiken met een virtuele machine in .NET
Azure Key Vault helpt u bij het beveiligen van geheimen zoals API-sleutels, de databaseverbindingsreeksen die nodig zijn voor toegang tot uw toepassingen, services en IT-resources.
In deze zelfstudie leert u hoe u ervoor zorgt dat een consoletoepassing informatie ophaalt uit Azure Key Vault. De toepassing gebruikt de beheerde identiteit van de virtuele machine voor het verifiëren van Key Vault.
In deze zelfstudie leert u het volgende:
- Maak een resourcegroep.
- Een sleutelkluis maken.
- Voeg een geheim toe aan de sleutelkluis.
- Een geheim ophalen uit de sleutelkluis.
- Een virtuele Azure-machine maken.
- Een beheerde identiteit inschakelen voor de virtuele machine.
- Wijs machtigingen toe aan de VM-identiteit.
Lees voordat u verdergaat eerst Basisconcepten van Key Vault.
Als u nog geen Azure-abonnement hebt, maakt u een gratis account.
Vereisten
Voor Windows, Mac en Linux:
Resources maken en machtigingen toewijzen
Voordat u begint met het coderen, moet u enkele resources maken, een geheim in uw sleutelkluis plaatsen en machtigingen toewijzen.
Aanmelden bij Azure
Als u zich wilt aanmelden bij Azure met behulp van de volgende opdracht:
az login
Een resourcegroep en sleutelkluis maken
In deze quickstart wordt een vooraf gemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken met behulp van de stappen in de quickstart voor Azure CLI, de quickstart voor Azure PowerShell of de quickstart voor de Azure-portal.
U kunt deze Azure CLI- of Azure PowerShell-opdrachten ook uitvoeren.
Belangrijk
Elke sleutelkluis moet een unieke naam hebben. Vervang <uw unieke sleutelkluisnaam> door de naam van uw sleutelkluis in de volgende voorbeelden.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Vul uw sleutelkluis in met een geheim
We gaan een geheim maken met de naam mySecret en de waarde Success!. Een geheim kan een wachtwoord zijn, een SQL-verbindingsreeks of andere gegevens die u zowel veilig als beschikbaar wilt houden voor de toepassing.
Gebruik de volgende opdracht om een geheim toe te voegen aan uw zojuist gemaakte sleutelkluis:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Maak een virtuele machine
Gebruik een van de volgende manieren om een virtuele Windows of Linux-machine te maken:
Windows | Linux |
---|---|
Azure-CLI | Azure-CLI |
Powershell | Powershell |
Azure-portal | Azure-portal |
Een identiteit toewijzen aan de virtuele machine
Maak een door het systeem toegewezen identiteit voor de virtuele machine met het volgende voorbeeld:
az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>
Bekijk de door het systeem toegewezen identiteit die wordt weergegeven in de volgende code. De uitvoer van de vorige opdracht ziet er als volgt uit:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Machtigingen toewijzen aan de VM-identiteit
Als u uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure CLI-opdracht az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Vervang , <subscription-id>
<resource-group-name>
en <your-unique-keyvault-name>
door <app-id>
uw werkelijke waarden. <app-id>
is de toepassings-id (client) van uw geregistreerde toepassing in Microsoft Entra.
Aanmelden bij de virtuele machine
Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Verbinding maken met en aanmelden bij een virtuele Azure-machine met Windows of Verbinding maken en aanmelden bij de virtuele Azure-machine die Linux uitvoert.
De console-app instellen
Maak een console-app en installeer de vereiste pakketten met de opdracht dotnet
.
.NET Core installeren
Als u .NET Core wilt installeren, gaat u naar de pagina .NET-downloads.
Een .NET-voorbeeld-app maken en uitvoeren
Open een opdrachtprompt.
U kunt 'Hallo wereld' afdrukken naar de console door de volgende opdrachten uit te voeren:
dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run
Het pakket installeren
Installeer vanuit het consolevenster de Azure Key Vault Secrets-clientbibliotheek voor .NET:
dotnet add package Azure.Security.KeyVault.Secrets
Voor deze quickstart moet u het volgende identiteitspakket installeren om u te verifiëren bij Azure Key Vault:
dotnet add package Azure.Identity
De console-app bewerken
Open het bestand Program.cs en voeg deze pakketten toe:
using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Voeg deze regels toe, waarbij u de URI bijwerkt volgens de vaultUri
van uw sleutelkluis. De onderstaande code maakt gebruik van 'DefaultAzureCredential()' voor verificatie naar de sleutelkluis, die een token van de beheerde identiteit van de toepassing gebruikt voor verificatie. Er wordt ook exponentieel uitstel gebruikt voor nieuwe pogingen wanneer de sleutelkluis wordt vertraagd.
class Program
{
static void Main(string[] args)
{
string secretName = "mySecret";
string keyVaultName = "<your-key-vault-name>";
var kvUri = "https://<your-key-vault-name>.vault.azure.net";
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);
Console.Write("Input the value of your secret > ");
string secretValue = Console.ReadLine();
Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");
client.SetSecret(secretName, secretValue);
Console.WriteLine(" done.");
Console.WriteLine("Forgetting your secret.");
secretValue = "";
Console.WriteLine("Your secret is '" + secretValue + "'.");
Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");
KeyVaultSecret secret = client.GetSecret(secretName);
Console.WriteLine("Your secret is '" + secret.Value + "'.");
Console.Write("Deleting your secret from " + keyVaultName + " ...");
client.StartDeleteSecret(secretName);
System.Threading.Thread.Sleep(5000);
Console.WriteLine(" done.");
}
}
Resources opschonen
Als ze niet meer nodig zijn, verwijdert u de virtuele machine en de sleutelkluis.