Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Klien yang membuat permintaan terhadap penyimpanan Azure Blob memiliki opsi untuk menyediakan kunci enkripsi AES-256 pada permintaan individual. Menyertakan kunci enkripsi pada permintaan menyediakan kontrol terperinci atas pengaturan enkripsi untuk operasi penyimpanan Blob. Kunci yang disediakan pelanggan dapat disimpan di Azure Key Vault atau di penyimpanan kunci lainnya.
Artikel ini memperlihatkan cara menentukan kunci yang disediakan pelanggan atas permintaan dengan .NET.
Pasang pustaka klien
Nota
Contoh yang ditampilkan di sini menggunakan pustaka klien Azure Storage versi 12. Pustaka klien versi 12 adalah bagian dari Azure SDK. Untuk informasi selengkapnya tentang Azure SDK, lihat repositori Azure SDK di GitHub.
Untuk menginstal paket penyimpanan Blob, jalankan perintah berikut dari konsol manajer paket NuGet:
Install-Package Azure.Storage.Blobs
Contoh yang ditampilkan di sini juga menggunakan versi terbaru pustaka klien Azure Identity untuk .NET untuk mengautentikasi dengan kredensial Microsoft Entra. Untuk menginstal paket, jalankan perintah berikut dari konsol manajer paket NuGet:
Install-Package Azure.Identity
Untuk mempelajari selengkapnya tentang cara mengautentikasi dengan pustaka klien Azure Identity, lihat Pustaka klien Azure Identity untuk .NET.
Menggunakan kunci yang disediakan pelanggan untuk menulis ke blob
Contoh berikut menyediakan kunci AES-256 saat mengunggah blob dengan pustaka klien v12 untuk penyimpanan Blob. Contoh menggunakan objek DefaultAzureCredential untuk mengotorisasi permintaan tulis dengan ID Microsoft Entra, tetapi Anda juga dapat mengotorisasi permintaan dengan kredensial Kunci Bersama. Untuk informasi selengkapnya tentang menggunakan kelas DefaultAzureCredential untuk mengotorisasi identitas terkelola untuk mengakses Azure Storage, lihat Pustaka klien Azure Identity untuk .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;
}
}