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
- Azure-előfizetés – hozzon létre egyet ingyenesen
- .NET 6 SDK vagy újabb
- Azure CLI
- Key Vault – létrehozhat egyet az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával.
Ez a rövid útmutató az Azure CLI-t 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
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.
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élyeket szerezni a kulcstartóhoz, rendeljen hozzá egy szerepkört a "Felhasználónév" (UPN) szolgáltatáshoz az Az role Assignment Create Azure CLI-paranccsal.
az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Cserélje le <a upn>, <subscription-id>, <resource-group-name> és <your-unique-keyvault-name> értékét a tényleges értékekre. Az UPN általában egy e-mail-cím (pl. username@domain.com) formátumban lesz.
Új .NET-konzolalkalmazás létrehozása
A parancshéjban futtassa a következő parancsot egy projekt
key-vault-console-app
létrehozásához:dotnet new console --name key-vault-console-app
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
Az alkalmazás egy úgynevezett KEY_VAULT_NAME
környezeti változóból szerzi be a kulcstartó nevét.
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: