設定 AWS KMS 金鑰原則 CloudTrail - AWS CloudTrail

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 AWS KMS 金鑰原則 CloudTrail

您可以通過三種方式創建: AWS KMS key

  • CloudTrail 控制台

  • AWS 管理主控台

  • 該 AWS CLI

注意

如果您在 CloudTrail 主控台中建立KMS金鑰,請為您 CloudTrail 新增必要的KMS金鑰原則。您不需要手動新增政策陳述式。請參閱在 CloudTrail 控制台中創建默認KMS密鑰策略

如果您在「 AWS 管理」或「」中建立KMS金鑰 AWS CLI,則必須將原則區段新增至金鑰,以便與金鑰搭配使用 CloudTrail。此原則必須允許 CloudTrail 使用金鑰來加密您的記錄檔和事件資料存放區,並允許您指定的使用者以未加密的形式讀取記錄檔。

請參閱下列資源:

與搭配使用的必要KMS金鑰原則區段 CloudTrail

如果您使用 AWS 管理主控台或建立KMS金鑰 AWS CLI,則至少必須將下列陳述式新增至您的KMS金鑰原則,才能使其搭配使用 CloudTrail。

追蹤的必要KMS金鑰原則元素

  1. 啟用 CloudTrail 記錄檔加密權限。請參閱授予加密許可

  2. 啟用 CloudTrail 記錄檔解密權限。請參閱授予解密許可。如果您使用具有 S3 儲存貯體金鑰的現有 S3 儲存貯體,則建立或更新已啟用KMS加密的SSE追蹤時,需要kms:Decrypt許可。

  3. 啟用 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金鑰原則元素

  1. 啟用 CloudTrail 記錄檔加密權限。請參閱授予加密許可

  2. 啟用 CloudTrail 記錄檔解密權限。請參閱授予解密許可

  3. 授與使用者和角色使用KMS金鑰加密和解密事件資料存放區資料的權限。

    當您建立事件資料存放區並使用KMS金鑰加密,或在您使用金鑰加密的事件資料存放區上執行查詢時,您應該具有KMS金KMS鑰的寫入權限。KMS金鑰原則必須具有的存取權 CloudTrail,而且KMS金鑰應由在事件資料存放區上執行作業 (例如查詢) 的使用者管理。

  4. 啟用 CloudTrail 以描述KMS金鑰屬性。請參閱啟用 CloudTrail 以描述KMS金鑰屬性

aws:SourceAccountaws:SourceArn資料存放區的金KMS鑰原則中不支援和條件金鑰。

重要

當您將新區段新增至KMS金鑰原則時,請勿變更原則中的任何現有區段。

如果在事件資料存放區上啟用了加密,且KMS金鑰已停用或刪除,或KMS金鑰原則未正確設定 CloudTrail,則 CloudTrail無法將事件傳遞至您的事件資料存放區。

授予加密許可

範例 允 CloudTrail 許代表特定帳號加密記錄檔

CloudTrail 需要明確的權限才能使用密KMS鑰代表特定帳戶加密日誌。若要指定帳戶,請將下列必要陳述式新增至您的KMS金鑰政策並取代 account-id, regiontrailName 為您的配置提供適當的值。您可以在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:SourceArnaws: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 授予解密帳戶下的日誌的權限222222222222,並授予愛麗絲的用IAM戶策略權限,以使用您的密鑰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 開發人員指南中的編輯金鑰原則