Azure Key Vault titkos ügyfélkódtár a .NET-hez – 4.5.0-s verzió
Az Azure Key Vault egy felhőszolgáltatás, amely biztonságosan tárolja a titkos kódokat, például a jelszavakat és az adatbázis-kapcsolati sztringeket.
Az Azure Key Vault titkoskódtár lehetővé teszi a jogkivonatok, jelszavak, API-kulcsok és egyéb titkos kódok biztonságos tárolását és vezérlését. Ez a kódtár műveleteket kínál a titkos kódok és azok verzióinak létrehozásához, lekéréséhez, frissítéséhez, törléséhez, végleges törléséhez, biztonsági mentéséhez, visszaállításához és listázásához.
Forráskód | Csomag (NuGet) | API-referenciadokumentáció | Termékdokumentáció | Minták | Migrálási útmutató
Első lépések
A csomag telepítése
Telepítse a .NET-hez készült Azure Key Vault titkos ügyfélkódtárat a NuGet használatával:
dotnet add package Azure.Security.KeyVault.Secrets
Előfeltételek
- Egy Azure-előfizetés.
- Egy meglévő Azure-Key Vault. Ha létre kell hoznia egy Azure-Key Vault, használhatja az Azure Portalt vagy az Azure CLI-t.
- Engedélyezés meglévő Azure-Key Vault RBAC (ajánlott) vagy hozzáférés-vezérlés használatával.
Ha az Azure CLI-t használja, cserélje le <your-resource-group-name>
a és <your-key-vault-name>
a elemet a saját egyedi nevére:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
Az ügyfél hitelesítése
Az Azure Key Vault szolgáltatás használatához létre kell hoznia a SecretClient osztály egy példányát. Szüksége van egy tároló URL-címére, amelyet a portálon "DNS-név" néven láthat, valamint hitelesítő adatokra egy ügyfélobjektum példányosításához.
Az alábbi példák a DefaultAzureCredential
legtöbb forgatókönyvhöz , például a helyi fejlesztési és éles környezetekhez megfelelőt használnak.
Emellett azt javasoljuk, hogy felügyelt identitást használjon a hitelesítéshez éles környezetben.
A hitelesítés különböző módjairól és a hozzájuk tartozó hitelesítő adatok típusairól az Azure Identity dokumentációjában talál további információt.
Az alább látható szolgáltató vagy az Azure SDK-hoz biztosított egyéb hitelesítőadat-szolgáltatók használatához DefaultAzureCredential
először telepítenie kell az Azure.Identity csomagot:
dotnet add package Azure.Identity
Példányosíthat egy példányt DefaultAzureCredential
az ügyfélnek való továbbításhoz.
A jogkivonat hitelesítő adatainak ugyanazon példánya több ügyféllel is használható, ha ugyanazzal az identitással fognak hitelesítést végezni.
// Create a new secret client using the default credential from Azure.Identity using environment variables previously set,
// including AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, and AZURE_TENANT_ID.
var client = new SecretClient(vaultUri: new Uri(vaultUrl), credential: new DefaultAzureCredential());
// Create a new secret using the secret client.
KeyVaultSecret secret = client.SetSecret("secret-name", "secret-value");
// Retrieve a secret using the secret client.
secret = client.GetSecret("secret-name");
Fő fogalmak
KeyVaultSecret
Az A KeyVaultSecret
az Azure Key Vault alapvető erőforrása. A fejlesztők szempontjából az Azure Key Vault API-k sztringként fogadják el és adják vissza a titkos értékeket.
SecretClient
Az A SecretClient
szinkron és aszinkron műveleteket is biztosít az SDK-ban, lehetővé téve az ügyfél kiválasztását az alkalmazás használati esete alapján.
A inicializálása SecretClient
után az Azure Key Vault titkos kódokkal kommunikálhat.
Menetbiztonság
Garantáljuk, hogy minden ügyfélpéldány-metódus szálbiztos és független egymástól (útmutató). Ez biztosítja, hogy az ügyfélpéldányok újrafelhasználására vonatkozó javaslat mindig biztonságos legyen, még a szálak között is.
További fogalmak
Ügyfélbeállítások | A válasz | elérése Hosszú ideig futó műveletek | Hibák | kezelése Diagnosztika | Gúnyos | Ügyfélélettartam
Példák
Az Azure.Security.KeyVault.Secrets csomag támogatja a szinkron és aszinkron API-kat.
A következő szakasz számos kódrészletet tartalmaz a client
fent létrehozottak alapján, amelyek az Azure Key Vault titkos szolgáltatással kapcsolatos leggyakoribb feladatokat ismertetik:
Példák szinkronizálására
- Titkos kulcs létrehozása
- Titkos kód lekérése
- Meglévő titkos kód frissítése
- Titkos kulcs törlése
- Titkos kód törlése és végleges törlése
- Titkos kódok listázása
Példák aszinkronizálásra
Titkos kulcs létrehozása
SetSecret
létrehoz egyKeyVaultSecret
, az Azure-Key Vault tárolandót. Ha már létezik ilyen nevű titkos kód, akkor létrejön a titkos kód egy új verziója.
KeyVaultSecret secret = client.SetSecret("secret-name", "secret-value");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Console.WriteLine(secret.Properties.Version);
Console.WriteLine(secret.Properties.Enabled);
Titkos kód lekérése
GetSecret
lekéri az Azure Key Vault korábban tárolt titkos kódot.
KeyVaultSecret secret = client.GetSecret("secret-name");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Meglévő titkos kód frissítése
UpdateSecretProperties
frissíti a korábban az Azure Key Vault tárolt titkos kódot. Csak a titkos kód attribútumai frissülnek. Az érték frissítéséhez hívja SecretClient.SetSecret
meg a titkos kódot ugyanazzal a névvel.
KeyVaultSecret secret = client.GetSecret("secret-name");
// Clients may specify the content type of a secret to assist in interpreting the secret data when its retrieved.
secret.Properties.ContentType = "text/plain";
// You can specify additional application-specific metadata in the form of tags.
secret.Properties.Tags["foo"] = "updated tag";
SecretProperties updatedSecretProperties = client.UpdateSecretProperties(secret.Properties);
Console.WriteLine(updatedSecretProperties.Name);
Console.WriteLine(updatedSecretProperties.Version);
Console.WriteLine(updatedSecretProperties.ContentType);
Titkos kulcs törlése
StartDeleteSecret
elindít egy hosszú ideig futó műveletet az Azure Key Vault korábban tárolt titkos kód törléséhez.
A titkos kódot azonnal lekérheti anélkül, hogy megvárja a művelet befejezését.
Ha a helyreállítható törlés nincs engedélyezve az Azure Key Vault esetében, ez a művelet véglegesen törli a titkos kódot.
DeleteSecretOperation operation = client.StartDeleteSecret("secret-name");
DeletedSecret secret = operation.Value;
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Titkos kód törlése és végleges törlése
Meg kell várnia, amíg a hosszú ideig futó művelet befejeződik, mielőtt megpróbálná véglegesíteni vagy helyreállítani a titkos kódot.
Ezt úgy teheti meg, hogy egy hurokban hívja UpdateStatus
meg az alábbiakat:
DeleteSecretOperation operation = client.StartDeleteSecret("secret-name");
// You only need to wait for completion if you want to purge or recover the secret.
// You should call `UpdateStatus` in another thread or after doing additional work like pumping messages.
while (!operation.HasCompleted)
{
Thread.Sleep(2000);
operation.UpdateStatus();
}
DeletedSecret secret = operation.Value;
client.PurgeDeletedSecret(secret.Name);
Titkos kulcsok listázása
Ez a példa felsorolja a megadott Azure-Key Vault összes titkos kódját. A függvény nem adja vissza az értéket az összes titkos kód listázásakor. Az érték lekéréséhez hívás SecretClient.GetSecret
szükséges.
Pageable<SecretProperties> allSecrets = client.GetPropertiesOfSecrets();
foreach (SecretProperties secretProperties in allSecrets)
{
Console.WriteLine(secretProperties.Name);
}
Titkos kód aszinkron létrehozása
Az aszinkron API-k megegyeznek a szinkron megfelelőikkel, de az aszinkron metódusok jellemző "Async" utótagjával térnek vissza, és egy Task
értéket adnak vissza.
Ez a példa létrehoz egy titkos kódot az Azure Key Vault a megadott választható argumentumokkal.
KeyVaultSecret secret = await client.SetSecretAsync("secret-name", "secret-value");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Titkos kódok aszinkron listázása
A titkos kódok listázása nem a metódusra GetPropertiesOfSecretsAsync
vár, hanem az utasítással await foreach
használható értéket AsyncPageable<SecretProperties>
ad vissza:
AsyncPageable<SecretProperties> allSecrets = client.GetPropertiesOfSecretsAsync();
await foreach (SecretProperties secretProperties in allSecrets)
{
Console.WriteLine(secretProperties.Name);
}
Titkos kód aszinkron törlése
Ha aszinkron módon töröl egy titkos kódot, mielőtt véglegesítheti, megvárhatja a metódust WaitForCompletionAsync
a művelet során.
Alapértelmezés szerint ez a ciklus határozatlan ideig ismétlődik, de egy parancs átadásával CancellationToken
megszakíthatja azt.
DeleteSecretOperation operation = await client.StartDeleteSecretAsync("secret-name");
// You only need to wait for completion if you want to purge or recover the secret.
await operation.WaitForCompletionAsync();
DeletedSecret secret = operation.Value;
await client.PurgeDeletedSecretAsync(secret.Name);
Hibaelhárítás
A különböző hibaforgatókönyvek diagnosztizálásával kapcsolatos részletekért tekintse meg a hibaelhárítási útmutatónkat .
Általános kérdések
Amikor az Azure Key Vault titkos ügyfélkódtárat használja a .NET SDK-val, a szolgáltatás által visszaadott hibák megegyeznek a REST API-kérésekhez visszaadott HTTP-állapotkódokkal.
Ha például olyan titkos kódot próbál lekérni, amely nem létezik az Azure-Key Vault, a rendszer hibát 404
ad vissza, amely azt jelziNot Found
, hogy .
try
{
KeyVaultSecret secret = client.GetSecret("some_secret");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Megfigyelheti, hogy a rendszer további adatokat naplóz, például a művelet ügyfélkérés-azonosítóját.
Message:
Azure.RequestFailedException : Service request failed.
Status: 404 (Not Found)
Content:
{"error":{"code":"SecretNotFound","message":"Secret not found: some_secret"}}
Headers:
Cache-Control: no-cache
Pragma: no-cache
Server: Microsoft-IIS/10.0
x-ms-keyvault-region: westus
x-ms-request-id: 625f870e-10ea-41e5-8380-282e5cf768f2
x-ms-keyvault-service-version: 1.1.0.866
x-ms-keyvault-network-info: addr=131.107.174.199;act_addr_fam=InterNetwork;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Strict-Transport-Security: max-age=31536000;includeSubDomains
X-Content-Type-Options: nosniff
Date: Tue, 18 Jun 2019 16:02:11 GMT
Content-Length: 75
Content-Type: application/json; charset=utf-8
Expires: -1
Következő lépések
Ebben a GitHub-adattárban számos Azure Key Vault titkos ügyfélkódtár-minta érhető el. Ezek a minták példakódot biztosítanak az Azure Key Vault használata során gyakran előforduló további forgatókönyvekhez:
Sample1_HelloWorld.md – az Azure Key Vault való munkavégzéshez, beleértve a következőket:
- Titkos kulcs létrehozása
- Meglévő titkos kód lekérése
- Meglévő titkos kód frissítése
- Titkos kód törlése
Sample2_BackupAndRestore.md – az Azure Key Vault titkos kódrészleteit tartalmazza, beleértve a következőket:
- Titkos kulcs biztonsági mentése és helyreállítása
Sample3_GetSecrets.md – példakód az Azure Key Vault titkos kódokkal való együttműködéshez, beleértve a következőket:
- Titkos kulcsok létrehozása
- Az összes titkos kód listázása a Key Vault
- Titkos kulcsok frissítése a Key Vault
- Megadott titkos kód verzióinak listázása
- Titkos kódok törlése a Key Vault
- Törölt titkos kódok listázása a Key Vault
További dokumentáció
- Az Azure Key Vault részletesebb dokumentációját az API referenciadokumentációjában találja.
- A Kulcsok ügyfélkódtárat lásd: Kulcsok ügyfélkódtár.
- A Tanúsítványok ügyfélkódtárért lásd: Tanúsítványok ügyfélkódtár.
Közreműködés
A kódtárak létrehozásával, tesztelésével és közreműködésével kapcsolatos részletekért tekintse meg a CONTRIBUTING.md.
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.
A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.
Azure SDK for .NET