Mencegah otorisasi Kunci Bersama untuk akun Azure Storage

Setiap permintaan aman ke akun Azure Storage harus diotorisasi. Secara default, permintaan dapat diotorisasi dengan kredensial Azure Active Directory (Azure AD), atau dengan menggunakan kunci akses akun untuk otorisasi Kunci Bersama. Dari kedua jenis otorisasi ini, Azure AD menyediakan keamanan yang unggul dan kemudahan penggunaan melalui Kunci Bersama, dan direkomendasikan oleh Microsoft. Untuk meminta klien agar menggunakan Azure Active Directory untuk mengotorisasi permintaan, Anda dapat melarang permintaan ke akun penyimpanan yang diotorisasi dengan Kunci Bersama.

Saat Anda melarang otorisasi Kunci Bersama untuk akun penyimpanan, Azure Storage menolak semua permintaan berikutnya ke akun tersebut yang diotorisasi dengan kunci akses akun. Hanya permintaan aman yang diotorisasi dengan Azure AD yang akan berhasil. Untuk informasi selengkapnya tentang cara menggunakan Azure Active Directory, lihat Mengotorisasi akses ke data di Azure Storage.

Artikel ini menjelaskan cara mendeteksi permintaan yang dikirim dengan otorisasi Kunci Bersama dan cara memulihkan otorisasi Kunci Bersama untuk akun penyimpanan Anda.

Deteksi jenis otorisasi yang digunakan oleh aplikasi klien

Saat Anda melarang otorisasi Kunci Bersama untuk akun penyimpanan, permintaan dari klien yang menggunakan kunci akses akun untuk otorisasi Kunci Bersama akan gagal. Untuk memahami bagaimana melarang otorisasi Kunci Bersama dapat memengaruhi aplikasi klien sebelum Anda melakukan perubahan ini, aktifkan pengelogan dan metrik untuk akun penyimpanan. Anda lalu dapat menganalisis pola permintaan ke akun Anda selama periode waktu tertentu untuk menentukan bagaimana permintaan diotorisasi.

Gunakan metrik untuk menentukan berapa banyak permintaan yang menerima akun penyimpanan yang diotorisasi dengan Kunci Bersama atau tanda tangan akses bersama (SAS). Gunakan log untuk menentukan klien mana yang mengirimkan permintaan tersebut.

SAS dapat diotorisasi dengan Kunci Bersama atau Azure Active Directory. Untuk informasi selengkapnya tentang menginterpretasikan permintaan yang dibuat dengan tanda tangan akses bersama, lihat Memahami cara melarang Kunci Bersama memengaruhi token SAS.

Pantau berapa banyak permintaan yang diotorisasi dengan Kunci Bersama

Untuk melacak cara permintaan diotorisasi ke akun penyimpanan, gunakan Azure Metrics Explorer di portal Azure. Untuk informasi selengkapnya tentang Metrics Explorer, lihat Mulai menggunakan Azure Metrics Explorer.

Ikuti langkah-langkah berikut untuk membuat metrik yang melacak permintaan yang dibuat dengan Kunci Bersama atau SAS:

  1. Buka akun penyimpanan Anda di portal Azure. Di bawah bagian Pemantauan, pilih Metrik.

  2. Pilih Tambahkan metrik. Dalam dialog Metrik, tentukan nilai berikut ini:

    1. Biarkan bidang Lingkup diatur ke nama akun penyimpanan.
    2. Atur Namespace Metrik ke Akun. Metrik ini akan melaporkan semua permintaan terhadap akun penyimpanan.
    3. Atur bidang Metrik ke Transaksi.
    4. Atur bidang Agregasi ke Jumlah.

    Metrik baru akan menampilkan jumlah transaksi terhadap akun penyimpanan selama interval waktu tertentu. Metrik yang dihasilkan muncul seperti yang ditunjukkan pada gambar berikut:

    Screenshot showing how to configure metric to sum transactions made with Shared Key or SAS

  3. Berikutnya, pilih tombol Tambah filter untuk membuat filter pada metrik untuk jenis otorisasi.

  4. Dalam dialog Filter, tentukan nilai berikut ini:

    1. Atur nilai Properti ke Autentikasi.
    2. Atur bidang Operator ke tanda sama dengan (=).
    3. Di bidang Nilai, pilih Kunci Akun dan SAS.
  5. Di sudut kanan atas, pilih rentang waktu yang ingin Anda lihat metriknya. Anda juga dapat menunjukkan seberapa terperinci agregasi permintaannya, dengan menentukan interval di mana saja dari 1 menit hingga 1 bulan. Misalnya, atur Rentang waktu menjadi 30 hari dan Granularitas waktu ke 1 hari untuk melihat agregasi permintaan harian selama 30 hari terakhir.

Setelah Anda mengonfigurasi metrik, permintaan ke akun penyimpanan Anda akan mulai muncul di grafik. Gambar berikut menunjukkan permintaan yang diotorisasi dengan Kunci Bersama atau dibuat dengan token SAS. Permintaan diagregasi per hari selama tiga puluh hari terakhir.

Screenshot showing aggregated requests authorized with Shared Key

Anda juga dapat mengonfigurasi aturan peringatan untuk memberi tahu ketika sejumlah permintaan tertentu yang diizinkan dengan Kunci Bersama dibuat terhadap akun penyimpanan Anda. Untuk informasi selengkapnya, lihat Membuat, menampilkan, dan mengelola peringatan metrik menggunakan Azure Monitor.

Menganalisis log untuk mengidentifikasi klien yang mengotorisasi permintaan dengan Kunci Bersama atau SAS

Log Azure Storage menangkap detail tentang permintaan yang dibuat terhadap akun penyimpanan, termasuk bagaimana permintaan diotorisasi. Anda dapat menganalisis log untuk menentukan klien mana yang mengotorisasi permintaan dengan Kunci Bersama atau token SAS.

Untuk mencatat permintaan ke akun Azure Storage Anda demi mengevaluasi cara otorisasi, Anda dapat menggunakan pengelogan Azure Storage di Azure Monitor (pratinjau). Untuk informasi selengkapnya, lihat Memantau Azure Storage.

Pengelogan Azure Storage di Azure Monitor mendukung penggunaan kueri log untuk menganalisis data log. Untuk membuat kueri log, Anda bisa menggunakan ruang kerja Azure Log Analytics. Untuk mempelajari selengkapnya tentang kueri log, lihat Tutorial: Mulai menggunakan kueri Log Analytics.

Buat pengaturan diagnostik di portal Azure

Untuk mencatat data Azure Storage dengan Azure Monitor dan menganalisisnya dengan Azure Log Analytics, Anda harus terlebih dahulu membuat pengaturan diagnostik yang menunjukkan jenis permintaan apa dan layanan penyimpanan mana yang ingin Anda catat datanya. Untuk membuat pengaturan diagnostik di portal Azure, ikuti langkah-langkah berikut ini:

  1. Buat ruang kerja Log Analytics baru di langganan yang berisi akun Azure Storage Anda, atau gunakan ruang kerja Log Analytics yang sudah ada. Setelah mengonfigurasi pengelogan untuk akun penyimpanan Anda, log akan tersedia di ruang kerja Log Analytics. Untuk informasi selengkapnya, lihat Membuat ruang kerja Log Analytics di portal Microsoft Azure.

  2. Arahkan akun penyimpanan Anda di portal Microsoft Azure.

  3. Di bagian Pemantauan, pilih Pengaturan diagnostik (pratinjau) .

  4. Pilih layanan Azure Storage yang ingin Anda catat permintaannya. Misalnya, pilih Blob untuk mencatat permintaan log ke penyimpanan Blob.

  5. Pilih Menambahkan pengaturan diagnostik.

  6. Berikan nama untuk pengaturan diagnostik.

  7. Di bawah Detail kategori, di bagian log, pilih StorageRead, StorageWrite, dan StorageDelete untuk mencatat semua permintaan data ke layanan yang dipilih.

  8. Di bawah Detail tujuan, pilih Kirim ke Log Analytics. Pilih langganan Anda dan ruang kerja Log Analytics yang Anda buat sebelumnya, seperti yang ditunjukkan pada gambar berikut.

    Screenshot showing how to create a diagnostic setting for logging requests

Anda dapat membuat pengaturan diagnostik untuk setiap jenis sumber daya Azure Storage di akun penyimpanan Anda.

Setelah Anda membuat pengaturan diagnostik, permintaan ke akun penyimpanan pun dicatat sesuai dengan pengaturan tersebut. Untuk informasi selengkapnya, lihat Buat pengaturan diagnostik untuk mengumpulkan log dan metrik sumber daya di Azure.

Untuk referensi bidang yang tersedia di log Azure Storage di Azure Monitor, lihat Log sumber daya (pratinjau).

Log kueri untuk permintaan yang dibuat dengan Kunci Bersama atau SAS

Log Azure Storage di Azure Monitor menyertakan jenis otorisasi yang digunakan untuk membuat permintaan ke akun penyimpanan. Untuk mengambil log untuk permintaan yang dibuat dalam tujuh hari terakhir yang diotorisasi dengan Kunci Bersama atau SAS, buka ruang kerja Log Analytics Anda. Berikutnya, tempelkan kueri berikut ini ke dalam kueri log baru dan jalankan. Kueri ini menampilkan sepuluh alamat IP yang paling sering dikirim permintaan yang diotorisasi dengan Kunci Bersama atau SAS:

StorageBlobLogs
| where AuthenticationType in ("AccountKey", "SAS") and TimeGenerated > ago(7d)
| summarize count() by CallerIpAddress, UserAgentHeader, AccountName
| top 10 by count_ desc

Anda juga dapat mengonfigurasi aturan peringatan berdasarkan kueri ini untuk memberi tahu Anda tentang permintaan yang diotorisasi dengan Kunci Bersama atau SAS. Untuk informasi selengkapnya, lihat Membuat, menampilkan, dan mengelola peringatan log menggunakan Azure Monitor.

Remediasi otorisasi melalui Kunci Bersama

Setelah menganalisis cara permintaan diotorisasi ke akun penyimpanan, Anda dapat mengambil tindakan untuk mencegah akses melalui Kunci Bersama. Tetapi pertama-tama, Anda perlu memperbarui aplikasi apa pun yang menggunakan otorisasi Kunci Bersama untuk menggunakan Azure AD sebagai gantinya. Anda dapat memantau log dan metrik seperti yang dijelaskan di Deteksi jenis otorisasi yang digunakan oleh aplikasi klien untuk melacak transisi. Untuk informasi selengkapnya tentang cara menggunakan Azure AD untuk mengakses data di akun penyimpanan, lihat Mengotorisasi akses ke data di Azure Storage.

Ketika yakin bahwa Anda dapat dengan aman menolak permintaan yang diotorisasi dengan Kunci Bersama, Anda dapat mengatur properti AllowSharedKeyAccess untuk akun penyimpanan ke false.

Properti AllowSharedKeyAccess tidak diatur secara default dan tidak mengembalikan nilai hingga Anda secara eksplisit mengaturnya. Akun penyimpanan mengizinkan permintaan yang diotorisasi dengan Kunci Bersama ketika nilai propertinya null atau ketika itu true.

Peringatan

Jika ada klien yang saat ini mengakses data di akun penyimpanan Anda dengan Kunci Bersama, maka Microsoft menyarankan agar Anda memigrasikan klien tersebut ke Azure AD sebelum melarang akses Kunci Bersama ke akun penyimpanan.

Untuk melarang otorisasi Kunci Bersama untuk akun penyimpanan di portal Azure, ikuti langkah-langkah berikut:

  1. Buka akun penyimpanan Anda di portal Azure.

  2. Temukan pengaturan Konfigurasi di bawah Pengaturan.

  3. Setel Izinkan akses kunci akun penyimpanan ke Nonaktif.

    Screenshot showing how to disallow Shared Key access for account

Setelah Anda melarang otorisasi Kunci Bersama, membuat permintaan ke akun penyimpanan dengan otorisasi Kunci Bersama akan gagal dengan kode galat 403 (Terlarang). Azure Storage mengembalikan kesalahan yang menunjukkan bahwa otorisasi berbasis kunci tidak diizinkan di akun penyimpanan.

Properti AllowSharedKeyAccess didukung untuk akun penyimpanan yang hanya menggunakan model penyebaran Azure Resource Manager. Untuk informasi tentang akun penyimpanan mana yang menggunakan model penyebaran Azure Resource Manager, lihat Jenis akun penyimpanan.

Pastikan bahwa akses Kunci Bersama tidak diperbolehkan

Untuk memastikan bahwa otorisasi Kunci Bersama tidak lagi diizinkan, Anda dapat mencoba memanggil operasi data dengan kunci akses akun. Contoh berikut mencoba membuat kontainer menggunakan kunci akses. Panggilan ini akan gagal ketika otorisasi Kunci Bersama tidak diizinkan untuk akun penyimpanan. Ingatlah untuk mengganti nilai placeholder dalam tanda kurung sudut dengan nilai Anda sendiri:

az storage container create \
    --account-name <storage-account> \
    --name sample-container \
    --account-key <key> \
    --auth-mode key

Catatan

Permintaan anonim tidak diizinkan dan akan dilanjutkan jika Anda telah mengonfigurasi akun penyimpanan dan kontainer untuk akses baca publik anonim. Untuk informasi selengkapnya, lihat Konfigurasikan akses baca publik anonim untuk kontainer dan blob.

Periksa pengaturan akses Kunci Bersama untuk beberapa akun

Untuk memeriksa pengaturan akses Kunci Bersama di sekumpulan akun penyimpanan dengan performa optimal, Anda dapat menggunakan Azure Resource Graph Explorer di portal Azure. Untuk mempelajari selengkapnya tentang menggunakan Resource Graph Explorer, lihat Mulai Cepat: Jalankan kueri Resource Graph pertama Anda menggunakan Azure Resource Graph Explorer.

Menjalankan kueri berikut ini di Resource Graph Explorer mengembalikan daftar akun penyimpanan dan menampilkan pengaturan akses Kunci Bersama untuk setiap akun:

resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowSharedKeyAccess = parse_json(properties).allowSharedKeyAccess
| project subscriptionId, resourceGroup, name, allowSharedKeyAccess

Izin untuk memperbolehkan atau melarang akses Kunci Bersama

Untuk mengatur properti AllowSharedKeyAccess untuk akun penyimpanan, pengguna harus memiliki izin untuk membuat dan mengelola akun penyimpanan. Peran kontrol akses berbasis peran Azure (Azure RBAC) yang memberikan izin ini mencakup tindakan Microsoft.Storage/storageAccounts/write atau Microsoft.Storage/storageAccounts/*. Peran bawaan dengan tindakan ini meliputi:

Peran ini tidak menyediakan akses ke data di akun penyimpanan melalui Azure Active Directory (Azure AD). Namun, mereka termasuk Microsoft.Storage/storageAccounts/listkeys/action, yang memberikan akses ke kunci akses akun. Dengan izin ini, pengguna dapat menggunakan kunci akses akun untuk mengakses semua data di akun penyimpanan.

Penetapan peran harus dicakup ke tingkat akun penyimpanan atau yang lebih tinggi untuk mengizinkan pengguna membolehkan atau melarang akses Kunci Bersama untuk akun penyimpanan. Untuk informasi selengkapnya tentang lingkup peran, lihat Memahami cakupan Azure RBAC.

Berhati-hatilah untuk membatasi penugasan peran ini hanya kepada mereka yang membutuhkan kemampuan untuk membuat akun penyimpanan atau memperbarui propertinya. Gunakan prinsip hak istimewa paling sedikit untuk memastikan bahwa pengguna memiliki izin terkecil yang mereka butuhkan untuk menyelesaikan tugas mereka. Untuk informasi selengkapnya tentang mengelola akses dengan Azure RBAC, lihat Praktik terbaik untuk Azure RBAC.

Catatan

Peran administrator langganan klasik Administrator Layanan dan Co-Administrator menyertakan peran Pemilik Azure Resource Manager yang setara. Peran Pemilik mencakup semua tindakan, sehingga pengguna dengan salah satu peran administratif ini juga dapat membuat dan mengelola akun penyimpanan. Untuk informasi selengkapnya, lihat Peran administrator langganan klasik, peran Azure, dan peran administrator Azure AD.

Memahami bagaimana melarang Kunci Bersama memengaruhi token SAS

Ketika akses Kunci Bersama tidak diizinkan untuk akun penyimpanan, Azure Storage menangani token SAS berdasarkan jenis SAS dan layanan yang ditargetkan oleh permintaan. Tabel berikut ini memperlihatkan bagaimana setiap jenis SAS diotorisasi dan bagaimana Penyimpanan Azure akan menangani SAS tersebut ketika properti AllowSharedKeyAccess untuk akun penyimpanannya adalah false.

Jenis SAS Jenis otorisasi Perilaku saat AllowSharedKeyAccess adalah false
Delegasi pengguna SAS (hanya penyimpanan Blob) Azure AD Permintaan diizinkan. Microsoft merekomendasikan penggunaan delegasi pengguna SAS jika memungkinkan untuk keamanan yang unggul.
SAS Layanan Kunci Bersama Permintaan ditolak untuk semua layanan Azure Storage.
SAS Akun Kunci Bersama Permintaan ditolak untuk semua layanan Azure Storage.

Metrik dan pengelogan Azure di Azure Monitor tidak membedakan antara berbagai jenis tanda tangan akses bersama. Filter SAS di Azure Metrics Explorer dan bidang SAS di pengelogan Azure Storage di Azure Monitor melaporkan permintaan yang diotorisasi dengan jenis SAS apa pun. Namun, berbagai jenis tanda tangan akses bersama diotorisasi secara berbeda, dan berperilaku berbeda ketika akses Kunci Bersama tidak diizinkan:

  • Token SAS layanan atau token SAS akun diotorisasi dengan Kunci Bersama dan tidak akan diizinkan atas permintaan ke penyimpanan Blob ketika properti AllowSharedKeyAccess adalah false.
  • Delegasi pengguna SAS diotorisasi dengan Azure AD dan akan diizinkan berdasarkan permintaan ke penyimpanan Blob ketika properti AllowSharedKeyAccess adalah false.

Ketika Anda mengevaluasi lalu lintas ke akun penyimpanan Anda, ingatlah bahwa metrik dan log seperti yang dijelaskan dalam Deteksi jenis otorisasi yang digunakan oleh aplikasi klien dapat mencakup permintaan yang dibuat dengan delegasi pengguna SAS.

Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Berikan akses terbatas ke sumber daya Azure Storage dengan menggunakan tanda tangan akses bersama (SAS).

Pertimbangkan kompatibilitas dengan alat dan layanan Azure lainnya

Sejumlah layanan Azure menggunakan otorisasi Kunci Bersama untuk berkomunikasi dengan Azure Storage. Jika Anda melarang otorisasi Kunci Bersama untuk akun penyimpanan, layanan ini tidak akan dapat mengakses data di akun tersebut, dan aplikasi Anda mungkin terpengaruh secara merugikan.

Beberapa alat Azure menawarkan opsi untuk menggunakan otorisasi Azure AD untuk mengakses Azure Storage. Tabel berikut ini mencantumkan beberapa alat dan catatan Azure populer yang bisa dan tidak bisa menggunakan Azure AD untuk mengotorisasi permintaan ke Azure Storage.

Alat Azure Otorisasi Azure AD ke Azure Storage
portal Microsoft Azure Didukung. Untuk informasi tentang otorisasi dengan akun Azure AD Anda dari portal Azure, lihat Memilih cara mengotorisasi akses ke data blob di portal Azure.
AzCopy Didukung untuk penyimpanan Blob. Untuk informasi tentang mengotorisasi operasi AzCopy, lihat Memilih cara memberikan kredensial otorisasi dalam dokumentasi AzCopy.
Azure Storage Explorer Didukung hanya untuk penyimpanan Blob dan Azure Data Lake Storage Gen2. Akses Azure AD ke penyimpanan Antrean tidak didukung. Pastikan untuk memilih penyewa Azure AD yang benar. Untuk informasi selengkapnya, lihat Mulai menggunakan Storage Explorer
Azure PowerShell Didukung. Untuk informasi tentang cara mengotorisasi perintah PowerShell untuk operasi blob atau antrean dengan Azure AD, lihat Menjalankan perintah PowerShell dengan kredensial Azure AD untuk mengakses data blob atau Menjalankan perintah PowerShell dengan kredensial Azure AD untuk mengakses data antrean.
Azure CLI Didukung. Untuk informasi tentang cara mengotorisasi perintah Azure CLI dengan Azure AD untuk akses ke data blob dan antrean, lihat Menjalankan perintah Azure CLI dengan kredensial Azure AD untuk mengakses data blob atau antrean.
Azure IoT Hub Didukung. Untuk informasi selengkapnya, lihat Dukungan IoT Hub untuk jaringan virtual.
Azure Cloud Shell Azure Cloud Shell adalah shell terintegrasi di portal Azure. Azure Cloud Shell menghosting file untuk persistensi dalam berbagi file Azure di akun penyimpanan. File-file ini akan tidak dapat diakses jika otorisasi Kunci Bersama tidak diizinkan untuk akun penyimpanan tersebut. Untuk informasi selengkapnya, lihat Sambungkan penyimpanan File Microsoft Azure Anda.

Untuk menjalankan perintah di Azure Cloud Shell untuk mengelola akun penyimpanan yang akses Kunci Bersamanya dilarang, pertama-tama pastikan bahwa Anda telah diberikan izin yang diperlukan untuk akun-akun ini melalui Azure RBAC. Untuk informasi selengkapnya, lihat Apa itu kontrol akses berbasis peran Azure (RBAC Azure)?.

Melarang otorisasi Kunci Bersama untuk menggunakan Akses Bersyarat Azure AD

Untuk melindungi akun Azure Storage dengan kebijakan Akses Bersyarat Azure AD, Anda harus melarang otorisasi Kunci Bersama untuk akun penyimpanan. Ikuti langkah-langkah yang dijelaskan dalam Mendeteksi jenis otorisasi yang digunakan oleh aplikasi klien untuk menganalisis dampak potensial dari perubahan ini untuk akun penyimpanan yang ada sebelum melarang otorisasi Kunci Bersama.

Beban kerja penyimpanan transisi Azure Files dan Table

Azure Storage mendukung otorisasi Azure AD untuk permintaan ke penyimpanan Blob dan Queue saja. Jika Anda melarang otorisasi dengan Kunci Bersama untuk akun penyimpanan, permintaan ke Azure Files atau Table yang menggunakan otorisasi Kunci Bersama akan gagal. Karena portal Azure selalu menggunakan otorisasi Kunci Bersama untuk mengakses data file dan tabel, jika Anda melarang otorisasi dengan Kunci Bersama untuk akun penyimpanan, Anda tidak akan dapat mengakses data file atau tabel di portal Azure.

Microsoft menyarankan agar Anda memigrasikan data penyimpanan Azure Files atau Table ke akun penyimpanan terpisah sebelum melarang akses ke akun melalui Kunci Bersama, atau bahwa Anda tidak menerapkan pengaturan ini ke akun penyimpanan yang mendukung beban kerja penyimpanan Azure Files atau Table.

Melarang akses Kunci Bersama untuk akun penyimpanan tidak memengaruhi koneksi SMB ke Azure Files.

Langkah berikutnya