View a markdown version of this page

Menggunakan ketentuan kebijakan IAM di Amazon EventBridge - Amazon EventBridge

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

Menggunakan ketentuan kebijakan IAM di Amazon EventBridge

Untuk memberikan izin, Anda menggunakan bahasa kebijakan IAM dalam pernyataan kebijakan untuk menetapkan ketentuan ketika kebijakan akan berlaku. Misalnya, Anda dapat memiliki kebijakan yang diterapkan hanya setelah tanggal tertentu.

Sebuah syarat dalam kebijakan terdiri dari pasangan nilai kunci. Kunci syarat tidak memedulikan huruf besar atau kecil.

Jika Anda menentukan beberapa kondisi atau kunci dalam satu kondisi, semua kondisi dan kunci harus dipenuhi EventBridge untuk memberikan izin. Jika Anda menentukan satu kondisi dengan beberapa nilai untuk satu kunci, EventBridge memberikan izin jika salah satu nilai terpenuhi.

Anda juga dapat menggunakan placeholder atau variabel kebijakan saat menetapkan ketentuan. Untuk informasi selengkapnya, lihat Variabel Kebijakan dalam Panduan Pengguna IAM. Untuk informasi selengkapnya tentang menetapkan ketentuan dalam bahasa kebijakan IAM, lihat Syarat dalam Panduan Pengguna IAM.

Secara default, pengguna dan peran IAM tidak dapat mengaksesperistiwa di akun Anda. Untuk mengakses peristiwa, pengguna harus berwenang untuk PutRuletindakan API. Jika pengguna atau peran IAM diotorisasi untuk tindakan events:PutRule, mereka dapat membuat aturan yang cocok dengan peristiwa tertentu. Namun, agar aturan berguna, pengguna juga harus memiliki izin untuk events:PutTargets tindakan karena, jika Anda ingin aturan melakukan lebih dari menerbitkan CloudWatch metrik, Anda juga harus menambahkan target ke aturan.

Anda dapat memberikan syarat dalam pernyataan kebijakan peran atau pengguna IAM yang memungkinkan pengguna atau peran untuk membuat aturan yang hanya cocok dengan serangkaian sumber dan jenis peristiwa tertentu. Untuk memberikan akses ke sumber dan jenis peristiwa tertentu, gunakan events:source dan events:detail-type kunci syarat.

Demikian pula, Anda dapat memberikan syarat dalam pernyataan kebijakan pengguna atau peran IAM yang memungkinkan pengguna atau peran untuk membuat aturan yang hanya cocok dengan sumber daya tertentu di akun Anda. Untuk memberikan akses ke sumber daya tertentu, gunakan events:TargetArnkunci syarat.

EventBridge kunci kondisi

Tabel berikut menunjukkan kunci kondisi dan pasangan kunci dan nilai yang dapat Anda gunakan dalam kebijakan di EventBridge.

Kunci syarat Pasangan nilai kunci Jenis evaluasi

aws: SourceAccount

Akun di mana aturan yang ditetapkan oleh aws:SourceArn ada.

Account Id, Null

aws: SourceArn

ARN aturan yang mengirimkan acara tersebut.

ARN, Null

events:creatorAccount

"events:creatorAccount":"creatorAccount"

UntukcreatorAccount, gunakan ID akun untuk akun yang membuat aturan. Gunakan syarat ini untuk mengesahkan panggilan API pada aturan dari akun tertentu.

creatorAccount, Null

events:detail-type

"events:detail-type":"detail-type "

Di detail-type mana string literal untuk bidang tipe detail acara seperti "AWS API Call via CloudTrail" dan. "EC2 Instance State-change Notification"

Detail Type, Null

acara: detail.event TypeCode

"events:detail.eventTypeCode":"eventTypeCode"

UntukeventTypeCode, gunakan string literal untuk TypeCode bidang detail.event acara, seperti. "AWS_ABUSE_DOS_REPORT"

acaraTypeCode, Null

Event: detail.service

"events:detail.service":"service"

Untukservice, gunakan string literal untuk bidang detail.service acara, seperti. "ABUSE"

service, Null

acara: detail.user Identity.principalId

"events:detail.userIdentity.principalId":"principal-id"

Untukprincipal-id, gunakan string literal untuk Identity.principalId bidang detail.user dari acara dengan tipe detail seperti"AWS API Call via CloudTrail". "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName."

Principal Id, Null

acara:acara BusInvocation

"events:eventBusInvocation":"boolean"

Untukboolean, gunakan true ketika aturan mengirim peristiwa ke target yang merupakan bus acara di akun lain. Gunakan SALAH ketika ketika PutEvents panggilan API digunakan.

acaraBusInvocation, Null

acara: ManagedBy

Digunakan secara internal oleh AWS layanan. Untuk aturan yang dibuat oleh AWS layanan atas nama Anda, nilainya adalah nama utama layanan yang membuat aturan.

Digunakan untuk cakupan izin ke aturan yang dibuat oleh AWS layanan atas nama Anda (aturan terkelola). Misalnya, kebijakan terkel AmazonS3FilesFullAccess ola menggunakan kunci ini untuk mengizinkan pembuatan EventBridge aturan terkelola saja.

events:source

"events:source":"source "

Gunakan source untuk string literal untuk bidang sumber acara seperti "aws.ec2" atau"aws.s3". Untuk nilai yang lebih mungkinsource, lihat contoh peristiwa diAcara dari AWS layanan.

Source, Null

acara: TargetArn

"events:TargetArn":"target-arn "

Untuktarget-arn, gunakan ARN target untuk aturan, misalnya"arn:aws:lambda:*:*:function:*".

ArrayOfARN, Nol

Misalnya pernyataan kebijakan untuk EventBridge, lihatMengelola izin akses ke sumber daya Amazon EventBridge Anda.

EventBridge Spesifikasi pipa

EventBridge Pipes tidak mendukung kunci kondisi kebijakan IAM tambahan apa pun.

Contoh: Menggunakan kondisi CreatorAccount

Contoh pernyataan kebijakan berikut menunjukkan cara menggunakan creatorAccount syarat dalam kebijakan untuk hanya mengizinkan aturan yang akan dibuat jika akun ditetapkan sebagaicreatorAccount adalah akun yang membuat aturan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForOwnedRules", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEqualsIfExists": { "events:creatorAccount": "${aws:PrincipalAccount}" } } } ] }

Contoh: Menggunakan BusInvocation kondisi acara

eventBusInvocation menunjukkan apakah permintaan berasal dari target lintas-akun atau PutEvents permintaan API. Nilai adalah BETUL ketika hasil permintaan dari aturan yang mencakup target lintas-akun, seperti ketika target adalah bus peristiwa di akun lain. Nilai adalah SALAH ketika hasil permintaan dari PutEvents permintaan API. Contoh berikut menunjukkan permintaan dari target lintas-akun.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountInvocationEventsOnly", "Effect": "Allow", "Action": "events:PutEvents", "Resource": "*", "Condition": { "BoolIfExists": { "events:eventBusInvocation": "true" } } } ] }

Contoh: Membatasi akses ke sumber tertentu

Contoh kebijakan berikut dapat disematkan ke pengguna IAM. Kebijakan A memungkinkan PutRule tindakan API untuk semua peristiwa, sementara Kebijakan B memungkinkan PutRule hanya jika pola peristiwa aturan yang dibuat cocok dengan peristiwa Amazon EC2.

Kebijakan A: izinkan semua acara

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForAllEvents", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*" } ] }

Kebijakan B: —izinkan acara hanya dari Amazon EC2

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForAllEC2Events", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "events:source": "aws.ec2" } } } ] }

EventPattern adalah argumen wajib untuk PutRule. Oleh karena itu, jika pengguna dengan Kebijakan B memanggil PutRuledengan pola peristiwa seperti berikut ini.

{ "source": [ "aws.ec2" ] }

Aturan akan dibuat karena kebijakan memungkinkan untuk sumber khusus ini: yaitu, "aws.ec2". Namun, jika pengguna dengan Kebijakan B memanggil PutRule dengan pola peristiwa seperti berikut ini, pembuatan aturan akan ditolak karena kebijakan tidak mengizinkan sumber spesifik ini: yaitu, "aws.s3".

{ "source": [ "aws.s3" ] }

Pada dasarnya, pengguna dengan Kebijakan B hanya diperbolehkan untuk membuat aturan yang akan cocok dengan peristiwa yang berasal dari Amazon EC2; maka, mereka hanya diperbolehkan mengakses ke peristiwa dari Amazon EC2.

Lihat tabel berikut untuk perbandingan Kebijakan A dan Kebijakan B.

Pola Peristiwa Diperbolehkan oleh Kebijakan A Diperbolehkan oleh Kebijakan B
{ "source": [ "aws.ec2" ] }

Ya

Ya

{ "source": [ "aws.ec2", "aws.s3" ] }

Ya

Tidak (Sumber aws.s3 tidak diizinkan)

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Ya

Ya

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Ya

Ya. ForAllValuesmengevaluasi set kosong dan mengembalikan true karena pola peristiwa dihilangkan. events:source Lihat Catatan Penting berikut.

Pembatasan sumber Kebijakan B dapat dilewati tanpa pemeriksaan Null

Kebijakan B membatasi peristiwa yang dapat dicocokkan aturan hanya jika pola peristiwa aturan menyertakan events:source bidang. Karena kondisi menggunakan operator ForAllValues set tanpa Null pemeriksaan, pola peristiwa yang menghilangkan source sepenuhnya menyebabkan kondisi mengevaluasi pada set kosong dan mengembalikan true. Misalnya, pola peristiwa yang menentukan hanya detail-type memicu perilaku ini. Oleh karena itu, seorang prinsipal dapat melewati pembatasan sumber yang dimaksud dengan membuat aturan yang pola kejadiannya tidak menentukan sumber.

Untuk mengharuskan pola peristiwa aturan selalu menyertakan asource, gabungkan ForAllValues dengan Null kondisi aktifevents:source, seperti yang ditunjukkan padaContoh: Memastikan bahwa sumber didefinisikan dalam pola peristiwa. Untuk informasi selengkapnya tentang cara operator set mengevaluasi kunci kondisi yang hilang, lihat Membuat kondisi dengan beberapa kunci atau nilai di Panduan Pengguna IAM.

Contoh: Mendefinisikan beberapa sumber yang dapat digunakan dalam pola peristiwa individual

Kebijakan berikut memungkinkan pengguna atau peran IAM untuk membuat aturan di mana sumber dalam EventPattern adalah Amazon EC2 atau Amazon ECS.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsEC2OrECS", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "events:source": [ "aws.ec2", "aws.ecs" ] } } } ] }

Tabel berikut menunjukkan beberapa contoh pola peristiwa yang diizinkan atau ditolak oleh kebijakan ini.

Pola peristiwa Diizinkan oleh kebijakan
{ "source": [ "aws.ec2" ] }

Ya

{ "source": [ "aws.ecs" ] }

Ya

{ "source": [ "aws.s3" ] }

Tidak

{ "source": [ "aws.ec2", "aws.ecs" ] }

Tidak

{ "detail-type": [ "AWS API Call via CloudTrail" ] }

Tidak

Contoh: Memastikan bahwa sumber didefinisikan dalam pola peristiwa

Kebijakan berikut memungkinkan pengguna untuk hanya membuat aturan dengan EventPatterns yang memiliki bidang sumber. Dengan kebijakan ini, pengguna atau peran IAM tidak dapat membuat aturan dengan EventPattern yang tidak menyediakan sumber tertentu.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsSpecified", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "Null": { "events:source": "false" } } } ] }

Tabel berikut menunjukkan beberapa contoh pola peristiwa yang diizinkan atau ditolak oleh kebijakan ini.

Pola Peristiwa Diperbolehkan oleh Kebijakan
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ] }

Ya

{ "source": [ "aws.ecs", "aws.ec2" ] }

Ya

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Tidak

Contoh: Mendefinisikan daftar sumber yang diperbolehkan dalam pola peristiwa dengan beberapa sumber

Kebijakan berikut memungkinkan pengguna untuk membuat aturan dengan EventPatterns yang memiliki banyak sumber di dalamnya. Setiap sumber dalam pola peristiwa harus menjadi anggota dari daftar yang disediakan dalam syarat tersebut. Ketika Anda menggunakanForAllValues syarat, pastikan bahwa setidaknya salah satu item dalam daftar syarat didefinisikan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsSpecifiedAndIsEitherS3OrEC2OrBoth", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "events:source": [ "aws.ec2", "aws.s3" ] }, "Null": { "events:source": "false" } } } ] }

Tabel berikut menunjukkan beberapa contoh pola peristiwa yang diizinkan atau ditolak oleh kebijakan ini.

Pola Peristiwa Diperbolehkan oleh Kebijakan
{ "source": [ "aws.ec2" ] }

Ya

{ "source": [ "aws.ec2", "aws.s3" ] }

Ya

{ "source": [ "aws.ec2", "aws.autoscaling" ] }

Tidak

{ "detail-type": [ "EC2 Instance State-change Notification" ] }

Tidak

Contoh: Membatasi PutRule akses dengan detail.service

Anda dapat membatasi pengguna atau peran IAM untuk membuat aturan hanya untuk peristiwa yang memiliki nilai tertentu dalam events:details.servicebidang. Nilai events:details.service dari belum tentu nama AWS layanan.

Kondisi kebijakan ini berguna ketika Anda bekerja dengan peristiwa AWS Health yang berhubungan dengan keamanan atau penyalahgunaan. Dengan menggunakan syarat kebijakan ini, Anda dapat membatasi akses ke peringatan sensitif ini hanya untuk pengguna yang perlu melihatnya.

Sebagai contoh, kebijakan berikut memungkinkan pembuatan aturan hanya untuk peristiwa di mana nilai events:details.service adalah ABUSE.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleEventsWithDetailServiceEC2", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail.service": "ABUSE" } } } ] }

Contoh: Membatasi PutRule akses dengan detail.event TypeCode

Anda dapat membatasi pengguna atau peran IAM untuk membuat aturan hanya untuk peristiwa yang memiliki nilai tertentu dalam events:details.eventTypeCodebidang. Kondisi kebijakan ini berguna ketika Anda bekerja dengan peristiwa AWS Health yang berhubungan dengan keamanan atau penyalahgunaan. Dengan menggunakan syarat kebijakan ini, Anda dapat membatasi akses ke peringatan sensitif ini hanya untuk pengguna yang perlu melihatnya.

Sebagai contoh, kebijakan berikut memungkinkan pembuatan aturan hanya untuk peristiwa di mana nilai events:details.eventTypeCode adalah AWS_ABUSE_DOS_REPORT.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutRuleEventsWithDetailServiceEC2", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail.eventTypeCode": "AWS_ABUSE_DOS_REPORT" } } } ] }

Contoh: Memastikan bahwa hanya AWS CloudTrail peristiwa untuk panggilan API dari tertentu PrincipalId diizinkan

Semua AWS CloudTrail peristiwa memiliki pengguna yang membuat panggilan API di detail.userIdentity.principalId jalur suatu peristiwa. PrincipalId Dengan menggunakan kunci events:detail.userIdentity.principalId kondisi, Anda dapat membatasi akses pengguna atau peran IAM ke CloudTrail acara hanya untuk yang berasal dari akun tertentu.

"Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleOnlyForCloudTrailEventsWhereUserIsASpecificIAMUser", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail-type": [ "AWS API Call via CloudTrail" ], "events:detail.userIdentity.principalId": [ "AIDAJ45Q7YFFAREXAMPLE" ] } } } ] }

Tabel berikut menunjukkan beberapa contoh pola peristiwa yang diizinkan atau ditolak oleh kebijakan ini.

Pola peristiwa Diizinkan oleh kebijakan
{ "detail-type": [ "AWS API Call via CloudTrail" ] }

Tidak

{ "detail-type": [ "AWS API Call via CloudTrail" ], "detail.userIdentity.principalId": [ "AIDAJ45Q7YFFAREXAMPLE" ] }

Ya

{ "detail-type": [ "AWS API Call via CloudTrail" ], "detail.userIdentity.principalId": [ "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName" ] }

Tidak

Contoh: Membatasi akses ke target

Jika pengguna atau peran IAM memiliki events:PutTargets izin, mereka dapat menambahkan target apa pun dalam akun yang sama dengan aturan yang diizinkan untuk diakses. Kebijakan berikut membatasi pengguna untuk menambahkan target hanya untuk aturan tertentu: MyRule dalam akun 123456789012.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRule", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/MyRule" } ] }

Untuk membatasi target apa yang dapat ditambahkan ke aturan, gunakan events:TargetArn kunci syarat. Anda dapat membatasi target hanya untuk fungsi Lambda, seperti dalam contoh berikut.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRuleAndOnlyLambdaFunctions", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/rule-name", "Condition": { "ForAnyValue:ArnLike": { "events:TargetArn": "arn:aws:lambda:*:*:function:*" } } } ] }