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.
Untuk sepenuhnya mengamankan sumber daya menggunakan kontrol akses berbasis atribut Azure (Azure ABAC), Anda juga harus melindungi atribut yang digunakan dalam kondisi penetapan peran Azure. Misalnya, jika kondisi Anda didasarkan pada jalur file, maka Anda harus menyadari bahwa akses dapat disusupi jika prinsipal memiliki izin yang tidak dibatasi untuk mengganti nama jalur file.
Artikel ini menjelaskan pertimbangan keamanan yang harus Anda perhitungkan dalam kondisi penetapan peran Anda.
Penting
Kontrol akses berbasis atribut Azure (Azure ABAC) sekarang tersedia secara umum (GA) untuk mengendalikan akses ke Azure Blob Storage, Azure Data Lake Storage Gen2, dan Azure Queues dengan menggunakan atribut request, resource, environment, dan principal pada tingkat kinerja akun penyimpanan standar dan premium. Saat ini, atribut permintaan daftar blob dan atribut permintaan cuplikan untuk namespace hierarkis sedang dalam PRATINJAU. Untuk informasi lengkap tentang status fitur 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:
- Otorisasi Kunci Bersama
- Tanda tangan akses bersama akun (SAS)
- Layanan SAS.
Demikian pula, kondisi tidak dievaluasi ketika akses diberikan menggunakan daftar kontrol akses (ACL) di akun penyimpanan dengan namespace hierarkis (HNS).
Anda dapat mencegah kunci bersama, SAS tingkat akun, dan otorisasi SAS tingkat layanan dengan menonaktifkan otorisasi kunci bersama untuk akun penyimpanan Anda. Karena SAS yang didelegasikan untuk pengguna bergantung pada Azure RBAC, kondisi penetapan peran dievaluasi saat menggunakan metode otorisasi ini.
Mengamankan atribut penyimpanan yang digunakan dalam kondisi
Jalur blob
Saat menggunakan jalur blob sebagai atribut @Resource untuk suatu kondisi, Anda juga harus mencegah pengguna mengganti nama blob untuk mendapatkan akses ke file saat menggunakan akun yang memiliki namespace hierarkis. Misalnya, jika Anda ingin menulis kondisi berdasarkan jalur blob, Anda juga harus 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 Path Create API. |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
Tindakan ini memungkinkan akses ke berbagai sistem file dan operasi jalur. |
Penanda Indeks Blob
Blob index tags digunakan sebagai atribut bebas untuk kondisi dalam penyimpanan. Jika Anda menulis kondisi akses apa pun dengan menggunakan tag ini, Anda juga harus melindungi tag itu sendiri. Secara khusus, Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write DataAction memungkinkan pengguna untuk memodifikasi tag pada objek penyimpanan. Anda dapat membatasi tindakan ini untuk mencegah pengguna memanipulasi kunci atau nilai tag untuk mendapatkan akses ke objek yang tidak sah.
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 @Request kondisi pada operasi penulisan blob untuk mengharuskan tag indeks ditetapkan secara bersamaan dalam operasi pembaruan. Pendekatan ini dapat membantu mengamankan data sejak saat data ditulis ke penyimpanan.
Tag pada blob yang telah 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 menyalin tag juga.
Tag pada cuplikan
Tag pada cuplikan 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 dimodifikasi setelah rekam jepret diambil, cakupan akses mungkin berbeda untuk blob dasar dan rekam jepret.
Tag pada versi blob
Tag indeks blob tidak disalin saat versi blob dibuat melalui API Put Blob, Put Block List , atau Copy Blob . Anda dapat menentukan tag melalui header untuk API ini.
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 blob dan semua versinya menggunakan tag, Anda harus memperbarui tag pada setiap versi.
Batasan kueri dan pemfilteran untuk versi dan cuplikan
Saat Anda menggunakan tag untuk mengkueri dan memfilter blob dalam kontainer, hanya blob dasar yang disertakan dalam respons. Versi blob atau rekam jepret dengan kunci dan nilai yang diminta tidak disertakan.
Peran dan izin
Jika Anda menggunakan kondisi penetapan peran untuk peran bawaan Azure, Anda harus meninjau semua izin yang diberikan peran kepada prinsipal dengan cermat.
Penugasan peran yang diwariskan
Penetapan peran dapat dikonfigurasi untuk grup manajemen, langganan, grup sumber daya, akun penyimpanan, atau kontainer, dan diwarisi di setiap tingkat dalam urutan yang dinyatakan. Azure RBAC memiliki model yang bersifat aditif, sehingga izin yang efektif adalah akumulasi penetapan peran di setiap tingkat. Jika prinsipal memiliki izin yang sama yang ditetapkan kepada mereka melalui beberapa penetapan peran, maka akses untuk operasi menggunakan izin tersebut dievaluasi secara terpisah untuk setiap penugasan pada setiap tingkatan.
Karena kondisi diterapkan sebagai kondisi pada penetapan peran, setiap penetapan peran tanpa syarat dapat memungkinkan pengguna untuk melewati kondisi. Misalkan Anda menetapkan peran Kontributor Data Blob Penyimpanan kepada pengguna untuk akun penyimpanan serta pada langganan, tetapi menambahkan kondisi hanya pada penugasan untuk akun penyimpanan. 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
Banyak operasi yang menulis blob memerlukan izin 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 izin kepada prinsipal keamanan.
Saat Anda menentukan kondisi penetapan peran pada peran ini, Anda harus menggunakan kondisi yang identik pada kedua izin ini untuk memastikan pembatasan akses yang konsisten untuk operasi tulis.
Tindakan untuk Menyalin Blob dan Menyalin Blob dari URL
Untuk operasi Salin Blob dan Salin Blob Dari URL , @Request kondisi menggunakan jalur blob sebagai atribut pada Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write tindakan dan suboperasinya dievaluasi hanya untuk blob tujuan.
Untuk syarat pada blob sumber, @Resource syarat pada Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read aksi dievaluasi.