本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
加密自訂事件匯流排上的事件
匯流排會加密其存放的所有項目:事件承載、事件中繼資料、訂閱者篩選條件和訂閱者目標組態。根據預設,它會使用 AWS 擁有的金鑰,而且您不會設定任何項目。若要改用您自己的 AWS KMS 金鑰加密匯流排,請在建立或更新匯流排EncryptionConfiguration.KmsKeyIdentifier時設定 ,例如 aws eventsv2 create-event-bus --name orders --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab,並將三個陳述式新增至撰寫金鑰政策金鑰政策。
選擇加密匯流排的金鑰
Omit EncryptionConfiguration和 EventBridge 會在 AWS 擁有的金鑰下,使用 256 位元 AES 加密匯流排。您無法檢視或管理該金鑰,其使用不會出現在您的 CloudTrail AWS KMS 日誌中,它不收取任何費用,它不會計入您的配額,並且每月輪 AWS 換它。EncryptionConfiguration對於此類匯流排, DescribeEventBus不會傳回任何 。如需詳細資訊,請參閱《AWS KMS 開發人員指南》中的 AWS 擁有的金鑰。
Set EncryptionConfiguration.KmsKeyIdentifier和 EventBridge 會使用客戶受管金鑰加密匯流排。然後,您可以控制金鑰政策、輪換、停用和刪除,並在 CloudTrail 中看到金鑰的每次使用。金鑰會產生 AWS KMS 每月金鑰費用和請求費用。由於 EventBridge 會在快取的分支金鑰下於本機加密和解密事件 (請參閱 匯流排如何使用您的金鑰),因此每個快取時段加上輪換的每個匯流排都會發出一些 AWS KMS 請求;請求計數不會隨著您的事件磁碟區而增加。如需詳細資訊,請參閱 AWS KMS 定價
KmsKeyIdentifier 接受金鑰 ID、金鑰 ARN、別名名稱,例如 alias/orders或別名 ARN。EventBridge 會在您的帳戶和區域中限定裸機金鑰 ID 或別名名稱,因此另一個帳戶中的金鑰必須以其完整金鑰 ARN 命名。當您建立或更新匯流排時,別名會解析為其金鑰,而建立和描述回應會傳回該金鑰 ARN。稍後重新指向別名不會變更匯流排使用的金鑰。金鑰必須是對稱加密金鑰 (SYMMETRIC_DEFAULT、金鑰用量)ENCRYPT_DECRYPT;EventBridge 會拒絕非對稱和 HMAC 金鑰。多區域金鑰可做為一般金鑰:命名匯流排區域中的複本,因為 EventBridge 不會跨區域複寫您的資料或金鑰材料。支援外部金鑰存放區中具有匯入金鑰材料和金鑰的金鑰。
aws eventsv2 create-event-bus \ --name orders \ --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
您的金鑰會加密匯流排保留的事件承載和中繼資料、交付期間為每個訂閱者保留的複本,以及訂閱者篩選條件和目標組態。不會使用您的金鑰加密四件事,因為 EventBridge 需要它們來路由和查詢事件:匯流排名稱、ARN 和帳戶 ID;訂購 FIFO 交付的事件群組 ID,因此請勿將敏感資料放入其中;重複資料刪除 ID,EventBridge 會將其存放為單向雜湊;以及內部比對結果和序號。儲存服務會使用自己的金鑰加密這些靜態項目。
匯流排如何使用您的金鑰
當您設定客戶受管金鑰時,EventBridge 會建立匯流排的分支金鑰:中繼金鑰,存放在服務受管資料表中,並由您的 AWS KMS 金鑰包裝,並遵循 AWS Encryption SDK 階層式 Keyring。EventBridge 從每個事件的分支金鑰衍生資料金鑰,因此它會在本機加密和解密事件,而不需要每個事件 AWS KMS 呼叫。
當您發佈事件時,EventBridge 會在將事件寫入儲存體之前,先在匯流排的分支金鑰下加密事件。
當 EventBridge 交付事件時,它會解密事件來評估篩選條件並交付它。目標會收到解密的事件;目標的加密是目標服務的責任。
EventBridge 會在記憶體中快取分支金鑰最多 15 分鐘。當快取過期時,它會
kms:Decrypt呼叫您的金鑰以再次取消包裝分支金鑰。EventBridge 大約每 30 天建立新的分支金鑰版本,並保留較舊的版本,因此稍早寫入的事件在匯流排的保留期間保持可讀性。
EventBridge 會在兩個路徑上到達您的金鑰,且金鑰政策必須允許兩者。對於在 API 呼叫進行時執行的檢查,它會使用您的登入資料,從呼叫轉送。對於在呼叫傳回後執行的工作,例如傳遞事件和管理分支金鑰,它會充當events.amazonaws.com服務主體,因為您的登入資料不再可用。
撰寫金鑰政策
將三個陳述式新增至金鑰政策:一個陳述式讓您的委託人驗證金鑰,一個陳述式讓他們傳遞存取檢查 EventBridge 與其憑證一起執行,另一個陳述式則用於events.amazonaws.com服務委託人。EventBridge 為匯流排提出的每個 AWS KMS 請求都會在兩個存取路徑上攜帶aws:events:event-busv2:arn具有匯流排 ARN 的加密內容金鑰,因此第二個和第三個陳述式的範圍為一個匯流排。匯流排 ARN 結尾為 EventBridge 在建立時產生的尾碼,因此請將其與 StringLike和結尾 比對/*。也請在政策中保留您自己的金鑰管理陳述式。取代下列範例中的帳戶、區域、角色和匯流排名稱。
{ "Version": "2012-10-17", "Id": "eventbridge-custom-event-bus-key-policy", "Statement": [ { "Sid": "AllowKeyValidationThroughEventBridge", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" } } }, { "Sid": "AllowKeyUseThroughEventBridge", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } } }, { "Sid": "AllowEventBridgeServicePrincipal", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } } } ] }
AllowKeyValidationThroughEventBridge 可讓您的委託人在建立或更新匯流排時驗證金鑰。EventBridge kms:DescribeKey會使用您的登入資料呼叫 ,以確認金鑰存在、為對稱且已啟用。 不DescribeKey採用任何加密內容,因此此陳述式沒有任何內容;將其kms:ViaService限制為透過 EventBridge 發出的請求。
AllowKeyUseThroughEventBridge 會在 EventBridge 接受金鑰組態之前,以及在為您寫入或讀取加密資料之前,授權其與您的登入資料一起執行的存取檢查,以便您無法設定服務稍後使用的金鑰,非同步工作無法使用。檢查是 AWS KMS 幹執行:它們會授權,但不會加密和解密任何內容。它們會以標準 AWS KMS 請求計費,並計入您的 AWS KMS 請求配額;請參閱《 AWS KMS 開發人員指南》中的測試您的許可。每個操作都會檢查其後續工作執行的動作:
CreateEventBus透過客戶受管金鑰檢查kms:GenerateDataKeyWithoutPlaintext、kms:ReEncryptTo、kms:ReEncryptFrom和kms:Decrypt,分支金鑰建立和更新版本讀取執行的動作。UpdateEventBus變更目前金鑰kms:Decrypt和新金鑰kms:Encryptkms:Decrypt的金鑰檢查。PutEvents在具有客戶受管金鑰檢查的匯流排PutRawEvents上 和kms:Decrypt。無法回讀匯流排事件的生產者也無法寫入它們。如果沒有它,發佈呼叫會失敗並命名AccessDeniedExceptionKMS_ACCESS_DENIED。CreateSubscriber和UpdateSubscriber檢查kms:Decrypt,因為訂閱者組態是在匯流排金鑰下加密。
因此,此陳述式Principal的 必須涵蓋建立或更新匯流排、發佈至匯流排或在其上建立訂閱者的每個角色。列出角色 ARNs,或為帳戶根主體命名,以將決策委派給您帳戶中的 IAM 政策。
AllowEventBridgeServicePrincipal 授權 EventBridge 在呼叫完成後做為服務執行的工作。kms:GenerateDataKeyWithoutPlaintext、 kms:ReEncryptFrom和 會在輪換時kms:ReEncryptTo建立匯流排的分支金鑰及其新版本。 kms:Decrypt會取消包裝分支金鑰,以交付事件、載入訂閱者組態,以及在描述呼叫時傳回解密的組態。當您變更匯流排金鑰時, kms:Decrypt 會使用 kms:Encrypt重新包裝分支金鑰。
金鑰可以存在於另一個帳戶中,例如中央安全帳戶。將全部三個陳述式放入該金鑰的政策中,將匯流排帳戶的角色做為前兩個的主體,並將匯流排帳戶的匯流排 ARN 放在加密內容值中。匯流排帳戶的角色也需要允許金鑰 ARN 上相同 AWS KMS 動作的 IAM 身分政策,因為跨帳戶 AWS KMS 存取需要雙方的許可。依金鑰的完整金鑰 ARN 命名金鑰。
將金鑰政策範圍調整為一個匯流排
若要將陳述式限制為一個匯流排,請在 上對其進行調節kms:EncryptionContext:aws:events:event-busv2:arn。在匯流排存在之前,請使用 StringLike搭配結尾的 /*,如上述政策所示。對於現有的匯流排,您可以比對以 DescribeEventBus傳回的確切 ARNStringEquals。使用您的登入資料提出的每個請求也會填入 kms:ViaService events.,因此您只能透過 EventBridge 將委託人限制為使用金鑰。region.amazonaws.com
EventBridge 作為服務主體提出的請求aws:SourceArn會與匯流排 ARN 和aws:SourceAccount匯流排帳戶一起攜帶。將它們新增至 ,AllowEventBridgeServicePrincipal讓 EventBridge 只能將金鑰用於您自己的匯流排。
"Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } }
個別發佈和交付操作會使用快取的分支金鑰,而且不會重新檢查每個事件的金鑰政策。金鑰政策變更,包括移除 EventBridge 存取權的政策,會在快取分支金鑰過期時於 15 分鐘內對匯流排的資料處理生效。
變更或移除匯流排上的金鑰
呼叫 UpdateEventBus將匯流排從 AWS 擁有的金鑰移至客戶受管金鑰、從一個客戶受管金鑰移至另一個,或移回 AWS 擁有的金鑰。若要返回 AWS 擁有的金鑰,請以 的形式傳送EncryptionConfiguration現有和空白--encryption-configuration '{}'。EncryptionConfiguration 完全省略 ,匯流排會保留其目前的金鑰。
當 EventBridge 在新金鑰下重新包裝分支金鑰UPDATING時,匯流排會進入 ,然後傳回 ACTIVE。分支金鑰本身不會變更,因此 EventBridge 不會重新加密任何預存事件,無論匯流排持有什麼,變更都會快速完成,而且無論舊金鑰的狀態為何,先前寫入的事件都會保持可讀狀態。一旦 DescribeEventBus 顯示ACTIVE具有新金鑰的匯流排,您就可以停用舊金鑰。
如果 EventBridge 無法使用新金鑰,匯流排會穩定並UPDATE_FAILED繼續使用其先前的金鑰:它仍會接受並交付事件,並DescribeEventBus持續報告舊金鑰。失敗的金鑰永遠不會成為匯流排金鑰。在您修正其政策後,使用可用的金鑰或相同的金鑰UpdateEventBus再次呼叫 ,而匯流排會傳回 ACTIVE。在金鑰上建立失敗的匯流排會在 CREATE_FAILED StateReason 中以 命名 AWS KMS 拒絕;該狀態僅接受 DeleteEventBus,並以 命名其接受狀態的訊息 UpdateEventBus 拒絕[ACTIVE, UPDATE_FAILED]。修正金鑰政策、刪除匯流排,然後再次建立。如需 狀態,請參閱 匯流排狀態和每個允許的項目。
如果您在金鑰上啟用自動金鑰輪換, 會在相同的金鑰 ARN 後方 AWS KMS 輪換備份材料。分支金鑰會保持由包裝它的物料包裝,而大約每 30 天建立的下一個分支金鑰版本會使用目前的物料。因此, AWS KMS 輪換大約會在一個月內到達您的匯流排。
當金鑰變得無法使用時
如果您停用金鑰、排定刪除,或移除 EventBridge 的存取權,匯流排會在 15 分鐘內繼續運作,直到其快取分支金鑰過期為止。然後,發佈至匯流排會失敗並出現 AWS KMS 存取錯誤,且交付會暫停。EventBridge 不會捨棄其已接受的事件,也不會將其傳送至無效字母佇列;它會保留並重試它們,因為金鑰存取失敗是您可以修正的條件。當您還原存取權時,請自行發佈和繼續交付。除非中斷超過匯流排的保留期,否則不會遺失任何事件。
刪除金鑰是永久的。在 AWS KMS 刪除匯流排上設定的金鑰後,EventBridge 就無法再取消包裝匯流排的分支金鑰,而且在保留期間的剩餘時間內,仍存放在匯流排上的每個事件都無法讀取。首先停用金鑰、確認效果,然後只排程刪除;請參閱《 AWS KMS 開發人員指南》中的刪除 AWS KMS 金鑰。 DeleteEventBus 不需要金鑰:當金鑰停用或刪除時,它會成功。
在 CloudTrail 中監控金鑰使用
EventBridge 對客戶受管金鑰所做的每個請求都會記錄在 CloudTrail 中;請參閱使用 CloudTrail 記錄 AWS KMS API 呼叫。下表列出預期的事件。
eventName |
當 | 呼叫身分 |
|---|---|---|
DescribeKey |
匯流排建立和更新的金鑰驗證 | 您的委託人,透過 EventBridge |
Decrypt、Encrypt、GenerateDataKeyWithoutPlaintext、 ReEncrypt(試執行) |
匯流排建立和更新、發佈以及訂閱者建立和更新的存取檢查 | 您的委託人,透過 EventBridge |
GenerateDataKeyWithoutPlaintext, ReEncrypt |
匯流排建立時的分支金鑰建立,以及大約每 30 天的分支金鑰輪換 | events.amazonaws.com |
Decrypt |
快取過期時取消包裝分支金鑰:事件交付、訂閱者組態載入、描述呼叫 | events.amazonaws.com |
Decrypt 和 Encrypt |
UpdateEventBus 變更金鑰時重新包裝分支金鑰 |
events.amazonaws.com |
CloudTrail 會將ReEncrypt呼叫記錄為一個事件; kms:ReEncryptFrom和 kms:ReEncryptTo許可都會授權它。顯示的試轉項目DryRunOperationException是通過存取檢查,而不是組態中的錯誤;顯示的項目AccessDeniedException表示發起人缺少正在檢查的許可。每個項目requestParameters.encryptionContext的 都aws:events:event-busv2:arn包含您的匯流排 ARN。分支金鑰項目也會包含階層式 Keyring 的欄位: branch-key-id(匯流排 ARN)type、、create-time、tablename、 hierarchy-version和 kms-arn。每個事件加密和解密會使用從快取分支金鑰本機衍生的資料金鑰,因此個別事件不會出現在 CloudTrail 中。
傳輸中加密
所有自訂事件匯流排 API 呼叫都會傳送至 HTTPS 端點 eventsv2.,而且每個請求都必須使用您的 憑證簽署。FIPS 端點 region.amazonaws.comeventsv2-fips.可在您需要的地方使用。如需 EventBridge 一般資料保護,請參閱 Amazon EventBridge 安全性。region.amazonaws.com