本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂事件匯流排的動作、資源和條件索引鍵
當您撰寫 IAM 政策時,請使用此頁面。它列出自訂事件匯流排的每個events:動作、每個動作檢查的資源 ARN、是否可以授予另一個帳戶,以及您可以新增的條件索引鍵。例如,若要讓角色連接METADATA篩選條件名稱tenant為 的訂閱者acme,請在具有 ForAnyValue:StringEquals條件的匯流排events:CreateSubscriber上授予 events:Metadata/tenant。
條件索引鍵
EventBridge 會從請求提供下列條件索引鍵,讓您可以縮小 動作和資源以外的授予範圍。如需全域條件索引鍵,請參閱《IAM 使用者指南》中的AWS 全域條件內容索引鍵。
| 條件鍵 | Value | 提供於 |
|---|---|---|
events:source | 事件的來源或要轉送的來源 | PutEvents, CreateEventSource, UpdateEventSource |
events:detail-type | 事件的詳細資訊類型 | PutEvents |
events:Metadata/ | METADATA 篩選條件在該索引鍵上符合的值 | CreateSubscriber |
events:Metadata/ | exact | CreateSubscriber |
events:ContentFilterPresent | true 當訂閱者宣告DATA篩選條件時 | CreateSubscriber |
aws:ResourceTag/ | 正在檢查的匯流排、訂閱者或事件來源上的標籤 | 針對資源檢查的每個動作 |
aws:RequestTag/, aws:TagKeys | 請求中的標籤 | 建立操作 和 TagResource, UntagResource |
中繼資料金鑰是以一組值提供,因此請將其與一組運算子比對,例如 ForAnyValue:StringEquals。 METADATA篩選條件僅完全相符,這就是配對器值一律為 的原因exact。DATA 篩選條件符合任意 JSON,因此只會公開其存在,而非其內容。 會使用從取代組態events:source設定的 UpdateEventSource重新執行匯流排檢查,因此該金鑰上的條件會管理重新指向的事件來源和新的事件來源。
下列資源政策只有在訂閱者的METADATA篩選條件tenant完全符合 時,才允許帳戶在orders匯流排上444455556666建立訂閱者acme。沒有METADATA篩選條件或指定另一個租用戶的訂閱者會遭到拒絕。EventBridge 只會為篩選條件宣告的欄位提供中繼資料條件索引鍵,因此Null條件是拒絕忽略 的篩選條件tenant。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SubscribeToAcmeEventsOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "events:CreateSubscriber", "Resource": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef", "Condition": { "Null": { "events:Metadata/tenant": "false" }, "ForAnyValue:StringEquals": { "events:Metadata/tenant": "acme" }, "StringEquals": { "events:Metadata/tenant/Matcher": "exact" } } } ] }
要檢查的動作和資源
下表列出每個動作、要放入政策Resource元素的資源 ARN,以及匯流排擁有者是否可以透過資源政策或 AWS RAM 共享將動作授予另一個帳戶。不會針對任何資源檢查這三個List動作,因此請使用 授予它們"Resource": "*"。
| IAM 動作 | 已檢查 | 授予另一個帳戶 |
|---|---|---|
events:CreateEventBus | 正在建立的匯流排 | 否。在發起人自己的帳戶中建立 |
events:DescribeEventBus | 匯流排 | 是 |
events:UpdateEventBus | 匯流排 | 否。僅限匯流排擁有者 |
events:DeleteEventBus | 匯流排 | 否。僅限匯流排擁有者 |
events:ListEventBuses | 什麼都不做。整個帳戶 | 否。列出發起人自己的和共用匯流排 |
events:PutEvents | 匯流排,每個請求項目一次 | 是 |
events:PutRawEvents | 匯流排,每個請求項目一次 | 是 |
events:CreateSubscriber | 正在建立的匯流排和訂閱者 | 是 |
events:DescribeSubscriber | 訂閱者 | 訂閱者的擁有者授權 |
events:UpdateSubscriber | 訂閱者 | 訂閱者的擁有者授權 |
events:DeleteSubscriber | 訂閱者 | 訂閱者的擁有者授權 |
events:ListSubscribers | 什麼都不做。整個帳戶 | 否。列出發起人自己的訂閱者 |
events:RevokeResource | 匯流排 | 否。僅限匯流排擁有者 |
events:CreateEventSource | 正在建立的匯流排和事件來源 | 是 |
events:DescribeEventSource | 事件來源 | 事件來源的擁有者授權它 |
events:UpdateEventSource | 事件來源和匯流排再次 | 是,針對匯流排檢查 |
events:DeleteEventSource | 事件來源 | 事件來源的擁有者授權它 |
events:ListEventSources | 什麼都不做。整個帳戶 | 否。列出發起人自己的事件來源 |
events:PutResourcePolicy | 匯流排 | 否。僅限匯流排擁有者 |
events:GetResourcePolicy | 匯流排 | 是 |
events:DeleteResourcePolicy | 匯流排 | 否。僅限匯流排擁有者 |
events:ListResourcePolicies | 匯流排 | 是 |
events:TagResource | 請求中名為 的匯流排、訂閱者或事件來源 | 匯流排:是。訂閱者或事件來源:其擁有者 |
events:UntagResource | 請求中名為 的匯流排、訂閱者或事件來源 | 匯流排:是。訂閱者或事件來源:其擁有者 |
events:ListTagsForResource | 請求中名為 的匯流排、訂閱者或事件來源 | 匯流排:是。訂閱者或事件來源:其擁有者 |
若要在匯流排上建立訂閱者或事件來源,呼叫者需要在匯流排和新資源上執行 動作。這就是匯流排擁有者在匯流排自己的政策中決定哪些帳戶可以連接任何項目的原因。 會CreateSubscriber進行四個單獨的授權檢查,而這四個必須允許:events:CreateSubscriber在匯流排上、訂閱者events:CreateSubscriber上、iam:PassRole在 中的角色InvokeConfiguration.RoleArn,以及在請求攜帶標籤時,在訂閱者events:TagResource上。 在沒有 的情況下CreateEventSource執行相同的檢查iam:PassRole,因為事件來源沒有角色。
注意
尚不存在的資源沒有完整的 ARN,因此建立檢查會使用以萬用字元結尾的 ARN,例如 arn:aws:events:us-east-1:111122223333:subscriber/。因此,範圍為一個訂閱用戶的政策符合名稱字首,而不是完全符合。未標記的建立name/*aws:ResourceTag不會為新資源提供 ,因此該金鑰上的StringEquals條件會拒絕它。
以身分為基礎的 政策範例
生產者在匯流排 ARN 上需要 events:PutEvents、 events:PutRawEvents或兩者。授予與其呼叫的 API 相符的動作。使用客戶受管金鑰加密的匯流排生產者也需要存取該金鑰;請參閱 加密自訂事件匯流排上的事件。訂閱者擁有者events:CreateSubscriber需要匯流排和訂閱者、iam:PassRole交付角色,以及對其管理的訂閱者描述、更新和刪除訂閱者動作。匯流排管理員需要建立、更新和刪除匯流排動作、四個資源政策動作,以及 events:RevokeResource。
下列政策可讓生產者使用任一發佈 API 發佈至一個匯流排,並讀取匯流排,以便先確認匯流排ACTIVE。發佈會針對請求中的每個項目授權一次,而且沒有部分授權:如果一個項目未通過條件檢查,EventBridge 會拒絕整個請求,包括將會傳遞的項目。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublishToOrdersBus", "Effect": "Allow", "Action": [ "events:PutEvents", "events:PutRawEvents", "events:DescribeEventBus" ], "Resource": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef" } ] }
標記
您可以標記匯流排、訂閱者或事件來源。在建立呼叫Tags上設定 ,或在ListTagsForResource之後使用 UntagResource、 TagResource和 。每個資源都有自己的標籤集,因此標記匯流排不會標記連接到它的訂閱者或事件來源。
aws eventsv2 tag-resource \ --resource-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --tags team=payments,environment=production
建立回應不會回應您提供的標籤,因此當您需要確認標籤list-tags-for-resource時,請將其讀回。開頭為 的金鑰aws:會保留給 , AWS 且每次寫入都會遭到拒絕,包括 UntagResource。若要控制誰可以標記,以及撰寫相依於標籤的政策,請使用上表中的三個標籤動作,以及 aws:RequestTag、 aws:ResourceTag和 aws:TagKeys條件索引鍵。