Bagikan melalui


Pertimbangan keamanan untuk kondisi penetapan peran Azure di Azure Blob Storage

Untuk melindungi sumber daya sepenuhnya menggunakan akses kontrol berbasis atribut Azure (Azure ABAC), Anda juga harus melindungi atribut yang digunakan dalam kondisi penetapan peran Azure. Misalnya, jika kondisi Anda dibuat berdasarkan jalur file, maka Anda harus waspada bahwa akses dapat ditembus jika prinsipal memiliki izin tidak terbatas untuk mengganti nama jalur file.

Artikel ini menjelaskan pertimbangan keamanan yang harus Anda perhitungkan ke dalam kondisi penetapan peran.

Penting

Kontrol akses berbasis atribut Azure (Azure ABAC) umumnya tersedia (GA) untuk mengontrol akses ke Azure Blob Storage, Azure Data Lake Storage Gen2, dan Azure Queues menggunakan requestatribut , , resourceenvironment, dan principal di tingkat performa akun penyimpanan standar dan premium. Saat ini, atribut sumber daya metadata kontainer dan blob daftar menyertakan atribut permintaan ada di PRATINJAU. Untuk informasi status fitur lengkap ABAC untuk Azure Storage, lihat Status fitur kondisi di Azure Storage.

Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.

Penggunaan mekanisme otorisasi lainnya

Kondisi penetapan peran hanya dievaluasi saat menggunakan Azure RBAC untuk otorisasi. Kondisi ini dapat dilewati jika Anda mengizinkan akses menggunakan metode otorisasi alternatif:

Demikian pula, kondisi tidak dievaluasi ketika akses diberikan menggunakan daftar kontrol akses (ACL) di akun penyimpanan dengan namespace hierarkis (HNS).

Anda dapat mencegah otorisasi kunci bersama, SAS tingkat akun, dan SAS tingkat layanan dengan menonaktifkan otorisasi kunci bersama untuk akun penyimpanan Anda. Karena SAS delegasi pengguna bergantung pada Azure RBAC, kondisi penetapan peran dievaluasi saat menggunakan metode otorisasi ini.

Melindungi atribut penyimpanan yang digunakan dalam kondisi

Jalur blob

Saat menggunakan jalur blob sebagai atribut @Resource untuk suatu kondisi, sebaiknya Anda juga mencegah pengguna untuk mengganti nama blob untuk mendapatkan akses ke suatu file saat menggunakan akun yang memiliki namespace layanan hierarkis. Contohnya, jika Anda ingin menulis kondisi berdasarkan jalur blob, sebaiknya Anda juga membatasi akses pengguna ke tindakan berikut:

Tindakan Deskripsi
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action Tindakan ini memungkinkan pelanggan untuk mengganti nama file menggunakan API Buat Jalur.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action Tindakan ini memungkinkan akses ke berbagai sistem file dan operasi jalur.

Tag indeks blob

Tag indeks blob digunakan sebagai atribut bentuk bebas untuk kondisi di dalam penyimpanan. Jika Anda menulis kondisi akses apa pun menggunakan tag ini, Anda juga harus melindungi tag itu sendiri. Khususnya, DataAction Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write memungkinkan pengguna untuk mengubah tag pada objek penyimpanan. Anda dapat membatasi tindakan ini untuk mencegah pengguna memanipulasi kunci atau nilai tag untuk mendapatkan akses ke objek yang dilarang.

Selain itu, jika tag indeks blob digunakan dalam kondisi, data mungkin rentan jika data dan tag indeks terkait diperbarui dalam operasi terpisah. Anda dapat menggunakan kondisi @Request pada operasi tulis blob untuk mengharuskan tag indeks tersebut diatur dalam operasi pembaruan yang sama. Pendekatan ini dapat membantu melindungi data sesaat setelah data ditulis ke penyimpanan.

Tag pada blob yang disalin

Secara default, tag indeks blob tidak disalin dari blob sumber ke tujuan saat Anda menggunakan Copy Blob API atau variannya. Untuk mempertahankan cakupan akses untuk blob saat disalin, sebaiknya Anda juga menyalin tag tersebut.

Tag pada snapshot

Tag pada rekam jepret blob tidak dapat dimodifikasi. Oleh karena itu, Anda harus memperbarui tag pada blob sebelum mengambil rekam jepret. Jika Anda memodifikasi tag pada blob dasar, tag pada rekam jepretnya terus memiliki nilai sebelumnya.

Jika tag pada blob dasar diubah setelah snapshot diambil, cakupan akses mungkin berbeda untuk blob dasar dan snapshot blob.

Tag pada versi blob

Tag indeks blob tidak disalin saat versi blob dibuat melalui API Masukkan Blob, Masukkan Daftar Blokir atau Salin Blob. Anda dapat menentukan tag melalui header untuk API tersebut.

Tag dapat diatur satu per satu pada blob dasar saat ini dan pada setiap versi blob. Saat Anda memodifikasi tag pada blob dasar, tag pada versi sebelumnya tidak diperbarui. Jika Anda ingin mengubah cakupan akses untuk suatu blob dan semua versinya menggunakan tag, Anda harus memperbarui tag pada setiap versi.

Batasan pengkuerian dan pemfilteran untuk versi dan snapshot

Saat Anda menggunakan tag untuk mengkueri dan memfilter blob dalam kontainer, hanya blob dasar yang disertakan dalam respons. Versi atau snapshot blob dengan kunci dan nilai yang diminta tidak disertakan.

Peran dan izin

Jika Anda menggunakan kondisi penetapan peran untuk peran bawaan Azure, sebaiknya Anda meninjau semua perizinan yang diberikan peran tersebut kepada prinsipal dengan teliti.

Penetapan peran yang diwariskan

Penetapan peran dapat dikonfigurasi untuk grup manajemen, langganan, grup sumber daya, akun penyimpanan, atau kontainer, dan diwariskan pada setiap tingkat dalam urutan yang ditentukan. Azure RBAC memiliki model tambahan, sehingga perizinan yang efektif adalah jumlah penetapan peran pada setiap tingkat. Jika prinsipal ditetapkan dengan perizinan yang sama melalui beberapa penetapan peran, maka akses untuk operasi yang menggunakan perizinan tersebut dievaluasi secara terpisah untuk setiap penetapan di setiap tingkat.

Karena kondisi diterapkan sebagai kondisi pada penetapan peran, maka semua penetapan peran tanpa syarat memungkinkan pengguna untuk melewati kondisi tersebut. Anggap saja Anda menetapkan peran Kontributor Data Blob Penyimpanan ke pengguna untuk akun penyimpanan dan pada langganan, tetapi menambahkan kondisi hanya pada penetapan untuk akun penyimpanan tersebut. Hasilnya adalah bahwa pengguna memiliki akses tidak terbatas ke akun penyimpanan melalui penetapan peran di tingkat langganan.

Oleh karena itu, Anda harus menerapkan kondisi secara konsisten untuk semua penetapan peran di seluruh hierarki sumber daya.

Pertimbangan lain

Operasi kondisi yang menulis blob

Ada banyak operasi penulisan blob yang memerlukan perizinan Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write atau Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action. Peran bawaan, seperti Pemilik Data Blob Penyimpanan dan Kontributor Data Blob Penyimpanan memberikan kedua perizinan tersebut ke prinsipal keamanan.

Saat Anda menentukan kondisi penetapan peran pada peran-peran tersebut, sebaiknya Anda menggunakan kondisi yang sama persis pada kedua perizinan tersebut untuk memastikan pembatasan akses yang konsisten untuk operasi penulisan.

Perilaku untuk Salin Blob dan Salin Blob dari URL

Untuk operasi Salin Blob dan Salin Blob dari URL, kondisi @Request menggunakan jalur blob sebagai atribut pada tindakan Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write dan suboperasinya dievaluasi hanya untuk blob tujuan.

Untuk kondisi pada blob sumber, kondisi @Resource pada tindakan Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read dievaluasi.

Lihat juga