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.