Oktatóanyag: Az Azure Key Vault használata virtuális géppel a .NET-ben

Az Azure Key Vault segít megvédeni az olyan titkos kulcsokat, mint az API-kulcsok, az adatbázis kapcsolati sztring az alkalmazásokhoz, szolgáltatásokhoz és informatikai erőforrásokhoz való hozzáféréshez.

Ebben az oktatóanyagban megtudhatja, hogyan kérhet le egy konzolalkalmazást az Azure Key Vaultból származó információk olvasásához. Az alkalmazás virtuális gép által felügyelt identitást használna a Key Vaultban való hitelesítéshez.

Ez az oktatóanyag a következőket mutatja be:

  • Hozzon létre egy erőforráscsoportot.
  • Kulcstartó létrehozása.
  • Adjon hozzá egy titkos kulcsot a kulcstartóhoz.
  • Titkos kulcs lekérése a kulcstartóból.
  • Azure-beli virtuális gép létrehozása.
  • Felügyelt identitás engedélyezése a virtuális géphez.
  • Engedélyek hozzárendelése a virtuálisgép-identitáshoz.

Mielőtt hozzákezdene, olvassa el a Key Vault alapfogalmait.

Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot.

Előfeltételek

Windows, Mac és Linux esetén:

Erőforrások létrehozása és engedélyek hozzárendelése

Mielőtt elkezdené a kódolást, létre kell hoznia néhány erőforrást, be kell helyeznie egy titkos kulcsot a kulcstartóba, és engedélyeket kell hozzárendelnie.

Bejelentkezés az Azure-ba

Bejelentkezés az Azure-ba a következő paranccsal:

az login

Erőforráscsoport és kulcstartó létrehozása

Ez a rövid útmutató egy előre létrehozott Azure Key Vaultot használ. Kulcstartót az Azure CLI rövid útmutatójában, az Azure PowerShell gyorsútmutatójában vagy az Azure Portal rövid útmutatójában ismertetett lépések követésével hozhat létre.

Másik lehetőségként egyszerűen futtathatja az alábbi Azure CLI- vagy Azure PowerShell-parancsokat.

Fontos

Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére az alábbi példákban.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Kulcstartó feltöltése titkos kóddal

Hozzunk létre egy mySecret nevű titkos kulcsot, amelynek értéke siker!. A titkos kód lehet jelszó, SQL-kapcsolati sztring vagy bármilyen más információ, amelyet biztonságosan és az alkalmazás számára elérhetővé kell tenni.

Ha titkos kulcsot szeretne hozzáadni az újonnan létrehozott kulcstartóhoz, használja a következő parancsot:

az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"

Virtuális gép létrehozása

Hozzon létre egy Windows vagy Linux rendszerű virtuális gépet az alábbi módszerek egyikével:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
Azure Portalra Azure Portalra

Identitás hozzárendelése a virtuális géphez

Hozzon létre egy rendszer által hozzárendelt identitást a virtuális géphez a következő példával:

az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>

Figyelje meg a rendszer által hozzárendelt identitást, amely az alábbi kódban jelenik meg. Az előző parancs kimenete a következő:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Engedélyek hozzárendelése a virtuálisgép-identitáshoz

Rendelje hozzá a korábban létrehozott identitásengedélyeket a kulcstartóhoz az az keyvault set-policy paranccsal:

az keyvault set-policy --name '<your-unique-key-vault-name>' --object-id <VMSystemAssignedIdentity> --secret-permissions  get list set delete

Bejelentkezés a virtuális gépre

A virtuális gépre való bejelentkezéshez kövesse a Csatlakozás utasításait, és jelentkezzen be egy Azure Windows rendszerű virtuális gépre vagy Csatlakozás, és jelentkezzen be egy Azure Linux rendszerű virtuális gépre.

A konzolalkalmazás beállítása

Hozzon létre egy konzolalkalmazást, és telepítse a szükséges csomagokat a dotnet paranccsal.

A .NET Core telepítése

A .NET Core telepítéséhez lépjen a .NET letöltési lapjára.

Minta .NET-alkalmazás létrehozása és futtatása

Nyisson meg egy parancssorablakot.

A ""Helló világ!" alkalmazás" a következő parancsok futtatásával nyomtatható a konzolra:

dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run

Telepítse a(z) csomagot

A konzolablakból telepítse az Azure Key Vault Titkos kulcstár ügyfélkódtárát a .NET-hez:

dotnet add package Azure.Security.KeyVault.Secrets

Ebben a rövid útmutatóban a következő identitáscsomagot kell telepítenie az Azure Key Vaultban való hitelesítéshez:

dotnet add package Azure.Identity

A konzolalkalmazás szerkesztése

Nyissa meg a Program.cs fájlt, és adja hozzá a következő csomagokat:

using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

Adja hozzá ezeket a sorokat, és frissítse az URI-t, hogy tükrözze a vaultUri kulcstartót. Az alábbi kód a "DefaultAzureCredential()" függvényt használja a Key Vaulthoz való hitelesítéshez, amely az alkalmazás által felügyelt identitásból származó jogkivonatot használja a hitelesítéshez. Emellett exponenciális visszalépést is használ az újrapróbálkozáshoz, ha a key vault szabályozása folyamatban van.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<your-key-vault-name>";
            var kvUri = "https://<your-key-vault-name>.vault.azure.net";
            SecretClientOptions options = new SecretClientOptions()
            {
                Retry =
                {
                    Delay= TimeSpan.FromSeconds(2),
                    MaxDelay = TimeSpan.FromSeconds(16),
                    MaxRetries = 5,
                    Mode = RetryMode.Exponential
                 }
            };

            var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }
    }

Az erőforrások eltávolítása

Ha már nincs rájuk szükség, törölje a virtuális gépet és a kulcstartót.

Következő lépések