Bagikan melalui


Menskalakan manajemen penetapan peran Azure dengan menggunakan kondisi dan atribut keamanan kustom

Kontrol akses berbasis peran Azure (Azure RBAC) memiliki batas penetapan peran per langganan. Jika Anda perlu membuat ratusan atau bahkan ribuan penetapan peran Azure, Anda mungkin mengalami batas ini. Mengelola ratusan atau ribuan penetapan peran mungkin adalah hal yang sulit. Bergantung pada skenario Anda, Anda mungkin dapat mengurangi jumlah penetapan peran dan membuatnya lebih mudah untuk mengelola akses.

Artikel ini menjelaskan solusi untuk menskalakan manajemen penetapan peran dengan menggunakan kondisi kontrol akses berbasis atribut Azure (Azure ABAC) dan atribut keamanan kustom Microsoft Entra untuk prinsipal.

Contoh skenario

Pertimbangkan perusahaan bernama Contoso dengan ribuan pelanggan yang ingin menyiapkan konfigurasi berikut:

  • Mendistribusikan data pelanggan di 128 akun penyimpanan untuk alasan keamanan dan performa.
  • Tambahkan 2.000 kontainer ke setiap akun penyimpanan di mana ada kontainer untuk setiap pelanggan.
  • Mewakili setiap pelanggan oleh perwakilan layanan Microsoft Entra yang unik.
  • Izinkan setiap pelanggan untuk mengakses objek dalam kontainer mereka, tetapi bukan kontainer lain.

Konfigurasi ini berpotensi memerlukan 256.000 penetapan peran Pemilik Data Blob Penyimpanan dalam langganan, yang jauh di luar batas penetapan peran. Memiliki banyak penetapan peran ini akan sulit, jika tidak mustahil, untuk dipertahankan.

Diagram showing thousands for role assignments.

Contoh solusi

Cara untuk menangani skenario ini dengan cara yang dapat dipertahankan adalah dengan menggunakan kondisi penetapan peran. Diagram berikut menunjukkan solusi untuk mengurangi 256.000 penetapan peran menjadi hanya satu penetapan peran dengan menggunakan kondisi. Penetapan peran berada pada cakupan grup sumber daya yang lebih tinggi dan kondisi membantu mengontrol akses ke kontainer. Kondisi memeriksa apakah nama kontainer cocok dengan atribut keamanan kustom pada perwakilan layanan untuk pelanggan.

Diagram showing one role assignment and a condition.

Berikut adalah ekspresi dalam kondisi yang membuat solusi ini berfungsi:

  @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
  StringEquals
  @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Contosocustomer_name]

Kondisi lengkapnya akan mirip dengan yang berikut ini. Daftar tindakan dapat disesuaikan hanya dengan tindakan yang Anda butuhkan.

(
 (
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/permanentDelete/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})
 )
 OR 
 (
  @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Contosocustomer_name]
 )
)

Mengapa menggunakan solusi ini?

Ada beberapa mekanisme kontrol akses yang dapat Anda gunakan untuk menyediakan akses ke sumber daya sarana data.

Kunci akses adalah cara umum untuk menyediakan akses ke sumber daya data plane. Kunci akses menyediakan izin baca, tulis, dan hapus kepada siapa pun yang memiliki kunci akses. Ini berarti penyerang bisa mendapatkan akses ke data sensitif Anda jika mereka bisa mendapatkan kunci akses Anda. Kunci akses tidak memiliki pengikatan identitas, tidak memiliki kedaluwarsa, dan merupakan risiko keamanan untuk disimpan.

Seperti kunci akses, token tanda tangan akses bersama (SAS) tidak memiliki pengikatan identitas, tetapi kedaluwarsa secara teratur. Kurangnya pengikatan identitas mewakili risiko keamanan yang sama seperti yang dilakukan kunci akses. Anda harus mengelola kedaluwarsa untuk memastikan bahwa klien tidak mendapatkan kesalahan. Token SAS memerlukan kode tambahan untuk mengelola dan mengoperasikan setiap hari dan dapat menjadi overhead yang signifikan bagi tim DevOps.

Azure RBAC menyediakan kontrol akses terpusat terperinci. Azure RBAC memiliki pengikatan identitas yang mengurangi risiko keamanan Anda. Menggunakan kondisi Anda berpotensi menskalakan manajemen penetapan peran dan membuat kontrol akses lebih mudah dipertahankan karena akses didasarkan pada atribut fleksibel dan dinamis.

Berikut adalah beberapa manfaat dari solusi ini:

  • Kontrol akses terpusat
  • Lebih mudah dipertahankan
  • Tidak mengandalkan kunci akses atau token SAS
  • Tidak mengharuskan Anda mengelola akses pada setiap objek
  • Dapat berpotensi meningkatkan postur keamanan Anda

Dapatkah Anda menggunakan solusi ini?

Jika Anda memiliki skenario serupa, ikuti langkah-langkah ini untuk melihat apakah Anda berpotensi menggunakan solusi ini.

Langkah 1: Tentukan apakah Anda memenuhi prasyarat

Untuk menggunakan solusi ini, Anda harus memiliki:

Langkah 2: Identifikasi atribut yang dapat Anda gunakan dalam kondisi Anda

Ada beberapa atribut yang dapat Anda gunakan dalam kondisi Anda, seperti berikut ini:

  • Nama kontainer
  • Jalur blob
  • Tag indeks blob [Kunci]
  • Tag indeks blob [Nilai dalam kunci]

Anda juga dapat menentukan atribut keamanan kustom Anda sendiri untuk pengguna, aplikasi perusahaan, dan identitas terkelola.

Untuk informasi selengkapnya, lihat Format dan sintaks kondisi penetapan peran Azure dan Apa itu atribut keamanan kustom di MICROSOFT Entra ID?.

Langkah 3: Buat kondisi pada cakupan yang lebih tinggi

Buat satu atau beberapa penetapan peran yang menggunakan kondisi pada cakupan yang lebih tinggi untuk mengelola akses. Untuk informasi selengkapnya, lihat Menambahkan atau mengedit kondisi penetapan peran Azure menggunakan portal Azure.

Langkah berikutnya