本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 AWS KMS 金鑰原則 CloudTrail
您可以通過三種方式創建: AWS KMS key
-
CloudTrail 控制台
-
AWS 管理主控台
-
該 AWS CLI
注意
如果您在 CloudTrail 主控台中建立KMS金鑰,請為您 CloudTrail 新增必要的KMS金鑰原則。您不需要手動新增政策陳述式。請參閱在 CloudTrail 控制台中創建默認KMS密鑰策略。
如果您在「 AWS 管理」或「」中建立KMS金鑰 AWS CLI,則必須將原則區段新增至金鑰,以便與金鑰搭配使用 CloudTrail。此原則必須允許 CloudTrail 使用金鑰來加密您的記錄檔和事件資料存放區,並允許您指定的使用者以未加密的形式讀取記錄檔。
請參閱下列資源:
-
若要使用建立KMS金鑰 AWS CLI,請參閱建立金鑰。
-
若要編輯的KMS金鑰政策 CloudTrail,請參閱AWS Key Management Service 開發人員指南中的編輯金鑰政策。
-
如需 CloudTrail 使用方式的技術詳細資訊 AWS KMS,請參閱AWS Key Management Service 開發人員指南 AWS KMS中的 AWS CloudTrail 使用方式。
與搭配使用的必要KMS金鑰原則區段 CloudTrail
如果您使用 AWS 管理主控台或建立KMS金鑰 AWS CLI,則至少必須將下列陳述式新增至您的KMS金鑰原則,才能使其搭配使用 CloudTrail。
追蹤的必要KMS金鑰原則元素
-
啟用 CloudTrail 記錄檔加密權限。請參閱授予加密許可。
-
啟用 CloudTrail 記錄檔解密權限。請參閱授予解密許可。如果您使用具有 S3 儲存貯體金鑰的現有 S3 儲存貯體,則建立或更新已啟用KMS加密的SSE追蹤時,需要
kms:Decrypt
許可。 -
啟用 CloudTrail 以描述KMS金鑰屬性。請參閱啟用 CloudTrail 以描述KMS金鑰屬性。
安全性最佳做法是將aws:SourceArn
條件金鑰新增至KMS金鑰原則。IAM全域條件索引鍵aws:SourceArn
有助於確保僅針對特定追蹤或追蹤 CloudTrail 使用KMS金鑰。的值永遠aws:SourceArn
是使用索KMS引鍵的軌跡 ARN ARNs (或軌跡陣列)。請務必將aws:SourceArn
條件金鑰新增至現有追蹤的KMS金鑰原則。
亦支援 aws:SourceAccount
條件金鑰,但不建議使用。aws:SourceAccount
的值是追蹤擁有者的帳戶 ID,或是組織追蹤的管理帳戶 ID。
重要
當您將新區段新增至KMS金鑰原則時,請勿變更原則中的任何現有區段。
如果追蹤已啟用加密,且KMS金鑰已停用,或KMS金鑰原則未正確設定 CloudTrail,則 CloudTrail 無法傳遞記錄檔。
事件資料存放區的必要KMS金鑰原則元素
-
啟用 CloudTrail 記錄檔加密權限。請參閱授予加密許可。
-
啟用 CloudTrail 記錄檔解密權限。請參閱授予解密許可。
-
授與使用者和角色使用KMS金鑰加密和解密事件資料存放區資料的權限。
當您建立事件資料存放區並使用KMS金鑰加密,或在您使用金鑰加密的事件資料存放區上執行查詢時,您應該具有KMS金KMS鑰的寫入權限。KMS金鑰原則必須具有的存取權 CloudTrail,而且KMS金鑰應由在事件資料存放區上執行作業 (例如查詢) 的使用者管理。
-
啟用 CloudTrail 以描述KMS金鑰屬性。請參閱啟用 CloudTrail 以描述KMS金鑰屬性。
事aws:SourceAccount
件aws:SourceArn
資料存放區的金KMS鑰原則中不支援和條件金鑰。
重要
當您將新區段新增至KMS金鑰原則時,請勿變更原則中的任何現有區段。
如果在事件資料存放區上啟用了加密,且KMS金鑰已停用或刪除,或KMS金鑰原則未正確設定 CloudTrail,則 CloudTrail無法將事件傳遞至您的事件資料存放區。
授予加密許可
範例 允 CloudTrail 許代表特定帳號加密記錄檔
CloudTrail 需要明確的權限才能使用密KMS鑰代表特定帳戶加密日誌。若要指定帳戶,請將下列必要陳述式新增至您的KMS金鑰政策並取代 account-id
,
region
和 trailName
為您的配置提供適當的值。您可以在EncryptionContext
區段中新增其他帳戶IDs,讓這些帳戶用 CloudTrail 來使用您的KMS金鑰來加密記錄檔。
安全性最佳做法是將aws:SourceArn
條件金鑰新增至追蹤的KMS金鑰原則。IAM全域條件索引鍵aws:SourceArn
有助於確保僅針對特定追蹤或追蹤 CloudTrail 使用KMS金鑰。
{ "Sid": "Allow CloudTrail to encrypt logs", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:
region
:account-id
:trail/trail-name
" }, "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:account-id
:trail/*" } } }
用於加密 CloudTrail Lake 事件資料存放區記錄檔的金KMS鑰政策無法使用條件金鑰aws:SourceArn
或aws:SourceAccount
。以下是事件資料存放區的KMS金鑰原則範例。
{ "Sid": "Allow CloudTrail to encrypt event data store", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }
下列範例政策陳述式說明其他帳戶如何使用您的KMS金鑰來加密 CloudTrail 記錄檔。
案例
-
您的KMS密鑰已在帳戶中
111111111111
. -
您和帳戶
222222222222
將加密日誌。
在策略中,您可以將一個或多個使用您的金鑰加密的帳戶新增至 CloudTrail EncryptionContext. 這會限制只 CloudTrail 使用您指定之帳戶的金鑰來加密記錄。當你給帳戶的根 222222222222
加密日誌的權限,它將權限委派給帳戶管理員,以加密必要的權限給該帳戶中的其他用戶。帳戶管理員透過變更與這些IAM使用者相關聯的策略來執行此操作。
安全性最佳做法是將aws:SourceArn
條件金鑰新增至KMS金鑰原則。IAM全域條件索引鍵aws:SourceArn
有助於確保僅針對指定的追蹤 CloudTrail 使用KMS索引鍵。事件資料存放區的KMS關鍵原則不支援此條件。
KMS關鍵政策聲明:
{ "Sid": "Enable CloudTrail encrypt permissions", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": [ "arn:aws:cloudtrail:*:
111111111111
:trail/*", "arn:aws:cloudtrail:*:222222222222
:trail/*" ] }, "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region
:account-id
:trail/trail-name
" } } }
如需有關編輯與搭配使用的KMS金鑰原則的詳細資訊 CloudTrail,請參閱 AWS Key Management Service 開發人員指南中的編輯金鑰政策。
授予解密許可
在您將KMS金鑰新增至 CloudTrail 組態之前,請務必將解密權限授予所有需要這些權限的使用者。具加密許可但不具解密許可的使用者無法讀取加密的日誌。如果您使用具有 S3 儲存貯體金鑰的現有 S3 儲存貯體,則建立或更新已啟用KMS加密的SSE追蹤時,需要kms:Decrypt
許可。
啟用 CloudTrail 記錄檔解密權限
您的金鑰使用者必須獲得明確的權限,才能讀取 CloudTrail 已加密的記錄檔。若要讓使用者能夠讀取加密的記錄檔,請將下列必要的陳述式新增至您的KMS金鑰原則,修改Principal
區段,為您希望能夠使用KMS金鑰解密的每個主體新增一行。
{ "Sid": "Enable CloudTrail log decrypt permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account-id
:user/username
" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }
以下是允許 CloudTrail 服務主體解密追蹤記錄所需的範例原則。
{ "Sid": "Allow CloudTrail to decrypt a trail", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }
與 CloudTrail Lake 事件資料存放區搭配使用的KMS金鑰的解密政策類似於以下內容。ARNs指定為值的使用者或角色Principal
需要解密權限,才能建立或更新事件資料存放區、執行查詢或取得查詢結果。
{ "Sid": "Enable user key permissions for event data stores" "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account-id
:user/username
" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
以下是允許 CloudTrail 服務主體解密事件資料存放區記錄檔所需的範例原則。
{ "Sid": "Allow CloudTrail to decrypt an event data store", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }
允許您帳戶中的使用者使用您的KMS金鑰解密追蹤記錄
範例
此政策陳述式示範如何允許您帳戶中的使用者或角色,使用您的金鑰讀取您帳戶之 S3 儲存貯體中的加密日誌。
範例 案例
-
您的KMS金鑰、S3 儲存貯體和IAM使用者 Bob 都在帳戶中
。111111111111
-
您授予IAM使用者 Bob 解密 S3 儲存貯體中 CloudTrail 日誌的權限。
在金鑰原則中,您啟IAM用使用者 Bob 的 CloudTrail 記錄檔解密權限。
KMS關鍵政策聲明:
{ "Sid": "Enable CloudTrail log decrypt permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111111111111
:user/Bob" }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region
:account-id
:key/key-id
", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }
主題
允許其他帳戶中的使用者使用您的KMS金鑰解密追蹤記錄
您可以允許其他帳戶中的使用者使用您的KMS金鑰來解密追蹤記錄,但不能解密事件資料存放區記錄。您金鑰政策所需的變更,取決於 S3 儲存貯體在您的帳戶中或另一個帳戶中。
允許其他帳戶中的儲存貯體使用者解密日誌
範例
此政策聲明說明如何允許其他帳戶中的使用IAM者或角色使用您的金鑰讀取其他帳戶中 S3 儲存貯體的加密日誌。
案例
-
您的KMS密鑰在帳戶中
。111111111111
-
用IAM戶愛麗絲和 S3 桶帳戶
。222222222222
在這種情況下,您 CloudTrail 授予解密帳戶下的日誌的權限
,並授予愛麗絲的用IAM戶策略權限,以使用您的密鑰222222222222
,這是在帳戶KeyA
。111111111111
KMS關鍵政策聲明:
{ "Sid": "Enable encrypted CloudTrail log read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
222222222222
:root" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region
:account-id
:key/key-id
", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }
愛麗絲的IAM用戶政策聲明:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-west-2:
111111111111
:key/KeyA
" } ] }
允許其他帳戶中的使用者從您的儲存貯體解密追蹤日誌
範例
此政策示範另一個帳戶如何使用您的金鑰從您的 S3 儲存貯體讀取加密日誌。
範例 案例
-
您的KMS金鑰和 S3 儲存貯體已在帳戶中
。111111111111
-
要從您儲存貯體讀取日誌的使用者位於帳戶
中。222222222222
若要啟用此案例,請為帳戶CloudTrailReadRole中的IAM角色啟用解密權限,然後授與其他帳戶擔任該角色的權限。
KMS關鍵政策聲明:
{ "Sid": "Enable encrypted CloudTrail log read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::11111111111:role/CloudTrailReadRole" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:
region
:account-id
:key/key-id
", "Condition": { "Null": { "kms:EncryptionContext:aws:cloudtrail:arn": "false" } } }
CloudTrailReadRole信託實體政策聲明:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
222222222222
:root" }, "Action": "sts:AssumeRole" } ] }
如需有關編輯KMS金鑰原則以搭配使用的詳細資訊 CloudTrail,請參閱AWS Key Management Service 開發人員指南中的編輯金鑰原則。
啟用 CloudTrail 以描述KMS金鑰屬性
CloudTrail 需要描述KMS密鑰的屬性的能力。若要啟用此功能,請依原樣將下列必要陳述式新增至您的KMS金鑰原則。除了您指定的其他 CloudTrail 權限之外,此陳述式不會授與任何權限。
安全性最佳做法是將aws:SourceArn
條件金鑰新增至KMS金鑰原則。IAM全域條件索引鍵aws:SourceArn
有助於確保僅針對特定追蹤或追蹤 CloudTrail 使用KMS金鑰。
{ "Sid": "Allow CloudTrail access", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:
region
:account-id
:key/key-id
", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region
:account-id
:trail/trail-name
" } } }
如需有關編輯KMS金鑰原則的詳細資訊,請參閱AWS Key Management Service 開發人員指南中的編輯金鑰原則。