Självstudie: Använda Azure Key Vault med en virtuell dator i .NET
Azure Key Vault hjälper dig att skydda hemligheter som API-nycklar, databasen niska veze du behöver för att komma åt dina program, tjänster och IT-resurser.
I den här självstudien får du lära dig hur du hämtar ett konsolprogram för att läsa information från Azure Key Vault. Programmet använder den virtuella datorns hanterade identitet för att autentisera till Key Vault.
Självstudien visar hur du:
- Skapa en resursgrupp.
- Skapa ett nyckelvalv.
- Lägg till en hemlighet i nyckelvalvet.
- Hämta en hemlighet från nyckelvalvet.
- Skapa en virtuell dator i Azure.
- Aktivera en hanterad identitet för den virtuella datorn.
- Tilldela behörigheter till den virtuella datorns identitet.
Läs grundläggande begrepp för Key Vault innan du börjar.
Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
Förutsättningar
För Windows, Mac och Linux:
Skapa resurser och tilldela behörigheter
Innan du börjar koda måste du skapa några resurser, placera en hemlighet i nyckelvalvet och tilldela behörigheter.
Logga in på Azure
Logga in på Azure med följande kommando:
az login
Skapa en resursgrupp och ett nyckelvalv
Den här snabbstarten använder ett förskapat Azure-nyckelvalv. Du kan skapa ett nyckelvalv genom att följa stegen i snabbstarten för Azure CLI, Azure PowerShell-snabbstarten eller azure-portalens snabbstart.
Du kan också köra dessa Azure CLI- eller Azure PowerShell-kommandon.
Viktigt!
Varje nyckelvalv måste ha ett unikt namn. Ersätt <ditt unika keyvault-name> med namnet på ditt nyckelvalv i följande exempel.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Fyll i ditt nyckelvalv med en hemlighet
Nu ska vi skapa en hemlighet med namnet mySecret med värdet Success!. En hemlighet kan vara ett lösenord, en SQL-niska veze eller annan information som du behöver för att hålla både säker och tillgänglig för ditt program.
Om du vill lägga till en hemlighet i ditt nyligen skapade nyckelvalv använder du följande kommando:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Skapa en virtuell dator
Skapa en virtuell Windows- eller Linux-dator med någon av följande metoder:
Windows | Linux |
---|---|
Azure CLI | Azure CLI |
PowerShell | PowerShell |
Azure-portalen | Azure-portalen |
Tilldela en identitet till den virtuella datorn
Skapa en systemtilldelad identitet för den virtuella datorn med följande exempel:
az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>
Observera den systemtilldelade identitet som visas i följande kod. Utdata från föregående kommando skulle vara:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Tilldela behörigheter till den virtuella datorns identitet
Om du vill ge ditt program behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC) tilldelar du en roll med hjälp av Azure CLI-kommandot 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>"
Ersätt <app-id>
, <subscription-id>
och <resource-group-name>
<your-unique-keyvault-name>
med dina faktiska värden. <app-id>
är program-ID:t (klient) för ditt registrerade program i Microsoft Entra.
Logga in på den virtuella datorn
Om du vill logga in på den virtuella datorn följer du anvisningarna i Anslut och loggar in på en virtuell Azure Windows-dator eller Anslut och loggar in på en virtuell Azure Linux-dator.
Konfigurera konsolappen
Skapa en konsolapp och installera de paket som krävs med kommandot dotnet
.
Installera .NET Core
Om du vill installera .NET Core går du till nedladdningssidan för .NET.
Skapa och köra en .NET-exempelapp
Öppna kommandotolken.
Du kan skriva ut "Hello World" till konsolen genom att köra följande kommandon:
dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run
Installera -paketet
Från konsolfönstret installerar du Azure Key Vault Secrets-klientbiblioteket för .NET:
dotnet add package Azure.Security.KeyVault.Secrets
För den här snabbstarten måste du installera följande identitetspaket för att autentisera till Azure Key Vault:
dotnet add package Azure.Identity
Redigera konsolappen
Öppna filen Program.cs och lägg till följande paket:
using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Lägg till dessa rader och uppdatera URI:n för att återspegla vaultUri
nyckelvalvets. Koden nedan använder "DefaultAzureCredential()" för autentisering till nyckelvalv, som använder token från programhanterad identitet för att autentisera. Den använder också exponentiell backoff för återförsök om nyckelvalvet begränsas.
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.");
}
}
Rensa resurser
När de inte längre behövs tar du bort den virtuella datorn och ditt nyckelvalv.