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
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) };