Ügyfél által megadott kulcs megadása a Blob Storage.NET-tel való kéréséhez
Az Azure Blob Storage-ra irányuló kéréseket küldő ügyfeleknek lehetőségük van AES-256 titkosítási kulcsot megadni egy egyedi kéréshez. A kérelem titkosítási kulcsának belefogva részletes vezérlést biztosít a Blob Storage-műveletek titkosítási beállításai felett. Az ügyfél által megadott kulcsok tárolhatók az Azure Key Vaultban vagy egy másik kulcstárolóban.
Ez a cikk bemutatja, hogyan adhatja meg az ügyfél által megadott kulcsot egy .NET-kéréshez.
Ügyfélkódtár-csomagok telepítése
Megjegyzés:
Az itt bemutatott példák az Azure Storage-ügyfélkódtár 12-es verzióját használják. A 12-es verziójú ügyfélkódtár az Azure SDK része. Az Azure SDK-val kapcsolatos további információkért tekintse meg az Azure SDK-adattárat a GitHubon.
A Blob Storage-csomag telepítéséhez futtassa a következő parancsot a NuGet csomagkezelő konzolján:
Install-Package Azure.Storage.Blobs
Az itt bemutatott példák az Azure Identity .NET-hez készült ügyfélkódtárának legújabb verzióját is használják a Microsoft Entra hitelesítő adataival való hitelesítéshez. A csomag telepítéséhez futtassa a következő parancsot a NuGet csomagkezelő konzolján:
Install-Package Azure.Identity
Az Azure Identity ügyfélkódtárával való hitelesítéssel kapcsolatos további információkért tekintse meg a .NET-hez készült Azure Identity-ügyfélkódtárat.
Ügyfél által megadott kulcs használata blobba való íráshoz
Az alábbi példában egy AES-256-kulcs található, amikor feltölt egy blobot a Blob Storage v12-ügyfélkódtárával. A példa a DefaultAzureCredential objektummal engedélyezi az írási kérést a Microsoft Entra-azonosítóval, de a kérést megosztott kulcsú hitelesítő adatokkal is engedélyezheti. A DefaultAzureCredential osztálynak az Azure Storage-hoz való hozzáférés engedélyezésére szolgáló DefaultAzureCredential osztály használatával kapcsolatos további információkért tekintse meg a .NET-hez készült Azure Identity ügyfélkódtárat.
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;
}
}