Klientská knihovna tajných kódů Azure Key Vault pro .NET – verze 4.5.0
Azure Key Vault je cloudová služba, která poskytuje zabezpečené úložiště tajných kódů, jako jsou hesla a připojovací řetězce databáze.
Klientská knihovna Tajných kódů Azure Key Vault umožňuje bezpečně ukládat tokeny, hesla, klíče rozhraní API a další tajné kódy a řídit přístup k nim. Tato knihovna nabízí operace pro vytvoření, načtení, aktualizaci, odstranění, vymazání, zálohování, obnovení a výpis tajných kódů a jejich verzí.
Zdrojový kód | Balíček (NuGet) | Referenční dokumentace k | rozhraní API Dokumentace k | produktu Vzorky | Průvodce migrací
Začínáme
Instalace balíčku
Nainstalujte klientskou knihovnu tajných kódů Azure Key Vault pro .NET pomocí NuGetu:
dotnet add package Azure.Security.KeyVault.Secrets
Požadavky
- Předplatné Azure
- Existující Key Vault Azure. Pokud potřebujete vytvořit Key Vault Azure, můžete použít Azure Portal nebo Azure CLI.
- Autorizace k existujícímu Key Vault Azure pomocí řízení přístupu na základě role (doporučeno) nebo řízení přístupu.
Pokud používáte Azure CLI, nahraďte <your-resource-group-name>
a <your-key-vault-name>
vlastními jedinečnými názvy:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
Ověření klienta
Pokud chcete pracovat se službou Azure Key Vault, budete muset vytvořit instanci třídy SecretClient. Potřebujete adresu URL trezoru, která se na portálu může zobrazit jako Název DNS, a přihlašovací údaje k vytvoření instance objektu klienta.
V níže uvedených příkladech se používá DefaultAzureCredential
, který je vhodný pro většinu scénářů, včetně místního vývojového a produkčního prostředí.
Kromě toho doporučujeme pro ověřování v produkčních prostředích používat spravovanou identitu.
Další informace o různých způsobech ověřování a jejich odpovídajících typech přihlašovacích údajů najdete v dokumentaci ke službě Azure Identity .
Pokud chcete použít DefaultAzureCredential
níže uvedeného zprostředkovatele nebo jiné zprostředkovatele přihlašovacích údajů poskytované se sadou Azure SDK, musíte nejprve nainstalovat balíček Azure.Identity:
dotnet add package Azure.Identity
Vytvořte instanci , která DefaultAzureCredential
se má předat klientovi.
Stejnou instanci přihlašovacích údajů tokenu je možné použít s více klienty, pokud budou ověřovat pomocí stejné identity.
// 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");
Klíčové koncepty
KeyVaultSecret
A KeyVaultSecret
je základní prostředek v rámci Azure Key Vault. Z pohledu vývojáře rozhraní API Azure Key Vault přijímají a vracejí hodnoty tajných kódů jako řetězce.
SecretClient
Poskytuje SecretClient
synchronní i asynchronní operace v sadě SDK, které umožňují výběr klienta na základě případu použití aplikace.
Jakmile inicializujete SecretClient
, můžete s tajnými kódy pracovat v Azure Key Vault.
Bezpečnost vlákna
Zaručujeme, že všechny metody instance klienta jsou bezpečné pro přístup z více vláken a nezávislé na sobě (pokyny). Tím se zajistí, že doporučení opakovaně používat instance klienta je vždy bezpečné, a to i napříč vlákny.
Další koncepty
Možnosti | klienta Přístup k odpovědi | Dlouhotrvající operace | Zpracování selhání | Diagnostika | Zesměšňovat | Životnost klienta
Příklady
Balíček Azure.Security.KeyVault.Secrets podporuje synchronní a asynchronní rozhraní API.
Následující část obsahuje několik fragmentů kódu pomocí client
výše vytvořeného kódu, které pokrývají některé z nejběžnějších úloh souvisejících s Azure Key Vault tajnými službami:
Příklady synchronizace
- Vytvoření tajného kódu
- Načtení tajného kódu
- Aktualizace existujícího tajného kódu
- Odstranění tajného kódu
- Odstranění a vymazání tajného kódu
- Výpis tajných kódů
Příklady asynchronních funkcí
- Asynchronní vytvoření tajného kódu
- Asynchronní výpis tajných kódů
- Asynchronní odstranění tajného kódu
Vytvoření tajného klíče
SetSecret
vytvoří soubor, který KeyVaultSecret
se uloží do Key Vault Azure. Pokud tajný kód se stejným názvem již existuje, vytvoří se nová verze tajného kódu.
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);
Načtení tajného kódu
GetSecret
načte tajný kód dříve uložený v azure Key Vault.
KeyVaultSecret secret = client.GetSecret("secret-name");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Aktualizace existujícího tajného kódu
UpdateSecretProperties
aktualizuje tajný klíč uložený dříve v Azure Key Vault. Aktualizují se jenom atributy tajného kódu. Pokud chcete hodnotu aktualizovat, zavolejte SecretClient.SetSecret
na tajný kód se stejným názvem.
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);
Odstranění tajného klíče
StartDeleteSecret
spustí dlouhotrvající operaci, která odstraní tajný klíč uložený dříve v Azure Key Vault.
Tajný kód můžete načíst okamžitě, aniž byste museli čekat na dokončení operace.
Pokud pro azure Key Vault není povolené obnovitelné odstranění, tato operace tajný klíč trvale odstraní.
DeleteSecretOperation operation = client.StartDeleteSecret("secret-name");
DeletedSecret secret = operation.Value;
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Odstranění a vymazání tajného kódu
Než se pokusíte tajný klíč vyprázdnit nebo obnovit, budete muset počkat na dokončení dlouhotrvající operace.
Můžete to provést voláním UpdateStatus
smyčky, jak je znázorněno níže:
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);
Výpis tajných kódů
Tento příklad vypíše všechny tajné kódy v zadaném Key Vault Azure. Hodnota se při výpisu všech tajných kódů nevrátí. K načtení hodnoty budete muset volat SecretClient.GetSecret
.
Pageable<SecretProperties> allSecrets = client.GetPropertiesOfSecrets();
foreach (SecretProperties secretProperties in allSecrets)
{
Console.WriteLine(secretProperties.Name);
}
Asynchronní vytvoření tajného kódu
Asynchronní rozhraní API jsou shodná se svými synchronními protějšky, ale vrací se s typickou příponou "Async" pro asynchronní metody a vrací Task
hodnotu .
Tento příklad vytvoří tajný kód v azure Key Vault se zadanými volitelnými argumenty.
KeyVaultSecret secret = await client.SetSecretAsync("secret-name", "secret-value");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Asynchronní výpis tajných kódů
Výpis tajných kódů nespoléhá na čekání na metodu GetPropertiesOfSecretsAsync
, ale vrátí hodnotu AsyncPageable<SecretProperties>
, kterou můžete použít s příkazem await foreach
:
AsyncPageable<SecretProperties> allSecrets = client.GetPropertiesOfSecretsAsync();
await foreach (SecretProperties secretProperties in allSecrets)
{
Console.WriteLine(secretProperties.Name);
}
Asynchronní odstranění tajného kódu
Při asynchronním odstranění tajného kódu před jeho vymazáním můžete počkat na metodu WaitForCompletionAsync
operace.
Ve výchozím nastavení se tato smyčka smyje po neomezenou dobu, ale můžete ji zrušit předáním CancellationToken
.
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);
Řešení potíží
Podrobnosti o tom, jak diagnostikovat různé scénáře selhání, najdete v našem průvodci odstraňováním potíží.
Obecné
Při interakci s klientskou knihovnou Azure Key Vault tajných kódů pomocí sady .NET SDK odpovídají chyby vrácené službou stejným stavovým kódům HTTP vráceným pro požadavky rozhraní REST API.
Pokud se například pokusíte načíst tajný kód, který v Azure Key Vault neexistuje, 404
vrátí se chyba s informací Not Found
.
try
{
KeyVaultSecret secret = client.GetSecret("some_secret");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Všimněte si, že se protokolují další informace, například ID požadavku klienta operace.
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
Další kroky
V tomto úložišti GitHub máte k dispozici několik ukázek klientské knihovny tajných kódů Azure Key Vault. Tyto ukázky poskytují ukázkový kód pro další scénáře, se kterými se při práci s Azure Key Vault běžně setkáte:
Sample1_HelloWorld.md – pro práci s Azure Key Vault, včetně:
- Vytvoření tajného klíče
- Získání existujícího tajného kódu
- Aktualizace existujícího tajného kódu
- Odstranit tajný kód
Sample2_BackupAndRestore.md – obsahuje fragmenty kódu, které pracují s tajnými kódy Azure Key Vault, včetně následujících:
- Zálohování a obnovení tajného kódu
Sample3_GetSecrets.md – ukázkový kód pro práci s tajnými kódy Azure Key Vault, včetně:
- Vytváření tajných kódů
- Výpis všech tajných kódů v Key Vault
- Aktualizace tajných kódů v Key Vault
- Výpis verzí zadaného tajného kódu
- Odstranění tajných kódů z Key Vault
- Výpis odstraněných tajných kódů v Key Vault
Další dokumentace
- Rozsáhlejší dokumentaci k Azure Key Vault najdete v referenční dokumentaci k rozhraní API.
- Informace o klientské knihovně klíčů najdete v tématu Klientská knihovna klíčů.
- Informace o klientské knihovně certifikátů najdete v tématu Klientská knihovna certifikátů.
Přispívání
Podrobnosti o sestavování, testování a přispívání do těchto knihoven najdete v CONTRIBUTING.md .
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com
Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo se obraťte na opencode@microsoft.com případné další dotazy nebo komentáře.
Azure SDK for .NET