Kurz: Použití služby Azure Key Vault s virtuálním počítačem v .NET
Azure Key Vault pomáhá chránit tajné kódy, jako jsou klíče rozhraní API, databáze připojovací řetězec, které potřebujete pro přístup k vašim aplikacím, službám a prostředkům IT.
V tomto kurzu se dozvíte, jak získat konzolovou aplikaci pro čtení informací ze služby Azure Key Vault. Aplikace použije spravovanou identitu virtuálního počítače k ověření ve službě Key Vault.
V tomto kurzu získáte informace o následujících postupech:
- Vytvořte skupinu prostředků.
- Vytvořte trezor klíčů.
- Přidejte do trezoru klíčů tajný klíč.
- Načtení tajného klíče z trezoru klíčů
- Vytvořte virtuální počítač Azure.
- Povolení spravované identity pro virtuální počítač
- Přiřaďte oprávnění identitě virtuálního počítače.
Než začnete, přečtěte si základní koncepty služby Key Vault.
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet.
Požadavky
Pro Windows, Mac a Linux:
Vytváření prostředků a přiřazování oprávnění
Než začnete psát kód, musíte vytvořit nějaké prostředky, vložit tajný kód do trezoru klíčů a přiřadit oprávnění.
Přihlášení k Azure
Přihlášení k Azure pomocí následujícího příkazu:
az login
Vytvoření skupiny prostředků a trezoru klíčů
V tomto rychlém startu se používá předem vytvořený trezor klíčů Azure. Trezor klíčů můžete vytvořit pomocí kroků v rychlém startu Azure CLI, rychlém startu Azure PowerShellu nebo rychlém startu webu Azure Portal.
Alternativně můžete spustit tyto příkazy Azure CLI nebo Azure PowerShellu.
Důležité
Každý trezor klíčů musí mít jedinečný název. Nahraďte <název-unique-keyvault-name> názvem vašeho trezoru klíčů v následujících příkladech.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Naplnění trezoru klíčů tajným kódem
Pojďme vytvořit tajný kód s názvem mySecret s hodnotou Success!. Tajným kódem může být heslo, připojovací řetězec SQL nebo jakékoli jiné informace, které potřebujete k zabezpečení a dostupnosti aplikace.
K přidání tajného kódu do nově vytvořeného trezoru klíčů použijte následující příkaz:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Vytvoření virtuálního počítače
Pomocí jedné z následujících metod vytvořte virtuální počítač s Windows nebo Linuxem:
Windows | Linux |
---|---|
Azure CLI | Azure CLI |
PowerShell | PowerShell |
Azure Portal | Azure Portal |
Přiřazení identity k virtuálnímu počítači
Vytvořte identitu přiřazenou systémem pro virtuální počítač pomocí následujícího příkladu:
az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>
Poznamenejte si identitu přiřazenou systémem, která se zobrazí v následujícím kódu. Výstup předchozího příkazu by byl:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Přiřazení oprávnění identitě virtuálního počítače
Pokud chcete aplikaci udělit oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli pomocí příkazu Azure CLI 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>"
Nahraďte <app-id>
hodnoty <resource-group-name>
<subscription-id>
a <your-unique-keyvault-name>
skutečnými hodnotami. <app-id>
je ID aplikace (klienta) vaší registrované aplikace v Microsoft Entra.
Přihlášení k virtuálnímu počítači
Pokud se chcete přihlásit k virtuálnímu počítači, postupujte podle pokynů v části Připojení a přihlaste se k virtuálnímu počítači Azure s Windows nebo se přihlaste k virtuálnímu počítači Azure s Linuxem.
Nastavení konzolové aplikace
Pomocí příkazu vytvořte konzolovou aplikaci a nainstalujte požadované balíčky dotnet
.
Nainstalovat .NET Core.
Pokud chcete nainstalovat .NET Core, přejděte na stránku pro stahování .NET.
Vytvoření a spuštění ukázkové aplikace .NET
Otevřete příkazový řádek.
"Hello World" můžete do konzoly vytisknout spuštěním následujících příkazů:
dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run
Nainstalujte balíček .
V okně konzoly nainstalujte klientskou knihovnu tajných kódů služby Azure Key Vault pro .NET:
dotnet add package Azure.Security.KeyVault.Secrets
Pro účely tohoto rychlého startu budete muset nainstalovat následující balíček identity pro ověření ve službě Azure Key Vault:
dotnet add package Azure.Identity
Úprava konzolové aplikace
Otevřete soubor Program.cs a přidejte tyto balíčky:
using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Přidejte tyto řádky a aktualizujte identifikátor URI tak, aby odrážel vaultUri
váš trezor klíčů. Následující kód používá pro ověřování k trezoru klíčů defaultAzureCredential(), který k ověření používá token ze spravované identity aplikace. V případě omezování trezoru klíčů se také používá exponenciální zpochybnění opakování.
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.");
}
}
Vyčištění prostředků
Pokud už je nepotřebujete, odstraňte virtuální počítač a trezor klíčů.