Rövid útmutató: Azure Key Vault-kulcs ügyfélkódtár a .NET-hez
Ismerkedés a .NET-hez készült Azure Key Vault kulcskódtárával. Az Azure Key Vault egy felhőalapú szolgáltatás, amely biztonságos tárat biztosít a titkosítási kulcsokhoz. Biztonságosan tárolhatja a titkosítási kulcsokat, jelszavakat, tanúsítványokat és egyéb titkos kulcsokat. 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 kulcsokat egy Azure-kulcstartóból a .NET-kulcs ügyfélkódtárával
Key Vault-kulcs ü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 kulcsokról:
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- .NET 6 SDK vagy újabb
- Azure CLI
- Key Vault – létrehozhat egyet az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával.
Ez a rövid útmutató a használatban dotnet
van, és az Azure CLI
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:
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 Crypto 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 a .NET-hez készült Azure Key Vault-kulcs ügyfélkódtárat:
dotnet add package Azure.Security.KeyVault.Keys
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-kulcs ügyfélkódtár lehetővé teszi a kulcsok kezelését. A Kód példák szakasz bemutatja, hogyan hozhat létre ügyfelet, állíthat be egy kulcsot, hogyan kérdezhet le és törölhet egy kulcsot.
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.Keys;
Ü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.
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";
var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());
Kulcs mentése
Ehhez a feladathoz használja a CreateKeyAsync metódust . A metódus paraméterei egy kulcsnevet és egy kulcstípust fogadnak el.
var key = await client.CreateKeyAsync("myKey", KeyType.Rsa);
Feljegyzés
Ha létezik kulcsnév, ez a kód létrehozza a kulcs új verzióját.
Kulcs lekérése
Most már lekérheti a korábban létrehozott kulcsot a GetKeyAsync metódussal.
var key = await client.GetKeyAsync("myKey");
Kulcs törlése
Végül töröljük és töröljük a kulcsot a kulcstartóból a StartDeleteKeyAsync és a PurgeDeletedKeyAsync metódussal.
var operation = await client.StartDeleteKeyAsync("myKey");
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();
var key = operation.Value;
await client.PurgeDeletedKeyAsync("myKey");
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.Keys; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string keyName = "myKey"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write($"Creating a key in {keyVaultName} called '{keyName}' ..."); var createdKey = await client.CreateKeyAsync(keyName, KeyType.Rsa); Console.WriteLine("done."); Console.WriteLine($"Retrieving your key from {keyVaultName}."); var key = await client.GetKeyAsync(keyName); Console.WriteLine($"Your key version is '{key.Value.Properties.Version}'."); Console.Write($"Deleting your key from {keyVaultName} ..."); var deleteOperation = await client.StartDeleteKeyAsync(keyName); // You only need to wait for completion if you want to purge or recover the key. await deleteOperation.WaitForCompletionAsync(); Console.WriteLine("done."); Console.Write($"Purging your key from {keyVaultName} ..."); await client.PurgeDeletedKeyAsync(keyName); Console.WriteLine(" done."); } } }
Tesztelés és ellenőrzés
Hajtsa végre a következő parancsot a projekt létrehozásához
dotnet build
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:
Creating a key in mykeyvault called 'myKey' ... done. Retrieving your key from mykeyvault. Your key version is '8532359bced24e4bb2525f2d2050738a'. Deleting your key from jl-kv ... done Purging your key from <your-unique-keyvault-name> ... done.
Következő lépések
Ebben a rövid útmutatóban létrehozott egy kulcstartót, tárolt egy kulcsot, és lekérte azt.
A Key Vaultról és az alkalmazásokba való integrálásáról az alábbi cikkekben olvashat bővebben: