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

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

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

  2. 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élyt adni az alkalmazásnak a kulcstartóhoz, rendeljen hozzá egy szerepkört az az role assignment create Azure CLI paranccsal.

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>"

Cserélje le <az alkalmazásazonosítót>, <az előfizetés-azonosítót>, <az erőforráscsoport nevét> és <az egyedi-kulcsvault-nevét> a tényleges értékekre. <Az app-id> a regisztrált alkalmazás (ügyfél) azonosítója az Azure AD-ben.

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

  1. A 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 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 secretValuetá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.Valuelesz 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:

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

  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 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: