Angeben eines vom Kunden bereitgestellten Schlüssels für eine Anforderung in Blob Storage mit .NET
Clients, die Anforderungen für Azure Blob Storage stellen, haben die Möglichkeit, einen AES-256-Verschlüsselungsschlüssel für eine einzelne Anforderung anzugeben. Die Einbeziehung des Verschlüsselungsschlüssels in die Anforderung ermöglicht eine präzise Steuerung der Verschlüsselungseinstellungen für Blob-Speichervorgänge. Vom Kunden bereitgestellte Schlüssel können in Azure Key Vault oder einem anderen Schlüsselspeicher gespeichert werden.
In diesem Artikel wird beschrieben, wie Sie einen vom Kunden bereitgestellten Schlüssel für eine Anforderung mit .NET angeben.
Installieren von Clientbibliothekspaketen
Hinweis
Die hier genannten Beispiele verwenden die Azure Storage-Clientbibliothek unter Version 12. Version 12 der Clientbibliothek ist Teil des Azure SDK. Weiter Informationen über das Azure SDK finden Sie im Azure SDK-Repository unter GitHub.
Führen Sie zum Installieren des Blob Speicher-Pakets den folgenden Befehl über die NuGet-Paket-Manager-Konsole aus:
Install-Package Azure.Storage.Blobs
In den hier genannten Beispielen wird auch die neueste Version der Azure Identity-Clientbibliothek für .NET zur Authentifizierung mit Microsoft Entra-Anmeldeinformationen verwendet. Führen Sie zum Installieren des Pakets den folgenden Befehl über die NuGet-Paket-Manager-Konsole aus:
Install-Package Azure.Identity
Weitere Informationen zur Authentifizierung bei der Azure Identity-Clientbibliothek finden Sie unter Azure Identity-Clientbibliothek für .NET.
Verwenden eines vom Kunden bereitgestellten Schlüssels zum Schreiben in einen Blob
Das folgende Beispiel liefert einen AES-256-Schlüssel beim Hochladen eines Blobs mit der v12-Clientbibliothek für Blobspeicher. Im Beispiel wird das Objekt DefaultAzureCredential verwendet, um die Schreibanforderung mit Microsoft Entra ID zu autorisieren, Sie können die Anforderung jedoch auch mit den Anmeldeinformationen eines gemeinsam verwendeten Schlüssels autorisieren. Weitere Informationen zur Verwendung der Klasse „DefaultAzureCredential“ zum Autorisieren einer verwalteten Identität für den Zugriff auf Azure Storage finden Sie unter Azure Identity-Clientbibliothek für .NET.
async static Task UploadBlobWithClientKey(Uri blobUri,
Stream data,
byte[] key,
string keySha256)
{
// Create a new customer-provided key.
// Key must be AES-256.
var cpk = new CustomerProvidedKey(key);
// Check the key's encryption hash.
if (cpk.EncryptionKeyHash != keySha256)
{
throw new InvalidOperationException("The encryption key is corrupted.");
}
// Specify the customer-provided key on the options for the client.
BlobClientOptions options = new BlobClientOptions()
{
CustomerProvidedKey = cpk
};
// Create the client object with options specified.
BlobClient blobClient = new BlobClient(
blobUri,
new DefaultAzureCredential(),
options);
// If the container may not exist yet,
// create a client object for the container.
// The container client retains the credential and client options.
BlobContainerClient containerClient =
blobClient.GetParentBlobContainerClient();
try
{
// Create the container if it does not exist.
await containerClient.CreateIfNotExistsAsync();
// Upload the data using the customer-provided key.
await blobClient.UploadAsync(data);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}