Gyorsútmutató: Azure-kulcstár titkos ügyféltár a .NET-hez (SDK v4)

Első lépések az Azure Key Vault titkos ügyféltárával a .NET-hez. Az Azure key vault egy felhőbeli szolgáltatás, amely egy biztonságos tárolót biztosít a titkos titkos adatok számára. Biztonságosan tárolhat kulcsokat, jelszavakat, tanúsítványokat és egyéb titkos adatokat. Az Azure-kulcst tárolókat az Azure Portalon keresztül lehet létrehozni és kezelni. Ebben a rövid útmutatóban megismeri, hogy miként hozhat létre, olvashat be és törölhet titkos kódokat egy Azure-kulcstárból a .NET-ügyféltár használatával.

A kulcstár ügyféltárának erőforrásai:

API referenciadokumentációKönyvtár forráskódjaCsomag (NuGet)

További információ a kulcstárról és a titkos információkról:

Előfeltételek

Ez a rövid útmutató az dotnet Azure CLI-t használja

Beállítás

Ez a rövid útmutató az Azure Identity library és az Azure CLI segítségével hitelesíti a felhasználót az Azure Services szolgáltatásban. A fejlesztők a hívásaik hitelesítéséhez Visual Studio vagy Visual Studio kód használatával is hitelesítik a hívásokat. További információt Az ügyfél hitelesítése Azure Identity client library(Az ügyfél hitelesítése Azure Identity client library) segítségével .

Bejelentkezés az Azure-ba

  1. Futtassa a login parancsot.

    az login
    

    Ha a clió meg tudja nyitni az alapértelmezett böngészőt, akkor igen, és betölt egy Azure bejelentkezési lapot.

    Ellenkező esetben nyisson meg egy böngészőoldalt, és adja meg a terminálján https://aka.ms/devicelogin megjelenő engedélyezési kódot.

  2. Jelentkezzen be a fiókjához használt hitelesítő adataival a böngészőben.

Hozzáférés megadása a kulcstárhoz

Hozzon létre egy hozzáférési házirendet a kulcstárhoz, amely titkos engedélyeket ad a felhasználói fiókjához.

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --secret-permissions delete get list set purge

Új .NET-konzolalkalmazás létrehozása

  1. A parancshéjban futtassa az alábbi parancsot a következő nevű projekt key-vault-console-app létrehozásához:

    dotnet new console --name key-vault-console-app
    
  2. Válts át az újonnan létrehozott key-vault-console-app könyvtárra, és futtassa a következő parancsot a projekt felépítéséhez:

    dotnet build
    

    A buildkimenetben ne legyen figyelmeztetés vagy hiba.

    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éltárát a .NET-hez:

dotnet add package Azure.Security.KeyVault.Secrets

Ehhez a rövid útmutatóhoz az Azure Identityhez is telepítenie kell az Azure SDK-ügyféltárat:

dotnet add package Azure.Identity

Környezeti változók beállítása

Ez az alkalmazás a kulcstár nevét használja a következő nevű környezeti KEY_VAULT_NAME változóként: .

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 titkos Azure-kulcstár-tára lehetővé teszi a titkos titkos adatok kezelését. A Példák a kódra szakasz bemutatja, hogy miként hozhat létre ügyfelet, állíthat be titkos titkos adatokat, és hogyan törölheti a titkos kódokat.

Példák kódra

Utasítások hozzáadása

Adja hozzá a következő utasításoknak megfelelő lépéseket a Program.cs lap tetejére:

using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

Ügyfél hitelesítése és létrehozása

Ebben a gyors útmutatóban a bejelentkezett felhasználó a kulcstárba való hitelesítéshez használatos, amely a helyi fejlesztés előnyben részesített módszere. Az Azure-ban telepített alkalmazások esetében a felügyelt identitást hozzá kell rendelni az appszolgáltatáshoz vagy a virtuális géphez, további információt a Felügyelt identitás áttekintése témakörben talál.

Az alábbi példában a kulcstár neve ki van bontva a kulcstár URI azonosítóra < "https://-key-vault-name > .vault.azure.net" formátumban. Ez a példa az Azure Identity Library"DefaultAzureCredential()" osztályát használja, amely lehetővé teszi, hogy ugyanazt a kódot különböző környezetekben különböző beállításokat használva identitást biztosítson. A kulcstár hitelesítéséhez további információt a Fejlesztői útmutatóban található.

string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";

var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());

Titkos mentés

Most, hogy hitelesítette a konzolalkalmazást, vegyen fel egy titkos kulcsot a kulcstárba. Ehhez a feladathoz használja a SetSecretAsync metódust. A módszer első paramétere a mintában a "mySecret" paraméternek is nevet ad.

await client.SetSecretAsync(secretName, secretValue);

Megjegyzés

Ha a titkos név létezik, a fenti kód a kód új verzióját fogja létrehozni.

Titkos adatok lekérése

Mostantól lekérheti a korábban beállított értéket a GetSecretAsync metódussal.

var secret = await client.GetSecretAsync(secretName);

A program most már a következő fájlként menti a titkos secret.Value adatokat: .

Titkos adatok törlése

Végül a StartDeleteSecretAsync és a PurgeDeletedSecretAsync metódussal töröljük a kulcsot a kulcstárból.

var operation = await client.StartDeleteSecretAsync("mySecret");
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();

await client.PurgeDeletedKeyAsync("mySecret");

Mintakód

Az alábbi lépések elvégzésével módosítsa a .NET Core konzol appot a kulcstárhoz való interakcióhoz:

  1. Cserélje le a program.cs fájlban a kódot 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

  1. Az alkalmazás futtatásához futtassa a következő parancsot.

    dotnet run
    
  2. Amikor a rendszer kéri, adjon meg egy titkos értéket. Például: mySecretPassword.

Megjelenik az alábbi 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.

További lépések

Ha szeretne többet megtudni a kulcstárról és az alkalmazásokba való integrálásáról, olvassa el az alábbi cikkeket: