Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Contoh 4: Kontrol akses multi-tenant dengan RBAC dan ABAC

Mode fokus
Contoh 4: Kontrol akses multi-tenant dengan RBAC dan ABAC - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk menyempurnakan contoh RBAC di bagian sebelumnya, Anda dapat menambahkan atribut ke pengguna untuk membuat pendekatan hybrid RBAC-ABAC untuk kontrol akses multi-tenant. Contoh ini mencakup peran yang sama dari contoh sebelumnya, tetapi menambahkan atribut pengguna account_lockout_flag dan parameter konteksuses_mfa. Contoh ini juga mengambil pendekatan yang berbeda untuk menerapkan kontrol akses multi-penyewa dengan menggunakan RBAC dan ABAC, dan menggunakan satu penyimpanan kebijakan bersama alih-alih penyimpanan kebijakan yang berbeda untuk setiap penyewa.

Contoh kontrol akses multi-penyewa dengan RBAC, ABAC, Izin Terverifikasi Amazon, dan Cedar

Contoh ini mewakili solusi SaaS multi-penyewa di mana Anda perlu memberikan keputusan otorisasi untuk Penyewa A dan Penyewa B, mirip dengan contoh sebelumnya.

Untuk mengimplementasikan fitur kunci pengguna, contoh menambahkan atribut account_lockout_flag ke prinsipal User entitas dalam permintaan otorisasi. Bendera ini mengunci akses pengguna ke sistem dan akan DENY semua hak istimewa bagi pengguna yang terkunci. account_lockout_flagAtribut dikaitkan dengan User entitas dan berlaku untuk User sampai flag dicabut secara aktif di beberapa sesi. Contoh menggunakan when kondisi untuk mengevaluasiaccount_lockout_flag.

Contoh ini juga menambahkan detail tentang permintaan dan sesi. Informasi konteks menentukan bahwa sesi telah diautentikasi dengan menggunakan otentikasi multi-faktor. Untuk mengimplementasikan validasi ini, contoh menggunakan when kondisi untuk mengevaluasi uses_mfa bendera sebagai bagian dari bidang konteks. Untuk informasi selengkapnya tentang praktik terbaik untuk menambahkan konteks, lihat dokumentasi Cedar.

permit ( principal in MultitenantApp::Role::"allAccessRole", action in [ MultitenantApp::Action::"viewData", MultitenantApp::Action::"updateData" ], resource ) when { principal.account_lockout_flag == false && context.uses_mfa == true && resource in principal.Tenant };

Kebijakan ini mencegah akses ke sumber daya kecuali sumber daya berada dalam grup yang sama dengan Tenant atribut prinsipal yang meminta. Pendekatan untuk mempertahankan isolasi penyewa ini disebut sebagai pendekatan One Shared Multi-Tenant Policy Store. Untuk informasi selengkapnya tentang pertimbangan desain Izin Terverifikasi untuk aplikasi SaaS multi-penyewa, lihat bagian pertimbangan desain multi-penyewa Izin Terverifikasi.

Kebijakan ini juga memastikan bahwa kepala sekolah adalah anggota allAccessRole dan membatasi tindakan untuk viewData danupdateData. Selain itu, kebijakan ini memverifikasi account_lockout_flag itu false dan bahwa nilai konteks untuk uses_mfa mengevaluasi. true

Demikian pula, kebijakan berikut memastikan bahwa prinsipal dan sumber daya terkait dengan penyewa yang sama, yang mencegah akses lintas penyewa. Kebijakan ini juga memastikan bahwa kepala sekolah adalah anggota viewDataRole dan membatasi tindakan untukviewData. Selain itu, ini memverifikasi bahwa account_lockout_flag adalah false dan bahwa nilai konteks untuk uses_mfa dievaluasi. true

permit ( principal in MultitenantApp::Role::"viewDataRole", action == MultitenantApp::Action::"viewData", resource ) when { principal.account_lockout_flag == false && context.uses_mfa == true && resource in principal.Tenant };

Kebijakan ketiga mirip dengan yang sebelumnya. Kebijakan mengharuskan sumber daya untuk menjadi anggota grup yang sesuai dengan entitas yang diwakili olehprincipal.Tenant. Ini memastikan bahwa prinsipal dan sumber daya terkait dengan Penyewa B, yang mencegah akses lintas penyewa. Kebijakan ini memastikan bahwa kepala sekolah adalah anggota updateDataRole dan membatasi tindakan untukupdateData. Selain itu, kebijakan ini memverifikasi bahwa account_lockout_flag adalah false dan bahwa nilai konteks untuk uses_mfa dievaluasi. true

permit ( principal in MultitenantApp::Role::"updateDataRole", action == MultitenantApp::Action::"updateData", resource ) when { principal.account_lockout_flag == false && context.uses_mfa == true && resource in principal.Tenant };

Permintaan otorisasi berikut dievaluasi oleh tiga kebijakan yang dibahas sebelumnya di bagian ini. Dalam permintaan otorisasi ini, kepala sekolah tipe User dan dengan nilai Alice membuat updateData permintaan dengan peran allAccessRole tersebut. Alicememiliki atribut Tenant yang nilainyaTenant::"TenantA". Tindakan Alice yang coba dilakukan adalah updateData, dan sumber daya yang akan diterapkan adalah SampleData dari jenisnyaData. SampleDatamemiliki TenantA sebagai entitas induk.

Menurut kebijakan pertama di toko <DATAMICROSERVICE_POLICYSTOREID> kebijakan, Alice dapat melakukan updateData tindakan pada sumber daya, dengan asumsi bahwa kondisi dalam when klausul kebijakan terpenuhi. Kondisi pertama membutuhkan principal.Tenant atribut untuk dievaluasiTenantA. Kondisi kedua membutuhkan atribut kepala sekolah account_lockout_flag untuk menjadifalse. Kondisi akhir membutuhkan konteksnya uses_mfatrue. Karena ketiga kondisi terpenuhi, permintaan mengembalikan ALLOW keputusan.

{ "policyStoreId": "DATAMICROSERVICE_POLICYSTORE", "principal": { "entityType": "MultitenantApp::User", "entityId": "Alice" }, "action": { "actionType": "MultitenantApp::Action", "actionId": "updateData" }, "resource": { "entityType": "MultitenantApp::Data", "entityId": "SampleData" }, "context": { "contextMap": { "uses_mfa": { "boolean": true } } }, "entities": { "entityList": [ { "identifier": { "entityType": "MultitenantApp::User", "entityId": "Alice" }, "attributes": { { "account_lockout_flag": { "boolean": false }, "Tenant": { "entityIdentifier": { "entityType":"MultitenantApp::Tenant", "entityId":"TenantA" } } } }, "parents": [ { "entityType": "MultitenantApp::Role", "entityId": "allAccessRole" } ] }, { "identifier": { "entityType": "MultitenantApp::Data", "entityId": "SampleData" }, "attributes": {}, "parents": [ { "entityType": "MultitenantApp::Tenant", "entityId": "TenantA" } ] } ] } }
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.