Kebijakan contoh Izin Terverifikasi Amazon - Izin Terverifikasi Amazon

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

Kebijakan contoh Izin Terverifikasi Amazon

Contoh kebijakan Izin Terverifikasi berikut didasarkan pada skema yang ditentukan untuk aplikasi hipotetis yang disebut PhotoFlash dijelaskan di bagian skema Contoh dari Panduan Referensi bahasa kebijakan Cedar. Untuk informasi selengkapnya tentang sintaks kebijakan Cedar, lihat Konstruksi kebijakan dasar di Cedar dalam Panduan Referensi bahasa kebijakan Cedar.

Memungkinkan akses ke entitas individu

Contoh berikut ini menunjukkan cara membuat kebijakan yang memungkinkan pengguna alice untuk melihat fotoVacationPhoto94.jpg.

permit( principal == User::"alice", action == Action::"view", resource == Photo::"VacationPhoto94.jpg" );

Memungkinkan akses ke grup entitas

Contoh berikut ini menunjukkan cara membuat kebijakan yang memungkinkan siapa pun dalam grup alice_friends untuk melihat fotoVacationPhoto94.jpg.

permit( principal in Group::"alice_friends", action == Action::"view", resource == Photo::"VacationPhoto94.jpg" );

Contoh berikut ini menunjukkan cara membuat kebijakan yang memungkinkan pengguna alice untuk melihat foto apa pun di albumalice_vacation.

permit( principal == User::"alice", action == Action::"view", resource in Album::"alice_vacation" );

Contoh berikut ini menunjukkan cara membuat kebijakan yang memungkinkan pengguna alice untuk melihat, mengedit, atau menghapus foto apa pun di albumalice_vacation.

permit( principal == User::"alice", action in [Action::"view", Action::"edit", Action::"delete"], resource in Album::"alice_vacation" );

Contoh berikut ini menunjukkan cara membuat kebijakan yang mengizinkan izin bagi pengguna di albumalice_vacation, alice di mana admin grup ditentukan dalam hierarki skema yang berisi izin untuk melihat, mengedit, dan menghapus foto.

permit( principal == User::"alice", action in PhotoflashRole::"admin", resource in Album::"alice_vacation" );

Contoh berikut ini menunjukkan cara membuat kebijakan yang mengizinkan izin bagi pengguna di albumalice_vacation, alice di mana viewer grup ditentukan dalam hierarki skema yang berisi izin untuk melihat dan mengomentari foto. Pengguna juga alice diberikan edit izin oleh tindakan kedua yang tercantum dalam kebijakan.

permit( principal == User::"alice", action in [PhotoflashRole::"viewer", Action::"edit"], resource in Album::"alice_vacation" )

Memungkinkan akses untuk entitas apa pun

Contoh berikut ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan prinsipal yang diautentikasi untuk melihat albumalice_vacation.

permit( principal, action == Action::"view", resource in Album::"alice_vacation" );

Contoh berikut ini menunjukkan cara membuat kebijakan yang memungkinkan pengguna alice mencantumkan semua album di jane akun, mencantumkan foto di setiap album, dan melihat foto di akun.

permit( principal == User::"alice", action in [Action::"listAlbums", Action::"listPhotos", Action::"view"], resource in Account::"jane" );

Contoh berikut ini menunjukkan cara membuat kebijakan yang memungkinkan pengguna alice melakukan tindakan apa pun pada sumber daya di albumjane_vaction.

permit( principal == User::"alice", action, resource in Album::"jane_vacation" );

Memungkinkan akses untuk atribut entitas (ABAC)

Attribute-based access control (ABAC) adalah strategi otorisasi yang mendefinisikan 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 berikut 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 berikut ini menunjukkan bagaimana Anda dapat 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 berikut 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 berikut 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 berikut ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan semua prinsipal melakukan tindakan apa pun pada sumber daya yang memiliki atributnya. owner

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

Contoh berikut 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 berikut ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan prinsipal apa pun 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) };

Menolak akses

Jika kebijakan berisi forbid efek kebijakan, kebijakan akan membatasi izin, bukan memberikan izin.

penting

Selama otorisasi, jika baik a permit dan forbid kebijakan ditegakkan, diutamakanforbid.

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

Contoh berikut ini menunjukkan cara membuat kebijakan yang menolak pengguna alice melakukan semua tindakan kecuali readOnly pada sumber daya apa pun.

forbid ( principal == User::"alice", action, resource ) unless { action.readOnly };

Contoh berikut ini menunjukkan bagaimana Anda dapat membuat kebijakan yang menolak akses ke semua sumber daya yang memiliki private atribut kecuali prinsipal memiliki owner atribut untuk sumber daya.

forbid ( principal, action, resource ) when { resource.private } unless { principal == resource.owner };

Menggunakan notasi braket untuk referensi atribut token

Contoh berikut ini menunjukkan bagaimana Anda dapat membuat kebijakan yang menggunakan notasi braket untuk referensi atribut token.

Untuk informasi selengkapnya tentang menggunakan atribut token dalam kebijakan di Izin Terverifikasi, lihat Memetakan token penyedia identitas ke skema

permit ( principal in MyCorp::UserGroup::"us-west-2_EXAMPLE|MyUserGroup", action, resource ) when { principal["cognito:username"] == "alice" && principal["custom:employmentStoreCode"] == "petstore-dallas" && principal has email && principal.email == "alice@example.com" && context["ip-address"] like "192.0.2.*" };

Menggunakan notasi titik untuk referensi atribut

Contoh berikut ini menunjukkan bagaimana Anda dapat membuat kebijakan yang menggunakan notasi titik untuk referensi atribut.

Untuk informasi selengkapnya tentang menggunakan atribut token dalam kebijakan di Izin Terverifikasi, lihat Memetakan token penyedia identitas ke skema

permit(principal, action, resource) when { principal.cognito.username == "alice" && principal.custom.employmentStoreCode == "petstore-dallas" && principal.tenant == "x11app-tenant-1" && principal has email && principal.email == "alice@example.com" };

Mencerminkan atribut token ID Amazon Cognito

Contoh berikut ini menunjukkan cara membuat atribut token ID referensi kebijakan dari Amazon Cognito.

Untuk informasi selengkapnya tentang menggunakan atribut token dalam kebijakan di Izin Terverifikasi, lihat Memetakan token penyedia identitas ke skema

permit ( principal in MyCorp::UserGroup::"us-west-2_EXAMPLE|MyUserGroup", action, resource ) when { principal["cognito:username"] == "alice" && principal["custom:employmentStoreCode"] == "petstore-dallas" && principal.tenant == "x11app-tenant-1" && principal has email && principal.email == "alice@example.com" };

Mencerminkan atribut token OIDC ID

Contoh berikut ini menunjukkan bagaimana Anda dapat membuat atribut token ID referensi kebijakan dari OIDC penyedia.

Untuk informasi selengkapnya tentang menggunakan atribut token dalam kebijakan di Izin Terverifikasi, lihat Memetakan token penyedia identitas ke skema

permit ( principal in MyCorp::UserGroup::"MyOIDCProvider|MyUserGroup", action, resource ) when { principal.email_verified == true && principal.email == "alice@example.com" && principal.phone_number_verified == true && principal.phone_number like "+1206*" };

Mencerminkan atribut token akses Amazon Cognito

Contoh berikut ini menunjukkan cara membuat referensi kebijakan atribut token akses dari Amazon Cognito.

Untuk informasi selengkapnya tentang menggunakan atribut token dalam kebijakan di Izin Terverifikasi, lihat Memetakan token penyedia identitas ke skema

permit(principal, action in [MyApplication::Action::"Read", MyApplication::Action::"GetStoreInventory"], resource) when { context.token.client_id == "52n97d5afhfiu1c4di1k5m8f60" && context.token.scope.contains("MyAPI/mydata.write") };

Mencerminkan atribut token OIDC akses

Contoh berikut ini menunjukkan bagaimana Anda dapat membuat referensi kebijakan atribut token akses dari OIDC penyedia.

Untuk informasi selengkapnya tentang menggunakan atribut token dalam kebijakan di Izin Terverifikasi, lihat Memetakan token penyedia identitas ke skema

permit( principal, action in [MyApplication::Action::"Read", MyApplication::Action::"GetStoreInventory"], resource ) when { context.token.client_id == "52n97d5afhfiu1c4di1k5m8f60" && context.token.scope.contains("MyAPI-read") };