Contoh 2: RBAC Dasar dengan Izin Terverifikasi dan Cedar - AWS Bimbingan Preskriptif

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

Contoh 2: RBAC Dasar dengan Izin Terverifikasi dan Cedar

Contoh ini menggunakan Izin Terverifikasi dan Cedar untuk mendemonstrasikan RBAC dasar. Seperti disebutkan sebelumnya, konstruksi dasar Cedar adalah entitas. Pengembang mendefinisikan entitas mereka sendiri dan secara opsional dapat membuat hubungan antar entitas. Contoh berikut mencakup tiga jenis entitas:Users,Roles, danProblems. Studentsdan Teachers dapat dianggap entitas dari jenis Role, dan masing-masing User dapat dikaitkan dengan nol atau salah satuRoles.

Contoh implementasi RBAC dasar dengan Izin Terverifikasi Amazon dan Cedar untuk mengimplementasikan PDP

Di Cedar, hubungan ini diekspresikan dengan menghubungkan Role Student ke User Bob sebagai induknya. Asosiasi ini secara logis mengelompokkan semua pengguna siswa dalam satu kelompok. Untuk informasi lebih lanjut tentang pengelompokan di Cedar, lihat dokumentasi Cedar.

Kebijakan berikut mengevaluasi keputusan untuk tindakan ALLOW submitProblem, untuk semua kepala sekolah yang terkait dengan kelompok Students logis dari jenis tersebut. Role

permit ( principal in ElearningApp::Role::"Students", action == ElearningApp::Action::"submitProblem", resource );

Kebijakan berikut mengevaluasi keputusan ALLOW untuk tindakan submitProblem atauanswerProblem, untuk semua prinsip yang terkait dengan kelompok Teachers logis dari jenis tersebut. Role

permit ( principal in ElearningApp::Role::"Teachers", action in [ ElearningApp::Action::"submitProblem", ElearningApp::Action::"answerProblem" ], resource );

Untuk mengevaluasi permintaan dengan kebijakan ini, mesin evaluasi perlu mengetahui apakah prinsipal yang dirujuk dalam permintaan otorisasi adalah anggota kelompok yang sesuai. Oleh karena itu, aplikasi harus meneruskan informasi keanggotaan grup yang relevan ke mesin evaluasi sebagai bagian dari permintaan otorisasi. Ini dilakukan melalui entities properti, yang memungkinkan Anda untuk menyediakan mesin evaluasi Cedar dengan atribut dan data keanggotaan grup untuk kepala sekolah dan sumber daya yang terlibat dalam panggilan otorisasi. Dalam kode berikut, keanggotaan grup ditunjukkan dengan mendefinisikan User::"Bob" sebagai orang tua yang dipanggilRole::"Students".

{ "policyStoreId": "ELEARNING_POLICYSTOREID", "principal": { "entityType": "ElearningApp::User", "entityId": "Bob" }, "action": { "actionType": "ElearningApp::Action", "actionId": "answerProblem" }, "resource": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "entities": { "entityList": [ { "identifier": { "entityType": "ElearningApp::User", "entityId": "Bob" }, "attributes": {}, "parents": [ { "entityType": "ElearningApp::Role", "entityId": "Students" } ] }, { "identifier": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "attributes": {}, "parents": [] } ] } }

Dalam contoh ini, Bob adalah pengguna yang masuk yang membuat answerProblem permintaan. Oleh karena itu, Bob adalah prinsipal dan entitas adalah tipeUser. Tindakan yang Bob coba lakukan adalahanswerProblem. Untuk mengevaluasi apakah Bob dapat melakukan answerProblem tindakan, Anda perlu menyediakan struktur entitas yang menghubungkan entitas User dengan nilai Bob dan menetapkan keanggotaan grupnya dengan mencantumkan entitas induk sebagaiRole::"Students". Karena entitas dalam grup pengguna hanya Role::"Students" diizinkan untuk melakukan tindakansubmitProblem, permintaan otorisasi ini akan dievaluasi. DENY

Di sisi lain, jika tipe User yang memiliki nilai Alice dan merupakan bagian dari grup Role::"Teachers" mencoba melakukan answerProblem tindakan, permintaan otorisasi mengevaluasiALLOW, karena kebijakan menentukan bahwa kepala sekolah dalam grup Role::"Teachers" diizinkan untuk melakukan tindakan pada semua sumber daya. answerProblem Kode berikut menunjukkan jenis permintaan otorisasi yang mengevaluasi. ALLOW

{ "policyStoreId": "ELEARNING_POLICYSTOREID", "principal": { "entityType": "ElearningApp::User", "entityId": "Alice" }, "action": { "actionType": "ElearningApp::Action", "actionId": "answerProblem" }, "resource": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "entities": { "entityList": [ { "identifier": { "entityType": "ElearningApp::User", "entityId": "Alice" }, "attributes": {}, "parents": [ { "entityType": "ElearningApp::Role", "entityId": "Teachers" } ] }, { "identifier": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "attributes": {}, "parents": [] } ] } }