本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon 使用IAM政策條件 EventBridge
若要授與權限,您可以使用IAM原則陳述式中的原則語言來指定原則生效的條件。例如,您可以在特定日期之後套用政策。
政策中的條件由鍵值對所組成。條件索引鍵名稱不區分大小寫。
如果您在單一條件中指定多個條件或金鑰,則必須符合所有條件和金鑰,才能授與權限。 EventBridge 如果您為一個索引鍵指定具有多個值的單一條件,則會在符合其中一個值時 EventBridge 授予權限。
您可以在指定條件時使用預留位置或政策變數。如需詳細資訊,請參閱IAM使用指南中的策略變數。如需有關以IAM策略語言指定條件的詳細資訊,請參閱《IAM使用指南》中的「條件」。
根據預設,IAM使用者和角色無法存取您帳戶中的事件。若要存取事件,使用者必須獲得PutRule
API動作的授權。如果IAM使用者或角色獲得events:PutRule
動作的授權,則他們可以建立符合某些事件的規則。但是,為了使規則很有用,使用者還必須擁有events:PutTargets
動作的權限,因為如果您希望規則不僅發佈 CloudWatch 量度,還必須將目標新增至規則。
您可以在IAM使用者或角色的政策陳述式中提供條件,讓使用者或角色建立僅符合特定來源和事件類型集的規則。若要授與特定來源和事件類型的存取權,請使用 events:source
和 events:detail-type
條件索引鍵。
同樣地,您可以在IAM使用者或角色的策略陳述式中提供條件,讓使用者或角色建立僅符合帳號中特定資源的規則。若要授與特定資源的存取權限,請使用 events:TargetArn
條件索引鍵。
下列範例是允許使用者在動作上 EventBridge 使用拒絕陳述式存取 Amazon EC2 事件以外的所有事件的政PutRule
API策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyPutRuleForAllEC2Events", "Effect": "Deny", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.ec2" } } } ] }
EventBridge 條件鍵
下表顯示您可以在中的政策中使用的條件索引鍵以及索引鍵和值配對 EventBridge。
條件鍵 | 鍵值對 | 評估類型 |
---|---|---|
AWS:SourceAccount |
由 |
Account Id, Null |
AWS:SourceArn |
傳送事件ARN的規則。 |
ARN,空 |
事件:creatorAccount |
用於 |
creatorAccount,空 |
events:detail-type |
位置 |
Detail Type, Null |
事件:詳細信息。 eventTypeCode |
用於 |
eventTypeCode,空 |
events: detail.service |
用於 |
服務,Null |
事件:詳細信息。 userIdentity。 principalId |
用於 |
Principal Id,Null |
事件:eventBusInvocation |
用於 |
eventBusInvocation,空 |
事件:ManagedBy |
由 AWS 服務內部使用。對於由 AWS 服務代表您建立的規則,值是建立該規則之服務的主要名稱。 |
不適用於客戶政策。 |
events:source |
使用 |
Source,Null |
事件:TargetArn |
用於 |
ArrayOfARN,空 |
如需的政策陳述式範例 EventBridge,請參閱管理 Amazon EventBridge 資源的存取權限。
主題
EventBridge 管道細節
EventBridge 管道不支援任何其他IAM原則條件金鑰。
範例:使用 creatorAccount
條件
下列範例政策聲明會顯示如何使用政策中的 creatorAccount
條件,以便僅在指定為 creatorAccount
的帳號是建立規則的帳號時,才允許建立規則。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForOwnedRules", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEqualsIfExists": { "events:creatorAccount": "${aws:PrincipalAccount}" } } } ] }
範例:使用 eventBusInvocation
條件
指eventBusInvocation
示呼叫是來自跨帳戶目標還是要求。PutEvents
API如果調用來自包含跨帳戶目標的規則,例如目標是另一個帳戶中的事件匯流排,則此值為 true。當調用來自PutEvents
API請求的結果時,該值為 false。下列範例指出跨帳戶目標的調用。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountInvocationEventsOnly", "Effect": "Allow", "Action": "events:PutEvents", "Resource": "*", "Condition": { "BoolIfExists": { "events:eventBusInvocation": "true" } } } ] }
範例:限制存取特定資源
下列範例原則可附加至IAM使用者。政策 A 允許對所有事件PutRule
API執行動作,而政策 B PutRule
只有在所建立規則的事件模式與 Amazon EC2 事件相符時才允許。
政策 A:允許所有事件
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForAllEvents", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*" } ] }
政策 B:-僅允許來自 Amazon 的事件 EC2
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleForAllEC2Events", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.ec2" } } } ] }
EventPattern
是 PutRule
的必要引數。因此,如果具有政策 B 的使用者以類似以下事件的模式呼叫 PutRule
,
{ "source": [ "aws.ec2" ] }
則系統會建立規則,因為政策允許此特定來源,亦即 "aws.ec2"
。不過,如果具有政策 B 的使用者以類似以下事件的模式呼叫 PutRule
,則會拒絕建立規則,因為政策不允許此特定來源:也就是 "aws.s3"
。
{ "source": [ "aws.s3" ] }
本質上,具有政策 B 的用戶只能創建一個與來自 Amazon 的事件匹配的規則EC2; 因此,他們只允許訪問來自 Amazon 的事件EC2。
請參閱下表以取得政策 A 和政策 B 的比較。
事件模式 | 政策 A 允許 | 政策 B 允許 |
---|---|---|
|
是 |
是 |
|
是 |
否 (不允許 aws.s3 Source) |
|
是 |
是 |
|
是 |
否 (必須指定來源) |
範例:定義多個可個別用於事件模式的來源
下列政策允許IAM使用者或角色建立規則,其中的EventPattern
來源為 Amazon EC2 或 Amazon ECS。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsEC2OrECS", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": [ "aws.ec2", "aws.ecs" ] } } } ] }
下表展示了此政策允許或拒絕的事件模式範例。
事件模式 | 政策允許 |
---|---|
|
是 |
|
是 |
|
否 |
|
否 |
|
否 |
範例:定義可用於事件模式的來源和 DetailType
以下政策僅允許來自 aws.ec2
來源且 DetailType
等於 EC2 instance state change notification
的事件。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsEC2AndDetailTypeIsInstanceStateChangeNotification", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:source": "aws.ec2", "events:detail-type": "EC2 Instance State-change Notification" } } } ] }
下表展示了此政策允許或拒絕的事件模式範例。
事件模式 | 政策允許 |
---|---|
|
否 |
|
否 |
|
是 |
|
否 |
|
否 |
範例:確定事件模式中的來源已定義
以下政策允許用戶僅以具有來源欄位的 EventPatterns
建立規則。使用此原則時,IAM使用者或角色無法使用未提供特定來源的規則來建立規則。EventPattern
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleIfSourceIsSpecified", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "Null": { "events:source": "false" } } } ] }
下表展示了此政策允許或拒絕的事件模式範例。
事件模式 | 政策允許 |
---|---|
|
是 |
|
是 |
|
否 |
範例:在具有多個來源的事件模式中定義允許來源清單
以下政策允許以擁有多個來源的 EventPatterns
建立規則。事件模式中列出的每個來源都必須是條件中提供的清單成員。當使用 ForAllValues
條件時,請確定條件清單中至少有一個項目已經定義。
{ "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" } } } ] }
下表展示了此政策允許或拒絕的事件模式範例。
事件模式 | 政策允許 |
---|---|
|
是 |
|
是 |
|
否 |
|
否 |
範例:限制 PutRule
存取 detail.service
您可以將IAM使用者或角色限制為僅針對events:details.service
欄位中具有特定值的事件建立規則。的值events:details.service
不一定是 AWS 服務的名稱。
當您處理與安全性或濫用相關的事件時 AWS Health ,此原則條件很有幫助。透過此政策條件,您可以限制只有需要的使用者才能夠查看這些敏感提醒的存取權。
例如,以下政策允許僅為 events:details.service
值是 ABUSE
的事件建立規則。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleEventsWithDetailServiceEC2", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail.service": "ABUSE" } } } ] }
範例:限制 PutRule
存取 detail.eventTypeCode
您可以將IAM使用者或角色限制為僅針對events:details.eventTypeCode
欄位中具有特定值的事件建立規則。當您處理與安全性或濫用相關的事件時 AWS Health ,此原則條件很有幫助。透過此政策條件,您可以限制只有需要的使用者才能夠查看這些敏感提醒的存取權。
例如,以下政策允許僅為 events:details.eventTypeCode
值是 AWS_ABUSE_DOS_REPORT
的事件建立規則。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutRuleEventsWithDetailServiceEC2", "Effect": "Allow", "Action": "events:PutRule", "Resource": "*", "Condition": { "StringEquals": { "events:detail.eventTypeCode": "AWS_ABUSE_DOS_REPORT" } } } ] }
範例:確保僅允許來自特定API呼叫PrincipalId
的 AWS CloudTrail 事件
所有 AWS CloudTrail 事件 PrincipalId 都具有在事件detail.userIdentity.principalId
路徑中進行API呼叫的使用者。使用events:detail.userIdentity.principalId
條件鍵,您可以將使用IAM者或角色的存取限制為僅針對來自特定帳戶的使用者或角色。 CloudTrail
"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" ] } } } ] }
下表展示了此政策允許或拒絕的事件模式範例。
事件模式 | 政策允許 |
---|---|
|
否 |
|
是 |
|
否 |
範例:限制存取目標
如果IAM使用者或角色具有events:PutTargets
權限,他們可以將同一帳戶下的任何目標新增到允許存取的規則中。以下政策限制只能將目標新增至特定規則:帳戶 123456789012
下的 MyRule
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRule", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/MyRule" } ] }
若要限制哪些目標可以新增至規則,請使用 events:TargetArn
條件鍵。您可以將目標限制為只有 Lambda 函數,如下列範例。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutTargetsOnASpecificRuleAndOnlyLambdaFunctions", "Effect": "Allow", "Action": "events:PutTargets", "Resource": "arn:aws:events:us-east-1:123456789012:rule/MyRule", "Condition": { "ArnLike": { "events:TargetArn": "arn:aws:lambda:*:*:function:*" } } } ] }