Rövid útmutató: Az Azure Key Vault titkos ügyfélkódtár a .NET-hez (SDK v4)

Ismerkedés a .NET-hez készült Azure Key Vault titkos ügyfélkódtárral. Az Azure Key Vault egy felhő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. Ebből a rövid útmutatóból 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ódja | Csomag (NuGet)

A Key Vault és a titkos kódokkal kapcsolatos további információkért lásd:

Előfeltételek

Ez a rövid útmutató az Azure CLI-t vagy Azure PowerShell használjadotnet.

Telepí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 Studiót vagy a Visual Studio Code-ot is használhatják a hívásaik hitelesítéséhez. További információ : Ügyfél hitelesítése az Azure Identity ügyfélkódtárával.

Bejelentkezés az Azure-ba

  1. 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 oldalt.

    Ellenkező esetben nyisson meg egy böngészőlapot, https://aka.ms/devicelogin és írja be a terminálban megjelenő engedélyezési kódot.

  2. A böngészőben jelentkezzen be fiókja hitelesítő adataival.

Hozzáférés biztosítása a kulcstartóhoz

Hozzáférési szabályzat létrehozása a kulcstartóhoz, amely titkos engedélyeket ad a felhasználói fióknak

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. Egy parancshéjban futtassa a következő parancsot egy projekt key-vault-console-applétrehozásához:

    dotnet new console --name key-vault-console-app
    
  2. 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 build kimenete 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árat a .NET-hez:

dotnet add package Azure.Security.KeyVault.Secrets

Ehhez a rövid útmutatóhoz telepítenie kell az Azure Identityhez készült Azure SDK-ü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 Példakód szakasz bemutatja, hogyan hozhat létre ügyfelet, állíthat be titkos kódot, hogyan kérdezhet le és törölhet titkos kódot.

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

Ebben a rövid útmutatóban a bejelentkezett felhasználót használjuk a Key Vaultban való hitelesítéshez, amely a helyi fejlesztés előnyben részesített módszere. Az Azure-ban üzembe helyezett alkalmazások esetében a felügyelt identitást App Service vagy virtuális géphez kell hozzárendelni. További információ: Felügyelt identitás áttekintése.

Az alábbi példában a kulcstartó neve ki van bontva a key vault URI-jára a "https://< your-key-vault-name.vault.azure.net>" formátumban. Ebben a példában az Azure Identity Library"DefaultAzureCredential()" osztályát használjuk, amely lehetővé teszi ugyanazt a kódot különböző környezetekben, különböző lehetőségekkel az identitás biztosításához. 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 "mySecret" nevet.

await client.SetSecretAsync(secretName, secretValue);

Megjegyzés

Ha létezik titkos kódnév, a fenti 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.Valuelesz mentve: .

Titkos kulcs törlése

Végül töröljük a titkos kódot a kulcstartóból a StartDeleteSecretAsync és a PurgeDeletedSecretAsync metódusokkal.

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

Módosítsa a .NET Core-konzolalkalmazást a Key Vault való interakcióhoz az alábbi lépések végrehajtásával:

  1. Cserélje le a Program.cs fájlban lévő 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. Futtassa a következő parancsot az alkalmazás futtatásához.

    dotnet run
    
  2. Amikor a rendszer kéri, adjon meg egy titkos értéket. Például: 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 Vault és az alkalmazásokba való integrálásával kapcsolatos további információkért tekintse meg az alábbi cikkeket: