Akses aman ke data aplikasi

Tutorial ini adalah bagian ketiga dari seri ini. Anda mempelajari cara mengamankan akses ke akun penyimpanan.

Di bagian ketiga seri ini, Anda mempelajari cara:

  • Menggunakan token SAS untuk mengakses gambar kecil
  • Mengaktifkan enkripsi sisi server
  • Mengaktifkan transportasi HTTPS-saja

Penyimpanan blob Azure menyediakan layanan yang kuat untuk menyimpan file untuk aplikasi. Tutorial ini memperluas topik sebelumnya untuk menunjukkan cara mengamankan akses ke akun penyimpanan Anda dari aplikasi web. Setelah Anda selesai, gambar dienkripsi dan aplikasi web menggunakan token SAS aman untuk mengakses gambar kecil.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus telah menyelesaikan tutorial Penyimpanan sebelumnya: Mengotomatiskan mengubah ukuran gambar yang diunggah menggunakan Azure Event Grid.

Mengatur akses publik kontainer

Di bagian seri tutorial ini, token SAS digunakan untuk mengakses gambar kecil. Di langkah ini, Anda mengatur akses publik kontainer gambar kecil ke off.

$blobStorageAccount="<blob_storage_account>"

blobStorageAccountKey=(Get-AzStorageAccountKey -ResourceGroupName myResourceGroup -AccountName $blobStorageAccount).Key1

Set-AzStorageAccount -ResourceGroupName "MyResourceGroup" -AccountName $blobStorageAccount -KeyName $blobStorageAccountKey -AllowBlobPublicAccess $false

Mengonfigurasi token SAS untuk gambar kecil

Di bagian satu seri tutorial ini, aplikasi web menunjukkan citra dari kontainer publik. Di bagian seri ini, Anda menggunakan token tanda tangan akses bersama (SAS) untuk mengambil citra gambar kecil. Token SAS memungkinkan Anda menyediakan akses terbatas ke kontainer atau blob berdasarkan IP, protokol, interval waktu, atau hak yang diizinkan. Untuk informasi selengkapnya tentang SAS, lihat Memberikan akses terbatas ke sumber daya Azure Storage dengan menggunakan tanda tangan akses bersama (SAS).

Dalam contoh ini, repositori kode sumber menggunakan cabang sasTokens, yang memiliki sampel kode yang diperbarui. Hapus penyebaran GitHub yang ada dengan penghapusan sumber penyebaran webapp az. Konfigurasikan penyebaran GitHub ke aplikasi web dengan perintah konfigurasi sumber penyebaran webapp az.

Dalam perintah berikut, <web-app> adalah nama aplikasi web Anda.

az webapp deployment source delete --name <web-app> --resource-group myResourceGroup

az webapp deployment source config --name <web_app> \
    --resource-group myResourceGroup --branch sasTokens --manual-integration \
    --repo-url https://github.com/Azure-Samples/storage-blob-upload-from-webapp
az webapp deployment source delete --name <web-app> --resource-group myResourceGroup

az webapp deployment source config --name <web_app> `
    --resource-group myResourceGroup --branch sasTokens --manual-integration `
    --repo-url https://github.com/Azure-Samples/storage-blob-upload-from-webapp

Cabang sasTokens repositori memperbarui file StorageHelper.cs. File ini mengganti tugas GetThumbNailUrls dengan contoh kode di bawah ini. Tugas yang diperbarui mengambil URL gambar kecil dengan menggunakan BlobSasBuilder untuk menentukan waktu mulai, waktu kedaluwarsa, dan izin untuk token SAS. Setelah disebarkan, aplikasi web sekarang mengambil gambar kecil dengan URL menggunakan token SAS. Tugas yang diperbarui ditampilkan dalam contoh berikut:

public static async Task<List<string>> GetThumbNailUrls(AzureStorageConfig _storageConfig)
{
    List<string> thumbnailUrls = new List<string>();

    // Create a URI to the storage account
    Uri accountUri = new Uri("https://" + _storageConfig.AccountName + ".blob.core.windows.net/");

    // Create BlobServiceClient from the account URI
    BlobServiceClient blobServiceClient = new BlobServiceClient(accountUri);

    // Get reference to the container
    BlobContainerClient container = blobServiceClient.GetBlobContainerClient(_storageConfig.ThumbnailContainer);

    if (container.Exists())
    {
        // Set the expiration time and permissions for the container.
        // In this case, the start time is specified as a few 
        // minutes in the past, to mitigate clock skew.
        // The shared access signature will be valid immediately.
        BlobSasBuilder sas = new BlobSasBuilder
        {
            Resource = "c",
            BlobContainerName = _storageConfig.ThumbnailContainer,
            StartsOn = DateTimeOffset.UtcNow.AddMinutes(-5),
            ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
        };

        sas.SetPermissions(BlobContainerSasPermissions.All);

        // Create StorageSharedKeyCredentials object by reading
        // the values from the configuration (appsettings.json)
        StorageSharedKeyCredential storageCredential =
            new StorageSharedKeyCredential(_storageConfig.AccountName, _storageConfig.AccountKey);

        // Create a SAS URI to the storage account
        UriBuilder sasUri = new UriBuilder(accountUri);
        sasUri.Query = sas.ToSasQueryParameters(storageCredential).ToString();

        foreach (BlobItem blob in container.GetBlobs())
        {
            // Create the URI using the SAS query token.
            string sasBlobUri = container.Uri + "/" +
                                blob.Name + sasUri.Query;

            //Return the URI string for the container, including the SAS token.
            thumbnailUrls.Add(sasBlobUri);
        }
    }
    return await Task.FromResult(thumbnailUrls);
}

Kelas. properti, dan metode berikut digunakan dalam tugas sebelumnya:

Kelas Properti Metode
KredensialKunciBersamaPenyimpanan
KlienLayananBlob DapatkanKlienKontainerBlob
KlienKontainerBlob Uri Ada
DapatkanBlob
PembangunSasBlob AturIzin
ParameterKueriKeSas
ItemBlob Nama
PembangunUri Kueri
Daftar Tambah

Enkripsi Microsoft Azure Storage

Enkripsi Microsoft Azure Storage membantu Anda melindungi dan mengamankan data Anda dengan mengenkripsi data saat diam dan dengan menangani enkripsi dan dekripsi. Semua data dienkripsi menggunakan enkripsi AES 256-bit, salah satu cipher blok terkuat yang tersedia.

Anda dapat memilih agar Microsoft mengelola kunci enkripsi, atau Anda dapat membawa kunci Anda sendiri dengan kunci yang dikelola pelanggan yang disimpan di Azure Key Vault atau Key Vault Managed Hardware Security Model (HSM) (pratinjau). Untuk informasi selengkapnya, lihat Kunci yang dikelola pelanggan untuk enkripsi Microsoft Azure Storage.

Enkripsi Microsoft Azure Storage secara otomatis mengenkripsi data di semua tingkat kinerja (Standar dan Premium), semua model penyebaran (Azure Resource Manager dan Klasik), dan semua layanan Microsoft Azure Storage (Blob, Antrean, Tabel, dan File).

Mengaktifkan HTTPS saja

Untuk memastikan bahwa permintaan data ke dan dari akun penyimpanan aman, Anda hanya dapat membatasi permintaan ke HTTPS saja. Perbarui protokol yang diperlukan akun penyimpanan dengan menggunakan perintah pembaruan akun penyimpanan az.

az storage account update --resource-group myresourcegroup --name <storage-account-name> --https-only true

Uji koneksi menggunakan curl menggunakan protokol HTTP.

curl http://<storage-account-name>.blob.core.windows.net/<container>/<blob-name> -I

Sekarang setelah transfer aman diperlukan, Anda menerima pesan berikut:

HTTP/1.1 400 The account being accessed does not support http.

Langkah berikutnya

Di bagian tiga seri ini, Anda mempelajari cara mengamankan akses ke akun penyimpanan, seperti cara:

  • Menggunakan token SAS untuk mengakses gambar kecil
  • Mengaktifkan enkripsi sisi server
  • Mengaktifkan transportasi HTTPS-saja

Lanjutkan ke bagian empat seri ini untuk mempelajari cara memantau dan memecahkan masalah aplikasi penyimpanan cloud.