Rövid útmutató: Azure Key Vault-tanúsítvány ügyfélkódtár a .NET-hez

Ismerkedés a .NET-hez készült Azure Key Vault-tanúsítvány ügyfélkódtárával. Az Azure Key Vault egy felhőalapú szolgáltatás, amely biztonságos tárolót biztosít a tanúsítványokhoz. 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 tanúsítványokat 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 tanúsítványokró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-tanúsítvány ügyfélkódtárát:

dotnet add package Azure.Security.KeyVault.Certificates

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-tanúsítvány ügyfélkódtára lehetővé teszi a tanúsítványok kezelését. A Példakód szakasz bemutatja, hogyan hozhat létre ügyfelet, állíthat be tanúsítványt, hogyan kér le tanúsítványt, és hogyan törölheti a tanúsítványt.

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

Ü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 CertificateClient(new Uri(kvUri), new DefaultAzureCredential());

Tanúsítvány mentése

Ebben a példában az egyszerűség kedvéért használhatja az önaláírt tanúsítványt az alapértelmezett kiállítási szabályzattal. Ehhez a feladathoz használja a StartCreateCertificateAsync metódust. A metódus paraméterei elfogadják a tanúsítvány nevét és a tanúsítványházirendet.

var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();

Feljegyzés

Ha létezik tanúsítványnév, a fenti kód létrehozza a tanúsítvány új verzióját.

Tanúsítvány lekérése

Most már lekérheti a korábban létrehozott tanúsítványt a GetCertificateAsync metódussal.

var certificate = await client.GetCertificateAsync("myCertificate");

Tanúsítvány törlése

Végül töröljük és töröljük a tanúsítványt a kulcstartóból a StartDeleteCertificateAsync és a PurgeDeletedCertificateAsync metódusokkal.

var operation = await client.StartDeleteCertificateAsync("myCertificate");

// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();

var certificate = operation.Value;
await client.PurgeDeletedCertificateAsync("myCertificate");

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.Certificates;
    
    namespace key_vault_console_app
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                const string certificateName = "myCertificate";
                var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
                var kvUri = $"https://{keyVaultName}.vault.azure.net";
    
                var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());
    
                Console.Write($"Creating a certificate in {keyVaultName} called '{certificateName}' ...");
                CertificateOperation operation = await client.StartCreateCertificateAsync(certificateName, CertificatePolicy.Default);
                await operation.WaitForCompletionAsync();
                Console.WriteLine(" done.");
    
                Console.WriteLine($"Retrieving your certificate from {keyVaultName}.");
                var certificate = await client.GetCertificateAsync(certificateName);
                Console.WriteLine($"Your certificate version is '{certificate.Value.Properties.Version}'.");
    
                Console.Write($"Deleting your certificate from {keyVaultName} ...");
                DeleteCertificateOperation deleteOperation = await client.StartDeleteCertificateAsync(certificateName);
                // You only need to wait for completion if you want to purge or recover the certificate.
                await deleteOperation.WaitForCompletionAsync();
                Console.WriteLine(" done.");
    
                Console.Write($"Purging your certificate from {keyVaultName} ...");
                await client.PurgeDeletedCertificateAsync(certificateName);
                Console.WriteLine(" done.");
            }
        }
    }
    

Tesztelés és ellenőrzés

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

dotnet build

Megjelenik a következő kimenet egy változata:

Creating a certificate in mykeyvault called 'myCertificate' ... done.
Retrieving your certificate from mykeyvault.
Your certificate version is '8532359bced24e4bb2525f2d2050738a'.
Deleting your certificate from mykeyvault ... done
Purging your certificate from mykeyvault ... done

Következő lépések

Ebben a rövid útmutatóban létrehozott egy kulcstartót, tárolt egy tanúsítványt, és lekérte a tanúsítványt.

A Key Vaultról és az alkalmazásokba való integrálásáról az alábbi cikkekben olvashat bővebben: