Rövid útmutató: Az Azure Key Vault titkos ügyfélkódtára a .NET-hez
Ismerkedés a .NET-hez készült Azure Key Vault titkos ügyfélkódtárával. Az Azure Key Vault egy felhőalapú szolgáltatás, amely biztonságos tárat biztosít a titkos kódokhoz. Biztonságosan tárolhatja kulcsait, jelszavait, tanúsítványait és egyéb titkos adatait. Az Azure-kulcstartók létrehozhatók és kezelhetők az Azure Portal segítségével is. Ebben a rövid útmutatóban megtudhatja, hogyan hozhat létre, kérdezhet le és törölhet titkos kulcsokat egy Azure-kulcstartóból a .NET-ügyfélkódtár használatával
Key Vault ügyfélkódtár erőforrásai:
API-referenciadokumentáció Kódtár forráskódcsomagja | (NuGet) |
További információ a Key Vaultról és a titkos kódokról:
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- .NET 6 SDK vagy újabb
- Azure CLI vagy Azure PowerShell
- Key Vault – létrehozhat egyet az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával
Ez a rövid útmutató az Azure CLI-t vagy az Azure PowerShellt használja dotnet
.
Beállítás
Ez a rövid útmutató az Azure Identity Library és az Azure CLI használatával hitelesíti a felhasználót az Azure Servicesben. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik a hívásaikat. További információ : Az ügyfél hitelesítése az Azure Identity ügyfélkódtárával.
Bejelentkezés az Azure-ba
Futtassa a következő parancsot:
az login
.az login
Ha a parancssori felület meg tudja nyitni az alapértelmezett böngészőt, az meg fogja tenni, és betölt egy Azure-bejelentkezési lapot.
Ellenkező esetben nyisson meg egy böngészőlapot, https://aka.ms/devicelogin és adja meg a terminálban megjelenő engedélyezési kódot.
A böngészőben jelentkezzen be fiókja hitelesítő adataival.
Hozzáférés biztosítása a kulcstartóhoz
Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyeket szerezni a kulcstartóhoz, rendeljen hozzá egy szerepkört a "Felhasználónév" (UPN) szolgáltatáshoz az Az role Assignment Create Azure CLI-paranccsal.
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>"
Cserélje le <a upn>, <subscription-id>, <resource-group-name> és <your-unique-keyvault-name> értékét a tényleges értékekre. Az UPN általában egy e-mail-cím (pl. username@domain.com) formátumban lesz.
Új .NET-konzolalkalmazás létrehozása
A parancshéjban futtassa a következő parancsot egy projekt
key-vault-console-app
létrehozásához:dotnet new console --name key-vault-console-app
Váltson az újonnan létrehozott key-vault-console-app könyvtárra, és futtassa a következő parancsot a projekt létrehozásához:
dotnet build
A buildkimenet nem tartalmazhat figyelmeztetést vagy hibát.
Build succeeded. 0 Warning(s) 0 Error(s)
A csomagok telepítése
A parancshéjból telepítse az Azure Key Vault titkos ügyfélkódtárát a .NET-hez:
dotnet add package Azure.Security.KeyVault.Secrets
Ehhez a rövid útmutatóhoz telepítenie kell az Azure Identity ügyfélkódtárat is:
dotnet add package Azure.Identity
Környezeti változók beállítása
Ez az alkalmazás a Key Vault nevét használja környezeti változóként.KEY_VAULT_NAME
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS vagy Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objektummodell
A .NET-hez készült Azure Key Vault titkos ügyfélkódtár lehetővé teszi a titkos kódok kezelését. A Kód példák szakasz bemutatja, hogyan hozhat létre ügyfelet, állíthat be egy titkos kulcsot, lekérhet egy titkos kulcsot, és törölheti a titkos kulcsokat.
Kódpéldák
Irányelvek hozzáadása
Adja hozzá a következő irányelveket a Program.cs elejéhez:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Ügyfél hitelesítése és létrehozása
A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. Az Azure Identity ügyfélkódtár által biztosított DefaultAzureCredential osztály használata ajánlott módszer az Azure-szolgáltatások jelszó nélküli kapcsolatainak implementálásához a kódban. DefaultAzureCredential
több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.
Ebben a rövid útmutatóban DefaultAzureCredential
az Azure CLI-be bejelentkezett helyi fejlesztő felhasználó hitelesítő adataival hitelesíti a Key Vaultot. Az alkalmazás Azure-ban való üzembe helyezésekor ugyanaz DefaultAzureCredential
a kód automatikusan felderítheti és használhat egy App Service-hez, virtuális géphez vagy más szolgáltatáshoz hozzárendelt felügyelt identitást. További információ: Felügyelt identitás áttekintése.
Ebben a példában a kulcstartó neve ki van bontva a key vault URI formátumára https://<your-key-vault-name>.vault.azure.net
. A Key Vaultba való hitelesítésről további információt a fejlesztői útmutatóban talál.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Titkos kód mentése
A konzolalkalmazás hitelesítése után adjon hozzá egy titkos kulcsot a kulcstartóhoz. Ehhez a feladathoz használja a SetSecretAsync metódust.
A metódus első paramétere elfogadja a titkos kód nevét. Ebben a mintában a változó secretName
a "mySecret" sztringet tárolja.
A metódus második paramétere elfogadja a titkos kód értékét. Ebben a mintában a titkos kulcsot a felhasználó a parancssoron keresztül adja meg, és a változóban secretValue
tárolja.
await client.SetSecretAsync(secretName, secretValue);
Feljegyzés
Ha létezik titkos kódnév, a kód létrehozza a titkos kód új verzióját.
Titkos kód lekérése
Most már lekérheti a korábban beállított értéket a GetSecretAsync metódussal.
var secret = await client.GetSecretAsync(secretName);
A titkos kód most már a következőként secret.Value
lesz mentve: .
Titkos kulcs törlése
Végül töröljük a titkos kulcsot a kulcstartóból a StartDeleteSecretAsync és a PurgeDeletedSecretAsync metódusokkal.
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);
Mintakód
Módosítsa a .NET-konzolalkalmazást a Key Vaulttal való interakcióhoz az alábbi lépések végrehajtásával:
Cserélje le a Program.cs kódját a következő kódra:
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."); } } }
Tesztelés és ellenőrzés
Futtassa a következő parancsot az alkalmazás futtatásához.
dotnet run
Amikor a rendszer kéri, adjon meg egy titkos értéket. Például a mySecretPassword.
Megjelenik a következő kimenet egy változata:
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.
Következő lépések
A Key Vaultról és az alkalmazásokba való integrálásáról az alábbi cikkekben olvashat bővebben: