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
Contoh kebijakan
- Memungkinkan akses ke entitas individu
- Memungkinkan akses ke grup entitas
- Memungkinkan akses untuk entitas apa pun
- Memungkinkan akses untuk atribut entitas (ABAC)
- Menolak akses
- Menggunakan notasi braket untuk referensi atribut token
- Menggunakan notasi titik untuk referensi atribut
- Mencerminkan atribut token ID Amazon Cognito
- Mencerminkan atribut token OIDC ID
- Mencerminkan atribut token akses Amazon Cognito
- Mencerminkan atribut token OIDC akses
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
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
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") };