Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Key Vault pomaga chronić tajemnice, takie jak klucze interfejsu API, ciągi połączeń do bazy danych, które są potrzebne do uzyskiwania dostępu do aplikacji, usług i zasobów IT.
Z tego samouczka dowiesz się, jak uzyskać aplikację konsolową, aby odczytywać informacje z usługi Azure Key Vault. Aplikacja będzie używać tożsamości zarządzanej maszyny wirtualnej do uwierzytelniania w usłudze Key Vault.
Ten samouczek przedstawia sposób wykonania następujących czynności:
- Utwórz grupę zasobów.
- Utwórz skrytkę kluczy.
- Dodaj sekret do magazynu kluczy.
- Pobieranie wpisu tajnego z magazynu kluczy.
- Tworzenie maszyny wirtualnej platformy Azure.
- Włączanie tożsamości zarządzanej dla maszyny wirtualnej.
- Przypisz uprawnienia do tożsamości maszyny wirtualnej.
Przed rozpoczęciem zapoznaj się z podstawowymi pojęciami dotyczącymi usługi Key Vault.
Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
Wymagania wstępne
W przypadku systemów Windows, Mac i Linux:
- Usługa Git
- Zestaw SDK platformy .NET Core 3.1 lub nowszy.
- Interfejs wiersza polecenia platformy Azure lub program Azure PowerShell
Tworzenie zasobów i przypisywanie uprawnień
Przed rozpoczęciem kodowania musisz utworzyć niektóre zasoby, umieścić wpis tajny w magazynie kluczy i przypisać uprawnienia.
Zaloguj się do Azure
Aby zalogować się do platformy Azure przy użyciu następującego polecenia:
Utwórz grupę zasobów i magazyn kluczy
Ten szybki start używa wcześniej utworzonego magazynu kluczy Azure. Można utworzyć magazyn kluczy, wykonując kroki opisane w tych szybkich przewodnikach startowych:
- Szybki start korzystania z interfejsu wiersza polecenia platformy Azure
- Szybki start Azure PowerShell
- Szybki start w usłudze Portal Azure
Alternatywnie możesz uruchomić te polecenia interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
Ważne
Każdy magazyn kluczy musi mieć unikalną nazwę. Zamień <your-unique-keyvault-name> na nazwę Twojego magazynu kluczy w poniższych przykładach.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Wypełnij swój magazyn kluczy tajemnicą
Utwórzmy wpis tajny o nazwie mySecret z wartością Success!. Tajna informacja może być hasłem, parametrami połączenia SQL lub innymi danymi, które musisz zarówno zabezpieczyć, jak i zapewnić ich dostępność dla aplikacji.
Aby dodać sekret do nowo utworzonego magazynu kluczy, użyj następującego polecenia:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Tworzenie maszyny wirtualnej
Utwórz maszynę wirtualną z systemem Windows lub Linux przy użyciu jednej z następujących metod:
| Windows | Linux |
|---|---|
| Interfejs wiersza polecenia platformy Azure | Interfejs wiersza polecenia platformy Azure |
| PowerShell | PowerShell |
| Portal Azure | Portal Azure |
Przypisywanie tożsamości do maszyny wirtualnej
Utwórz tożsamość przypisaną przez system dla maszyny wirtualnej przy użyciu następującego przykładu:
az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>
Zanotuj tożsamość przypisaną przez system, która jest wyświetlana w poniższym kodzie. Dane wyjściowe poprzedniego polecenia to:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Przypisywanie uprawnień do tożsamości maszyny wirtualnej
Aby uzyskać uprawnienia do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę do "głównej nazwy użytkownika" (UPN) przy użyciu polecenia az role assignment create platformy Azure CLI.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Zastąp <upn>, <subscription-id>, <resource-group-name> i <your-unique-keyvault-name> swoimi rzeczywistymi wartościami. Twój UPN zazwyczaj będzie w formacie adresu e-mail (np. username@domain.com).
Zaloguj się do maszyny wirtualnej
Aby zalogować się do maszyny wirtualnej, postępuj zgodnie z instrukcjami w Nawiązywanie połączenia i logowanie się do maszyny wirtualnej z systemem Windows platformy Azure lub Nawiązywanie połączenia i logowanie się do maszyny wirtualnej z systemem Linux platformy Azure.
Konfigurowanie aplikacji konsolowej
Utwórz aplikację konsolową i zainstaluj wymagane pakiety przy użyciu dotnet polecenia .
Zainstaluj program .NET Core
Aby zainstalować platformę .NET Core, przejdź do strony pobierania platformy .NET.
Tworzenie i uruchamianie przykładowej aplikacji .NET
Otwórz wiersz polecenia.
Aby wyświetlić "Hello World" w konsoli, uruchom następujące polecenia:
dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run
Instalowanie pakietu
W oknie konsoli zainstaluj bibliotekę klienta Sekrety usługi Azure Key Vault dla platformy .NET.
dotnet add package Azure.Security.KeyVault.Secrets
Aby skorzystać z tego szybkiego startu, należy zainstalować następujący pakiet tożsamości do uwierzytelnienia w Azure Key Vault:
dotnet add package Azure.Identity
Edytowanie aplikacji konsolowej
Otwórz plik Program.cs i dodaj następujące pakiety:
using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Dodaj te wiersze, aktualizując identyfikator URI w celu odzwierciedlenia vaultUri magazynu kluczy. Poniższy kod używa "DefaultAzureCredential()" do uwierzytelniania w usłudze kluczy, wykorzystując token z tożsamości zarządzanej aplikacji do uwierzytelniania. Również stosuje strategię wykładniczego opóźniania przed ponownymi próbami, gdy magazyn kluczy jest ograniczany.
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.");
}
}
Uprzątnij zasoby
Gdy maszyna wirtualna i magazyn kluczy nie będą już potrzebne, usuń je.