Rychlý start: Klientská knihovna tajných klíčů služby Azure Key Vault pro .NET
Začínáme s klientskou knihovnou tajných klíčů služby Azure Key Vault pro .NET Azure Key Vault je cloudová služba, která poskytuje zabezpečené úložiště tajných kódů. Můžete bezpečně ukládat klíče, hesla, certifikáty a další tajné klíče. Trezory klíčů Azure můžete vytvářet a spravovat přes web Azure Portal. V tomto rychlém startu se naučíte vytvářet, načítat a odstraňovat tajné kódy z trezoru klíčů Azure pomocí klientské knihovny .NET.
Prostředky klientské knihovny služby Key Vault:
Referenční dokumentace k | rozhraní API – Balíček zdrojového kódu | knihovny (NuGet)
Další informace o službě Key Vault a tajných kódech najdete tady:
- Přehled služby Key Vault
- Přehled tajných kódů
Požadavky
- Předplatné Azure – vytvořte si ho zdarma
- Sada .NET 6 SDK nebo novější
- Azure CLI nebo Azure PowerShell
- Key Vault – můžete ho vytvořit pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu.
V tomto rychlém startu se používá dotnet
Azure CLI nebo Azure PowerShell.
Nastavení
V tomto rychlém startu se k ověření uživatele ve službách Azure používá knihovna identit Azure s Azure CLI. Vývojáři můžou také k ověřování volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.
Přihlášení k Azure
Spusťte příkaz
az login
.az login
Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.
V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.
Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.
Udělení přístupu k trezoru klíčů
Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k hlavnímu názvu uživatele (UPN) pomocí příkazu Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Nahraďte <upn>, <subscription-id>, <resource-group-name> a <your-unique-keyvault-name> skutečnými hodnotami. Hlavní název uživatele (UPN) bude obvykle ve formátu e-mailové adresy (např username@domain.com. ).
Vytvoření nové konzolové aplikace .NET
Spuštěním následujícího příkazu v příkazovém prostředí vytvořte projekt s názvem
key-vault-console-app
:dotnet new console --name key-vault-console-app
Přejděte do nově vytvořeného adresáře key-vault-console-app a spuštěním následujícího příkazu sestavte projekt:
dotnet build
Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.
Build succeeded. 0 Warning(s) 0 Error(s)
Instalace balíčků
Z příkazového prostředí nainstalujte klientskou knihovnu tajných klíčů služby Azure Key Vault pro .NET:
dotnet add package Azure.Security.KeyVault.Secrets
Pro účely tohoto rychlého startu budete také muset nainstalovat klientskou knihovnu Azure Identity:
dotnet add package Azure.Identity
Nastavení proměnných prostředí
Tato aplikace používá název trezoru klíčů jako proměnnou prostředí s názvem KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS nebo Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objektový model
Klientská knihovna tajných kódů služby Azure Key Vault pro .NET umožňuje spravovat tajné kódy. Část Příklady kódu ukazuje, jak vytvořit klienta, nastavit tajný klíč, načíst tajný klíč a odstranit tajný klíč.
Příklady kódu
Přidání direktiv
Na začátek Program.cs přidejte následující direktivy:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Ověření a vytvoření klienta
Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití defaultAzureCredential třídy poskytované klientskou knihovnou Azure Identity je doporučený postup pro implementaci připojení bez hesla ke službám Azure ve vašem kódu. DefaultAzureCredential
podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.
V tomto rychlém startu DefaultAzureCredential
se ověří v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential
kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.
V tomto příkladu se název trezoru klíčů rozbalí na identifikátor URI trezoru klíčů ve formátu https://<your-key-vault-name>.vault.azure.net
. Další informace o ověřování v trezoru klíčů najdete v příručce pro vývojáře.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Uložení tajného kódu
Teď, když je konzolová aplikace ověřená, přidejte do trezoru klíčů tajný klíč. Pro tuto úlohu použijte metodu SetSecretAsync .
První parametr metody přijímá název tajného kódu. V této ukázce proměnná secretName
ukládá řetězec mySecret.
Druhý parametr metody přijímá hodnotu tajného kódu. V této ukázce je tajný kód vstupní uživatelem přes příkazový řádek a uložen v proměnné secretValue
.
await client.SetSecretAsync(secretName, secretValue);
Poznámka:
Pokud název tajného kódu existuje, kód vytvoří novou verzi tohoto tajného kódu.
Načtení tajného kódu
Nyní můžete načíst dříve nastavenou hodnotu pomocí metody GetSecretAsync .
var secret = await client.GetSecretAsync(secretName);
Váš tajný kód je nyní uložen jako secret.Value
.
Odstranění tajného kódu
Nakonec odstraníme tajný klíč z trezoru klíčů pomocí metod StartDeleteSecretAsync a PurgeDeletedSecretAsync .
var operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();
await client.PurgeDeletedSecretAsync(secretName);
Ukázkový kód
Upravte konzolovou aplikaci .NET tak, aby pracovala se službou Key Vault, a to provedením následujících kroků:
Nahraďte kód v Program.cs následujícím kódem:
using System; using System.Threading.Tasks; using Azure.Identity; using Azure.Security.KeyVault.Secrets; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string secretName = "mySecret"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write("Input the value of your secret > "); var secretValue = Console.ReadLine(); Console.Write($"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ..."); await client.SetSecretAsync(secretName, secretValue); Console.WriteLine(" done."); Console.WriteLine("Forgetting your secret."); secretValue = string.Empty; Console.WriteLine($"Your secret is '{secretValue}'."); Console.WriteLine($"Retrieving your secret from {keyVaultName}."); var secret = await client.GetSecretAsync(secretName); Console.WriteLine($"Your secret is '{secret.Value.Value}'."); Console.Write($"Deleting your secret from {keyVaultName} ..."); DeleteSecretOperation operation = await client.StartDeleteSecretAsync(secretName); // You only need to wait for completion if you want to purge or recover the secret. await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your secret from {keyVaultName} ..."); await client.PurgeDeletedSecretAsync(secretName); Console.WriteLine(" done."); } } }
Testování a ověření
Spuštěním následujícího příkazu spusťte aplikaci.
dotnet run
Po zobrazení výzvy zadejte hodnotu tajného kódu. Například mySecretPassword.
Zobrazí se varianta následujícího výstupu:
Input the value of your secret > mySecretPassword
Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <your-unique-keyvault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <your-unique-keyvault-name> ... done.
Purging your secret from <your-unique-keyvault-name> ... done.
Další kroky
Další informace o službě Key Vault a její integraci s vašimi aplikacemi najdete v následujících článcích:
- Přehled služby Azure Key Vault
- Kurz zobrazení služby Access Key Vault z aplikace služby App Service
- Kurz pro přístup ke službě Key Vault z virtuálního počítače
- Prohlédni si průvodce vývojářem ve službě Azure Key Vault.
- Přehled zabezpečení služby Key Vault