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

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

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

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

  1. Hajtsa végre a következő parancsot a projekt létrehozásához

    dotnet build
    
  2. Futtassa a következő parancsot az alkalmazás futtatásához.

    dotnet run
    
  3. 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: