Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh 1: ABAC Dasar dengan Izin Terverifikasi dan Cedar
Dalam skenario contoh ini, Izin Terverifikasi Amazon digunakan untuk menentukan pengguna mana yang diizinkan mengakses informasi dalam layanan mikro Payroll fiksi. Bagian ini mencakup cuplikan kode Cedar untuk menunjukkan bagaimana Anda dapat menggunakan Cedar untuk membuat keputusan kontrol akses. Contoh-contoh ini tidak dimaksudkan untuk memberikan eksplorasi penuh atas kemampuan yang disediakan oleh Cedar dan Izin Terverifikasi. Untuk ikhtisar Cedar yang lebih menyeluruh, lihat dokumentasi Cedar
Dalam diagram berikut, kami ingin menegakkan dua aturan bisnis umum yang terkait dengan viewSalary
GET
metode ini: Karyawan dapat melihat gaji mereka sendiri dan Karyawan dapat melihat gaji siapa saja yang melapor kepada mereka. Anda dapat menerapkan aturan bisnis ini dengan menggunakan kebijakan Izin Terverifikasi.

Karyawan dapat melihat gaji mereka sendiri.
Dalam Cedar, konstruksi dasar adalah entitas, yang mewakili prinsip, tindakan, atau sumber daya. Untuk membuat permintaan otorisasi dan memulai evaluasi dengan kebijakan Izin Terverifikasi, Anda perlu memberikan prinsipal, tindakan, sumber daya, dan daftar entitas.
-
Principal (
principal
) adalah pengguna atau peran yang masuk. -
Action (
action
) adalah operasi yang dievaluasi oleh permintaan. -
Resource (
resource
) adalah komponen yang diakses oleh tindakan. -
Daftar entitas (
entityList
) berisi semua entitas yang diperlukan untuk mengevaluasi permintaan.
Untuk memenuhi aturan bisnis Karyawan dapat melihat gaji mereka sendiri, Anda dapat memberikan kebijakan Izin Terverifikasi seperti berikut ini.
permit ( principal, action == Action::"viewSalary", resource ) when { principal == resource.owner };
Kebijakan ini mengevaluasi ALLOW
apakah Action
is viewSalary
dan sumber daya dalam permintaan memiliki pemilik atribut yang sama dengan prinsipal. Misalnya, jika Bob adalah pengguna yang masuk yang meminta laporan gaji dan juga pemilik laporan gaji, kebijakan akan mengevaluasiALLOW
.
Permintaan otorisasi berikut diserahkan ke Izin Terverifikasi untuk dievaluasi oleh kebijakan sampel. Dalam contoh ini, Bob adalah pengguna yang masuk yang membuat viewSalary
permintaan. Oleh karena itu, Bob adalah prinsipal dari tipe entitasEmployee
. Tindakan yang coba dilakukan Bob adalah viewSalary,
dan sumber daya yang viewSalary
akan ditampilkan adalah Salary-Bob
dengan jenisnyaSalary
. Untuk mengevaluasi apakah Bob dapat melihat Salary-Bob
sumber daya, Anda perlu menyediakan struktur entitas yang menghubungkan tipe Employee
dengan nilai Bob
(prinsipal) ke atribut pemilik sumber daya yang memiliki tipeSalary
. Anda menyediakan struktur ini dientityList
, di mana atribut yang terkait dengan Salary
menyertakan pemilik, yang menentukan entityIdentifier
yang berisi tipe Employee
dan nilaiBob
. Izin Terverifikasi membandingkan yang principal
disediakan dalam permintaan otorisasi dengan owner
atribut yang terkait dengan Salary
sumber daya untuk membuat keputusan.
{ "policyStoreId": "PAYROLLAPP_POLICYSTOREID", "principal": { "entityType": "PayrollApp::Employee", "entityId": "Bob" }, "action": { "actionType": "PayrollApp::Action", "actionId": "viewSalary" }, "resource": { "entityType": "PayrollApp::Salary", "entityId": "Salary-Bob" }, "entities": { "entityList": [ { "identifier": { "entityType": "PayrollApp::Salary", "entityId": "Salary-Bob" }, "attributes": { "owner": { "entityIdentifier": { "entityType": "PayrollApp::Employee", "entityId": "Bob" } } } }, { "identifier": { "entityType": "PayrollApp::Employee", "entityId": "Bob" }, "attributes": {} } ] } }
Permintaan otorisasi untuk Izin Terverifikasi mengembalikan berikut ini sebagai output, di mana atributnya decision
adalah salah satu atauALLOW
. DENY
{ "determiningPolicies": [ { "determiningPolicyId": "PAYROLLAPP_POLICYSTOREID" } ], "decision": "ALLOW", "errors": [] }
Dalam hal ini, karena Bob mencoba melihat gajinya sendiri, permintaan otorisasi yang dikirim ke Izin Terverifikasi mengevaluasi. ALLOW
Namun, tujuan kami adalah menggunakan Izin Terverifikasi untuk menegakkan dua aturan bisnis. Aturan bisnis yang menyatakan hal-hal berikut juga harus benar:
Karyawan dapat melihat gaji siapa saja yang melapor kepada mereka.
Untuk memenuhi aturan bisnis ini, Anda dapat memberikan kebijakan lain. Kebijakan berikut mengevaluasi ALLOW
apakah tindakan tersebut viewSalary
dan sumber daya dalam permintaan memiliki atribut owner.manager
yang sama dengan prinsipal. Misalnya, jika Alice adalah pengguna yang masuk yang meminta laporan gaji dan Alice adalah manajer pemilik laporan, kebijakan tersebut akan dievaluasi. ALLOW
permit ( principal, action == Action::"viewSalary", resource ) when { principal == resource.owner.manager };
Permintaan otorisasi berikut diserahkan ke Izin Terverifikasi untuk dievaluasi oleh kebijakan sampel. Dalam contoh ini, Alice adalah pengguna yang masuk yang membuat viewSalary
permintaan. Oleh karena itu Alice adalah kepala sekolah dan entitas adalah tipeEmployee
. Tindakan yang Alice coba lakukan adalahviewSalary
, dan sumber daya yang viewSalary
akan ditampilkan adalah tipe Salary
dengan nilai. Salary-Bob
Untuk mengevaluasi apakah Alice dapat melihat Salary-Bob
sumber daya, Anda perlu menyediakan struktur entitas yang menghubungkan tipe Employee
dengan nilai manager
atribut, yang kemudian harus dikaitkan dengan owner
atribut tipe Salary
dengan nilaiSalary-Bob
. Alice
Anda menyediakan struktur ini dientityList
, di mana atribut yang terkait dengan Salary
menyertakan pemilik, yang menentukan entityIdentifier
yang berisi tipe Employee
dan nilaiBob
. Izin Terverifikasi terlebih dahulu memeriksa owner
atribut, yang mengevaluasi tipe Employee
dan nilainya. Bob
Kemudian, Izin Terverifikasi mengevaluasi manager
atribut yang terkait dengan Employee
dan membandingkannya dengan prinsipal yang disediakan untuk membuat keputusan otorisasi. Dalam hal ini, keputusannya adalah ALLOW
karena resource.owner.manager
atribut principal
dan setara.
{ "policyStoreId": "PAYROLLAPP_POLICYSTOREID", "principal": { "entityType": "PayrollApp::Employee", "entityId": "Alice" }, "action": { "actionType": "PayrollApp::Action", "actionId": "viewSalary" }, "resource": { "entityType": "PayrollApp::Salary", "entityId": "Salary-Bob" }, "entities": { "entityList": [ { "identifier": { "entityType": "PayrollApp::Employee", "entityId": "Alice" }, "attributes": { "manager": { "entityIdentifier": { "entityType": "PayrollApp::Employee", "entityId": "None" } } }, "parents": [] }, { "identifier": { "entityType": "PayrollApp::Salary", "entityId": "Salary-Bob" }, "attributes": { "owner": { "entityIdentifier": { "entityType": "PayrollApp::Employee", "entityId": "Bob" } } }, "parents": [] }, { "identifier": { "entityType": "PayrollApp::Employee", "entityId": "Bob" }, "attributes": { "manager": { "entityIdentifier": { "entityType": "PayrollApp::Employee", "entityId": "Alice" } } }, "parents": [] } ] } }
Sejauh ini dalam contoh ini, kami memberikan dua aturan bisnis yang terkait dengan viewSalary
metode ini, Karyawan dapat melihat gaji mereka sendiri dan Karyawan dapat melihat gaji siapa saja yang melapor kepada mereka, ke Izin Terverifikasi sebagai kebijakan untuk memenuhi ketentuan masing-masing aturan bisnis secara independen. Anda juga dapat menggunakan satu kebijakan Izin Terverifikasi untuk memenuhi ketentuan kedua aturan bisnis:
Karyawan dapat melihat gaji mereka sendiri dan gaji siapa saja yang melapor kepada mereka.
Bila Anda menggunakan permintaan otorisasi sebelumnya, kebijakan berikut akan mengevaluasi ALLOW
apakah tindakan tersebut viewSalary
dan sumber daya dalam permintaan memiliki atribut owner.manager
yang sama denganprincipal
, atau atribut owner
yang sama dengan. principal
permit ( principal, action == PayrollApp::Action::"viewSalary", resource ) when { principal == resource.owner.manager || principal == resource.owner };
Misalnya, jika Alice adalah pengguna yang masuk yang meminta laporan gaji, dan jika Alice adalah manajer pemilik atau pemilik laporan, maka kebijakan tersebut akan dievaluasi. ALLOW
Untuk informasi selengkapnya tentang menggunakan operator logis dengan kebijakan Cedar, lihat dokumentasi Cedar