Memungkinkan akses untuk atribut entitas (ABAC) - Izin Terverifikasi Amazon

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

Memungkinkan akses untuk atribut entitas (ABAC)

Kontrol akses berbasis atribut (ABAC) adalah strategi otorisasi yang menentukan izin berdasarkan atribut. Izin Terverifikasi memungkinkan atribut dilampirkan ke prinsip, tindakan, dan sumber daya. Atribut-atribut ini kemudian dapat direferensikan dalam when dan unless klausul kebijakan yang mengevaluasi atribut prinsip, tindakan, dan sumber daya yang membentuk konteks permintaan.

Contoh berikut menggunakan atribut yang didefinisikan dalam aplikasi hipotetis yang disebut PhotoFlash dijelaskan di bagian skema Contoh dari Panduan Referensi bahasa kebijakan Cedar.

Contoh ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan kepala sekolah mana pun di HardwareEngineering departemen dengan tingkat pekerjaan lebih besar dari atau sama dengan 5 untuk melihat dan mencantumkan foto di albumdevice_prototypes.

permit( principal, action in [Action::"listPhotos", Action::"view"], resource in Album::"device_prototypes" ) when { principal.department == "HardwareEngineering" && principal.jobLevel >= 5 };

Contoh ini menunjukkan cara Anda membuat kebijakan yang memungkinkan pengguna alice untuk melihat sumber daya jenis file apa punJPEG.

permit( principal == User::"alice", action == Action::"view", resource ) when { resource.fileType == "JPEG" };

Tindakan memiliki atribut konteks. Anda harus meneruskan atribut ini dalam context permintaan otorisasi. Contoh ini menunjukkan cara membuat kebijakan yang memungkinkan pengguna alice melakukan readOnly tindakan apa pun. Anda juga dapat mengatur appliesTo properti untuk tindakan dalam skema Anda. Ini menentukan tindakan yang valid untuk sumber daya ketika Anda ingin memastikan bahwa, misalnya, pengguna hanya dapat mencoba ViewPhoto untuk mengotorisasi sumber daya jenis. PhotoFlash::Photo

permit( principal == PhotoFlash::User::"alice", action, resource ) when { context has readOnly && context.readOnly == true };

Cara yang lebih baik untuk mengatur properti tindakan dalam skema Anda, bagaimanapun, adalah dengan mengaturnya ke dalam kelompok tindakan fungsional. Misalnya, Anda dapat membuat tindakan bernama ReadOnlyPhotoAccess dan disetel PhotoFlash::Action::"ViewPhoto" menjadi anggota ReadOnlyPhotoAccess sebagai grup tindakan. Contoh ini menunjukkan cara membuat kebijakan yang memberi Alice akses ke tindakan hanya-baca di grup tersebut.

permit( principal == PhotoFlash::User::"alice", action, resource ) when { action in PhotoFlash::Action::"ReadOnlyPhotoAccess" };

Contoh ini menunjukkan cara Anda membuat kebijakan yang memungkinkan semua kepala sekolah melakukan tindakan apa pun pada sumber daya yang memiliki atributnya. owner

permit( principal, action, resource ) when { principal == resource.owner };

Contoh ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan prinsipal mana pun untuk melihat sumber daya apa pun jika department atribut untuk prinsipal cocok dengan department atribut sumber daya.

catatan

Jika entitas tidak memiliki atribut yang disebutkan dalam kondisi kebijakan, maka kebijakan tersebut akan diabaikan saat membuat keputusan otorisasi dan evaluasi kebijakan tersebut gagal untuk entitas tersebut. Misalnya, prinsipal apa pun yang tidak memiliki department atribut tidak dapat diberikan akses ke sumber daya apa pun oleh kebijakan ini.

permit( principal, action == Action::"view", resource ) when { principal.department == resource.owner.department };

Contoh ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan prinsipal untuk melakukan tindakan apa pun pada sumber daya jika prinsipal adalah sumber daya ATAU jika prinsipal adalah bagian dari admins grup untuk sumber daya tersebut. owner

permit( principal, action, resource, ) when { principal == resource.owner || resource.admins.contains(principal) };