Azure Key Vault geheime Clientbibliothek für .NET– Version 4.5.0
Azure Key Vault ist ein Clouddienst, der eine sichere Speicherung von Geheimnissen wie Kennwörtern und Datenbankverbindungszeichenfolgen ermöglicht.
Mit der Clientbibliothek für Azure Key Vault Geheimnisse können Sie den Zugriff auf Token, Kennwörter, API-Schlüssel und andere Geheimnisse sicher speichern und steuern. Diese Bibliothek bietet Vorgänge zum Erstellen, Abrufen, Aktualisieren, Löschen, Löschen, Sichern, Wiederherstellen und Auflisten der Geheimnisse und ihrer Versionen.
Quellcode | Paket (NuGet) | API-Referenzdokumentation | Produktdokumentation | Proben | Migrationshandbuch
Erste Schritte
Installieren des Pakets
Installieren Sie die Azure Key Vault-Geheimnisclientbibliothek für .NET mit NuGet:
dotnet add package Azure.Security.KeyVault.Secrets
Voraussetzungen
- Ein Azure-Abonnement.
- Eine vorhandene Azure Key Vault. Wenn Sie eine Azure Key Vault erstellen müssen, können Sie das Azure-Portal oder die Azure CLI verwenden.
- Autorisierung für eine vorhandene Azure-Key Vault entweder mithilfe der RBAC (empfohlen) oder der Zugriffssteuerung.
Wenn Sie die Azure CLI verwenden, ersetzen <your-resource-group-name>
Sie und <your-key-vault-name>
durch Ihre eigenen, eindeutigen Namen:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
Authentifizieren des Clients
Um mit dem Azure Key Vault-Dienst zu interagieren, müssen Sie eine instance der SecretClient-Klasse erstellen. Sie benötigen eine Tresor-URL, die im Portal möglicherweise als "DNS-Name" angezeigt wird, und Anmeldeinformationen, um ein Clientobjekt zu instanziieren.
In den unten gezeigten Beispielen wird ein DefaultAzureCredential
verwendet, das für die meisten Szenarien geeignet ist, einschließlich lokaler Entwicklungs- und Produktionsumgebungen.
Darüber hinaus wird empfohlen, eine verwaltete Identität für die Authentifizierung in Produktionsumgebungen zu verwenden.
Weitere Informationen zu verschiedenen Authentifizierungsmethoden und den entsprechenden Anmeldeinformationstypen finden Sie in der Dokumentation zu Azure Identity .
Um den DefaultAzureCredential
unten gezeigten Anbieter oder andere Anmeldeinformationsanbieter zu verwenden, die mit dem Azure SDK bereitgestellt werden, müssen Sie zuerst das Azure.Identity-Paket installieren:
dotnet add package Azure.Identity
Instanziieren Sie eine DefaultAzureCredential
, um sie an den Client zu übergeben.
Die gleiche instance einer Tokenanmeldeinformation kann mit mehreren Clients verwendet werden, wenn sie sich mit derselben Identität authentifizieren.
// 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");
Wichtige Begriffe
KeyVaultSecret
Ein KeyVaultSecret
ist die grundlegende Ressource in Azure Key Vault. Aus Entwicklersicht akzeptieren Azure Key Vault-APIs geheime Werte und geben sie als Zeichenfolgen zurück.
SecretClient
Ein SecretClient
stellt sowohl synchrone als auch asynchrone Vorgänge im SDK bereit, die die Auswahl eines Clients basierend auf dem Anwendungsfall einer Anwendung ermöglichen.
Nachdem Sie ein SecretClient
initialisiert haben, können Sie mit Geheimnissen in Azure Key Vault interagieren.
Threadsicherheit
Wir garantieren, dass alle Client-instance Methoden threadsicher und voneinander unabhängig sind (Richtlinie). Dadurch wird sichergestellt, dass die Empfehlung, Clientinstanzen wiederzuverwenden, immer sicher ist, auch über Threads hinweg.
Zusätzliche Konzepte
Clientoptionen | Zugreifen auf die Antwort | Vorgänge | mit langer AusführungsdauerBehandeln von Fehlern | Diagnose | Spott | Clientlebensdauer
Beispiele
Das Azure.Security.KeyVault.Secrets-Paket unterstützt synchrone und asynchrone APIs.
Der folgende Abschnitt enthält mehrere Codeausschnitte, die das client
oben erstellte verwenden, wobei einige der häufigsten Aufgaben im Zusammenhang mit Azure Key Vault Secret Service behandelt werden:
Synchronisierungsbeispiele
- Erstellen eines geheimen Schlüssels
- Abrufen eines Geheimnisses
- Aktualisieren eines vorhandenen Geheimnisses
- Löschen eines Geheimnisses
- Löschen und Bereinigen eines Geheimnisses
- Auflisten von Geheimnissen
Asynchrone Beispiele
- Asynchrones Erstellen eines Geheimnisses
- Asynchrones Auflisten von Geheimnissen
- Asynchrones Löschen eines Geheimnisses
Erstellen eines Geheimnisses
SetSecret
erstellt eine KeyVaultSecret
, die im Azure-Key Vault gespeichert werden soll. Wenn bereits ein Geheimnis mit demselben Namen vorhanden ist, wird eine neue Version des Geheimnisses erstellt.
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);
Abrufen eines Geheimnisses
GetSecret
ruft ein Geheimnis ab, das zuvor im Azure-Key Vault gespeichert wurde.
KeyVaultSecret secret = client.GetSecret("secret-name");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Aktualisieren eines vorhandenen Geheimnisses
UpdateSecretProperties
aktualisiert ein Geheimnis, das zuvor im Azure-Key Vault gespeichert wurde. Nur die Attribute des Geheimnisses werden aktualisiert. Um den Wert zu aktualisieren, rufen Sie SecretClient.SetSecret
für ein Geheimnis mit demselben Namen auf.
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);
Löschen eines Geheimnisses
StartDeleteSecret
startet einen zeitintensiven Vorgang, um ein geheimnis zu löschen, das zuvor im Azure-Key Vault gespeichert wurde.
Sie können das Geheimnis sofort abrufen, ohne auf den Abschluss des Vorgangs zu warten.
Wenn vorläufiges Löschen für die Azure-Key Vault nicht aktiviert ist, wird das Geheimnis durch diesen Vorgang endgültig gelöscht.
DeleteSecretOperation operation = client.StartDeleteSecret("secret-name");
DeletedSecret secret = operation.Value;
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Löschen und Bereinigen eines Geheimnisses
Sie müssen warten, bis der lang andauernde Vorgang abgeschlossen ist, bevor Sie versuchen, das Geheimnis zu bereinigen oder wiederherzustellen.
Dazu können Sie wie unten gezeigt in einer Schleife aufrufen UpdateStatus
:
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);
Auflisten geheimer Schlüssel
In diesem Beispiel werden alle Geheimnisse im angegebenen Azure-Key Vault aufgelistet. Der Wert wird beim Auflisten aller Geheimnisse nicht zurückgegeben. Sie müssen aufrufen SecretClient.GetSecret
, um den Wert abzurufen.
Pageable<SecretProperties> allSecrets = client.GetPropertiesOfSecrets();
foreach (SecretProperties secretProperties in allSecrets)
{
Console.WriteLine(secretProperties.Name);
}
Asynchrones Erstellen eines Geheimnisses
Die asynchronen APIs sind mit ihren synchronen Entsprechungen identisch, geben jedoch mit dem typischen Suffix "Async" für asynchrone Methoden zurück und geben ein Task
zurück.
In diesem Beispiel wird ein Geheimnis im Azure-Key Vault mit den angegebenen optionalen Argumenten erstellt.
KeyVaultSecret secret = await client.SetSecretAsync("secret-name", "secret-value");
Console.WriteLine(secret.Name);
Console.WriteLine(secret.Value);
Asynchrones Auflisten von Geheimnissen
Das Auflisten von Geheimnissen basiert nicht auf dem Warten auf die GetPropertiesOfSecretsAsync
-Methode, sondern gibt eine zurück AsyncPageable<SecretProperties>
, die Sie mit der await foreach
-Anweisung verwenden können:
AsyncPageable<SecretProperties> allSecrets = client.GetPropertiesOfSecretsAsync();
await foreach (SecretProperties secretProperties in allSecrets)
{
Console.WriteLine(secretProperties.Name);
}
Asynchrones Löschen eines Geheimnisses
Wenn Sie ein Geheimnis asynchron löschen, bevor Sie es löschen, können Sie die WaitForCompletionAsync
-Methode für den Vorgang abwarten.
Standardmäßig wird diese Schleife auf unbestimmte Zeit ausgeführt, aber Sie können sie abbrechen, indem Sie einen CancellationToken
übergeben.
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);
Problembehandlung
Ausführliche Informationen zur Diagnose verschiedener Fehlerszenarien finden Sie in unserem Leitfaden zur Problembehandlung .
Allgemein
Wenn Sie mit der Geheimclientbibliothek von Azure Key Vault mithilfe des .NET SDK interagieren, entsprechen vom Dienst zurückgegebene Fehler denselben HTTP-status Codes, die für REST-API-Anforderungen zurückgegeben werden.
Wenn Sie beispielsweise versuchen, ein Geheimnis abzurufen, das in Ihrem Azure Key Vault nicht vorhanden ist, wird ein 404
Fehler zurückgegeben, der angibtNot Found
.
try
{
KeyVaultSecret secret = client.GetSecret("some_secret");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Sie werden feststellen, dass zusätzliche Informationen protokolliert werden, z. B. die Clientanforderungs-ID des Vorgangs.
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
Nächste Schritte
In diesem GitHub-Repository stehen Ihnen mehrere Beispiele für die Clientbibliothek für Azure Key Vault Geheimnisse zur Verfügung. Diese Beispiele enthalten Beispielcode für zusätzliche Szenarien, die häufig bei der Arbeit mit Azure Key Vault auftreten:
Sample1_HelloWorld.md– für die Arbeit mit Azure Key Vault, einschließlich:
- Erstellen eines Geheimnisses
- Abrufen eines vorhandenen Geheimnisses
- Aktualisieren eines vorhandenen Geheimnisses
- Löschen von Geheimnissen
Sample2_BackupAndRestore.md: Enthält die Codeausschnitte, die mit Azure Key Vault Geheimnissen arbeiten, einschließlich:
- Sichern und Wiederherstellen eines Geheimnisses
Sample3_GetSecrets.md: Beispielcode für die Arbeit mit Azure Key Vault-Geheimnissen, einschließlich:
- Erstellen von Geheimnissen
- Auflisten aller Geheimnisse im Key Vault
- Aktualisieren von Geheimnissen im Key Vault
- Auflisten von Versionen eines angegebenen Geheimnisses
- Löschen von Geheimnissen aus dem Key Vault
- Auflisten gelöschter Geheimnisse im Key Vault
Zusätzliche Dokumentation
- Eine ausführlichere Dokumentation zu Azure Key Vault finden Sie in der API-Referenzdokumentation.
- Informationen zur Schlüsselclientbibliothek finden Sie unter Schlüsselclientbibliothek.
- Informationen zur Zertifikatclientbibliothek finden Sie unter Zertifikatclientbibliothek.
Mitwirken
Weitere Informationen zum Erstellen, Testen und Mitwirken zu diesen Bibliotheken finden Sie im CONTRIBUTING.md .
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Azure SDK for .NET