

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

# 使用 AWS KMS 金鑰加密 CloudTrail 日誌檔案、摘要檔案和事件資料存放區 (SSE-KMS)
<a name="encrypting-cloudtrail-log-files-with-aws-kms"></a>

根據預設，CloudTrail 交付至儲存貯體的日誌檔案和摘要檔案會使用[伺服器端加密搭配 KMS 金鑰 (SSE-KMS) 進行加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。如果您未啟用 SSE-KMS 加密，您的日誌檔案和摘要檔案會使用 [SSE-S3 加密進行加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

**注意**  
如果您使用現有的 S3 儲存貯體搭配 [S3 儲存貯體金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)，則必須在金鑰政策中允許 CloudTrail 使用 AWS KMS 動作 `GenerateDataKey`和 的許可`DescribeKey`。如果 `cloudtrail.amazonaws.com` 未授與金鑰政策中的這些許可，則無法建立或更新追蹤。

若要搭配 CloudTrail 使用 SSE-KMS，您可以建立和管理 [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)。您可以將政策連接至 金鑰，以決定哪些使用者可以使用金鑰來加密和解密 CloudTrail 日誌檔案和摘要檔案。解密是透過 S3 無縫進行。當金鑰的授權使用者讀取 CloudTrail 日誌檔案或摘要檔案時，S3 會管理解密，授權使用者能夠以未加密的形式讀取檔案。

這種方法具有下列優勢：
+ 您可以自行建立和管理 KMS 金鑰。
+ 您可以使用單一 KMS 金鑰來加密和解密所有區域中多個帳戶的日誌檔案和摘要檔案。
+ 您可以控制誰可以使用您的金鑰來加密和解密 CloudTrail 日誌檔案和摘要檔案。您可以根據需求將金鑰的許可指派給組織中的使用者。
+ 您可以增強安全性。使用此功能時，若要讀取日誌檔案或摘要檔案，需要下列許可：
  + 使用者必須擁有包含日誌檔案和摘要檔案之儲存貯體的 S3 讀取許可。
  + 使用者還必須套用允許 KMS 金鑰政策解密許可的政策或角色。
+ 由於 S3 會自動解密授權使用 KMS 金鑰之使用者請求的日誌檔案和摘要檔案，因此檔案的 SSE-KMS 加密與讀取 CloudTrail 日誌資料的應用程式回溯相容。

**注意**  
您選擇的 KMS 金鑰必須在與接收日誌檔案和摘要檔案的 Amazon S3 儲存貯體相同的 AWS 區域中建立。例如，如果日誌檔案和摘要檔案將存放在美國東部 （俄亥俄） 區域的儲存貯體中，您必須建立或選擇在該區域中建立的 KMS 金鑰。若要驗證 Amazon S3 儲存貯體的區域，請在 Amazon S3 主控台中檢查其屬性。

根據預設，CloudTrail 會加密事件資料存放區。建立或更新事件資料存放區時，您可以選擇使用自己的 KMS 金鑰進行加密。

## 啟用日誌檔案加密
<a name="encrypting-cloudtrail-log-files-with-aws-kms-enabling"></a>

**注意**  
如果您在 CloudTrail 主控台中建立 KMS 金鑰，CloudTrail 會為您新增必要的 KMS 金鑰政策區段。如果您在 IAM 主控台或 中建立金鑰， AWS CLI 而且需要手動新增必要的政策區段，請遵循這些程序。

若要啟用 CloudTrail 日誌檔案的 SSE-KMS 加密，請執行下列高階步驟：

1. 建立 KMS 金鑰。
   + 如需有關使用 建立 KMS 金鑰的資訊 AWS 管理主控台，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。
   + 如需使用 建立 KMS 金鑰的資訊 AWS CLI，請參閱 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)。
**注意**  
您選擇的 KMS 金鑰必須與接收日誌檔案和摘要檔案的 S3 儲存貯體位於相同的區域。若要驗證 S3 儲存貯體的區域，請在 S3 主控台中檢查儲存貯體的屬性。

1. 將政策區段新增至金鑰，讓 CloudTrail 加密和使用者解密日誌檔案和摘要檔案。
   + 如需政策中所含項目的資訊，請參閱「[設定 CloudTrail 的 AWS KMS 金鑰政策](create-kms-key-policy-for-cloudtrail.md)」。
**警告**  
請務必針對需要讀取日誌檔案或摘要檔案的所有使用者，在政策中包含解密許可。如果您在將金鑰新增至線索組態之前未先執行此步驟，則沒有解密許可的使用者就無法讀取加密檔案；除非您授與他們那些許可。
   + 如需使用 IAM 主控台編輯政策的資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[編輯金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)。
   + 如需有關使用 將政策連接至 KMS 金鑰的資訊 AWS CLI，請參閱 [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)。

1. 更新您的線索或事件資料存放區，以使用您為 CloudTrail 修改的政策的 KMS 金鑰。
   + 若要使用 CloudTrail 主控台更新追蹤或事件資料存放區，請參閱 [更新資源以搭配 主控台使用您的 KMS 金鑰](create-kms-key-policy-for-cloudtrail-update-trail.md)。
   + 若要使用 更新線索或事件資料存放區 AWS CLI，請參閱 [使用 啟用和停用 CloudTrail 日誌檔案、摘要檔案和事件資料存放區的加密 AWS CLI](cloudtrail-log-file-encryption-cli.md)。

CloudTrail 也支援 AWS KMS 多區域金鑰。如需多區域金鑰的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[使用多區域金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。

下節說明您 KMS 金鑰政策與 CloudTrail 搭配使用所需的政策區段。

# 授與建立 KMS 金鑰的許可
<a name="granting-kms-permissions"></a>

您可以授予使用者使用 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSKeyManagementServicePowerUser.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSKeyManagementServicePowerUser.html)政策建立 AWS KMS key 的許可。

**准許建立 KMS 金鑰的許可**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 選擇您要授予許可的群組或使用者。

1. 選擇**許可**索引標籤。

1.  從**新增許可**清單中，選擇**連接政策**。

1. 搜尋 **AWSKeyManagementServicePowerUser**，選擇政策，然後選擇**連接政策**。

   使用者現在具備建立 KMS 金鑰的許可。如需建立政策的詳細資訊，請參閱《[IAM 使用者指南》中的建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。 **

# 設定 CloudTrail 的 AWS KMS 金鑰政策
<a name="create-kms-key-policy-for-cloudtrail"></a>

您可以透過 AWS KMS key 三種方式建立 ：
+ CloudTrail 主控台
+  AWS 管理主控台
+ 的 AWS CLI

**注意**  
如果您在 CloudTrail 主控台中建立 KMS 金鑰，CloudTrail 會為您新增必要的 KMS 金鑰政策。您不需要手動新增政策陳述式。請參閱 [在 CloudTrail 主控台中建立的預設金鑰政策](default-kms-key-policy.md)。

如果您在 AWS 管理主控台 或 中建立 KMS 金鑰 AWS CLI，則必須將政策區段新增至金鑰，以便將其與 CloudTrail 搭配使用。此政策必須允許 CloudTrail 使用 金鑰來加密您的日誌檔案、摘要檔案和事件資料存放區，並允許您指定的使用者以未加密的形式讀取日誌檔案和摘要檔案。

請參閱下列資源：
+ 若要使用 建立 KMS 金鑰 AWS CLI，請參閱 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)。
+ 若要編輯 CloudTrail 的 KMS 金鑰政策，請參閱《AWS Key Management Service 開發人員指南》**中的[編輯金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)。
+ 如需 CloudTrail 使用方式的技術詳細資訊 AWS KMS，請參閱 [AWS CloudTrail 如何使用 AWS KMS](how-kms-works-with-cloudtrail.md)。

**Topics**
+ [

## 搭配 CloudTrail 使用的必要的 KMS 金鑰政策區段
](#create-kms-key-policy-for-cloudtrail-policy-sections)
+ [

## 授予追蹤的加密許可
](#create-kms-key-policy-for-cloudtrail-encrypt)
+ [

## 授予事件資料存放區的加密許可
](#create-kms-key-policy-for-cloudtrail-encrypt-eds)
+ [

## 授予追蹤的解密許可
](#create-kms-key-policy-for-cloudtrail-decrypt)
+ [

## 授予事件資料存放區的解密許可
](#create-kms-key-policy-for-cloudtrail-decrypt-eds)
+ [

## 啟用 CloudTrail 以描述 KMS 金鑰屬性
](#create-kms-key-policy-for-cloudtrail-describe)
+ [

# 在 CloudTrail 主控台中建立的預設金鑰政策
](default-kms-key-policy.md)

## 搭配 CloudTrail 使用的必要的 KMS 金鑰政策區段
<a name="create-kms-key-policy-for-cloudtrail-policy-sections"></a>

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

**Topics**
+ [

### 適用於追蹤的必要 KMS 金鑰政策
](#required-kms-key-policy-trails)
+ [

### 適用於事件資料存放區的必要 KMS 金鑰政策
](#required-kms-key-policy-eventdatastores)

### 適用於追蹤的必要 KMS 金鑰政策
<a name="required-kms-key-policy-trails"></a>

1. 授予加密 CloudTrail 日誌和摘要檔案的許可。如需詳細資訊，請參閱[授予追蹤的加密許可](#create-kms-key-policy-for-cloudtrail-encrypt)。

1. 授予解密 CloudTrail 日誌和摘要檔案的許可。如需詳細資訊，請參閱[授予追蹤的解密許可](#create-kms-key-policy-for-cloudtrail-decrypt)。如果您使用帶有 [ S3 儲存貯體金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)的現有 S3 儲存貯體，則需要 `kms:Decrypt` 許可才能建立或更新啟用 SSE-KMS 加密的追蹤。

1. 啟用 CloudTrail 以描述 KMS 金鑰屬性。如需詳細資訊，請參閱[啟用 CloudTrail 以描述 KMS 金鑰屬性](#create-kms-key-policy-for-cloudtrail-describe)。

安全最佳實務是將 `aws:SourceArn` 條件金鑰新增至 KMS 金鑰政策。IAM 全域條件金鑰 `aws:SourceArn` 可協助確保 CloudTrail 僅針對特定追蹤使用 KMS 金鑰。`aws:SourceArn` 的值一律為使用 KMS 金鑰的追蹤 ARN (或追蹤 ARN 陣列)。請務必將 `aws:SourceArn` 條件金鑰新增至現有追蹤的 KMS 金鑰政策。

亦支援 `aws:SourceAccount` 條件金鑰，但不建議使用。`aws:SourceAccount` 的值是追蹤擁有者的帳戶 ID，或是組織追蹤的管理帳戶 ID。

**重要**  
當您為 KMS 金鑰政策新增區段時，請勿變更政策中任何現有的區段。  
若追蹤已啟用加密，但 KMS 金鑰已停用或 CloudTrail 的 KMS 金鑰政策設定不正確，則 CloudTrail 不會交付日誌。

### 適用於事件資料存放區的必要 KMS 金鑰政策
<a name="required-kms-key-policy-eventdatastores"></a>

1. 授予加密 CloudTrail Lake 事件資料存放區的許可。如需詳細資訊，請參閱[授予事件資料存放區的加密許可](#create-kms-key-policy-for-cloudtrail-encrypt-eds)。

1. 授予解密 CloudTrail Lake 事件資料存放區的許可。如需詳細資訊，請參閱[授予事件資料存放區的解密許可](#create-kms-key-policy-for-cloudtrail-decrypt-eds)。

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

1. 啟用 CloudTrail 以描述 KMS 金鑰屬性。如需詳細資訊，請參閱[啟用 CloudTrail 以描述 KMS 金鑰屬性](#create-kms-key-policy-for-cloudtrail-describe)。

事件資料存放區的 KMS 金鑰政策中不支援 `aws:SourceArn` 和 `aws:SourceAccount` 條件金鑰。

**重要**  
當您為 KMS 金鑰政策新增區段時，請勿變更政策中任何現有的區段。  
若事件資料存放區已啟用加密，但 KMS 金鑰已停用或刪除，或者 CloudTrail 的 KMS 金鑰政策設定不正確，則 CloudTrail 不會將事件傳送到事件資料存放區。

## 授予追蹤的加密許可
<a name="create-kms-key-policy-for-cloudtrail-encrypt"></a>

**Example 允許 CloudTrail 代表特定帳戶加密日誌檔案和摘要檔案**  
CloudTrail 需要明確許可，才能使用 KMS 金鑰來代表特定帳戶加密日誌檔案和摘要檔案。若要指定帳戶，請將下列必要陳述式新增至您的 KMS 金鑰政策，並將 *account-id*、*region* 和 *trailName* 替換為適當的組態值。您可以將其他帳戶 IDs 新增至 `EncryptionContext`區段，讓這些帳戶能夠使用 CloudTrail 使用您的 KMS 金鑰來加密日誌檔案和摘要檔案。  
安全最佳實務是將 `aws:SourceArn` 條件金鑰新增至追蹤的 KMS 金鑰政策。IAM 全域條件金鑰 `aws:SourceArn` 可協助確保 CloudTrail 僅針對特定追蹤使用 KMS 金鑰。

```
{
   "Sid": "AllowCloudTrailEncryptLogs",
   "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/*"
         }
    }
}
```

**Example**  
下列範例政策陳述式說明另一個帳戶如何使用您的 KMS 金鑰來加密 CloudTrail 日誌檔案和摘要檔案。

**案例**
+ 您的 KMS 金鑰在帳戶 *111111111111* 中。
+ 您和帳戶 *222222222222* 都要加密日誌。

在該政策中，您要將使用您金鑰加密的一或多個帳戶新增至 CloudTrail **EncryptionContext**。這會將 CloudTrail 限制為您指定的帳戶使用金鑰來加密日誌檔案和摘要檔案。當您授予帳戶 *222222222222* 的根許可來加密日誌檔案和摘要檔案時，它會將許可委派給帳戶管理員，以加密該帳戶中其他使用者的必要許可。帳戶管理員透過變更與這些 IAM 使用者相關聯的政策來執行此操作。

安全最佳實務是將 `aws:SourceArn` 條件金鑰新增至 KMS 金鑰政策。IAM 全域條件索引鍵 `aws:SourceArn` 可協助確保 CloudTrail 僅針對特定追蹤使用 KMS 金鑰。事件資料存放區的 KMS 金鑰政策中不支援此條件。

KMS 金鑰政策聲明：

```
{
  "Sid": "EnableCloudTrailEncryptPermissions",
  "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 開發人員指南》中的[編輯金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)。

## 授予事件資料存放區的加密許可
<a name="create-kms-key-policy-for-cloudtrail-encrypt-eds"></a>

用於加密 CloudTrail Lake 事件資料存放區的 KMS 金鑰政策無法使用 條件金鑰`aws:SourceArn`或 `aws:SourceAccount`。以下是事件資料存放區的 KMS 金鑰政策範例。

```
{
    "Sid": "AllowCloudTrailEncryptEds",
    "Effect": "Allow",
    "Principal": {
        "Service": "cloudtrail.amazonaws.com"
     },
     "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
}
```

## 授予追蹤的解密許可
<a name="create-kms-key-policy-for-cloudtrail-decrypt"></a>

在您將自己的 KMS 金鑰新增至 CloudTrail 組態之前，請務必將解密許可授予所有需要該許可的使用者。具加密許可但不具解密許可的使用者無法讀取加密的日誌。如果您使用帶有 [ S3 儲存貯體金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)的現有 S3 儲存貯體，則需要 `kms:Decrypt` 許可才能建立或更新啟用 SSE-KMS 加密的追蹤。

**允許 CloudTrail 日誌解密許可**  
您的金鑰使用者必須擁有明確的許可，才能讀取 CloudTrail 加密的日誌檔案。若要允許使用者讀取加密的日誌，請將下列必要陳述式新增至您的 KMS 金鑰政策，並修改 `Principal` 區段，為您希望可以使用您 KMS 金鑰解密的每個主體 (角色或使用者) 新增程式碼。

```
{
  "Sid": "EnableCloudTrailLogDecryptPermissions",
  "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": "AllowCloudTrailDecryptTrail",
      "Effect": "Allow",
      "Principal": {
          "Service": "cloudtrail.amazonaws.com"
        },
      "Action": "kms:Decrypt",
      "Resource": "*"
}
```

### 允許您帳戶中的使用者使用您的 KMS 金鑰解密追蹤日誌
<a name="create-kms-key-policy-for-cloudtrail-decrypt-your-account"></a>

**範例**  
此政策陳述式示範如何允許您帳戶中的使用者或角色，使用您的金鑰讀取您帳戶之 S3 儲存貯體中的加密日誌。

**Example 案例**  
+ 您的 KMS 金鑰、S3 儲存貯體和 IAM 使用者 Bob 都在帳戶 `111111111111` 中。
+ 您要授予 IAM 使用者 Bob 解密 S3 儲存貯體中之 CloudTrail 日誌的許可。

在金鑰政策中，您要為 IAM 使用者 Bob 允許 CloudTrail 日誌解密許可。

KMS 金鑰政策聲明：

```
{
  "Sid": "EnableCloudTrailLogDecryptPermissions",
  "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"
    }
  }
}
```

**Topics**

### 允許其他帳戶中的使用者使用您的 KMS 金鑰解密追蹤日誌
<a name="create-kms-key-policy-for-cloudtrail-decrypt-other-accounts"></a>

您可以允許其他帳戶中的使用者使用您的 KMS 金鑰來解密追蹤日誌。您金鑰政策所需的變更，取決於 S3 儲存貯體在您的帳戶中或另一個帳戶中。

#### 允許其他帳戶中的儲存貯體使用者解密日誌
<a name="create-kms-key-policy-for-cloudtrail-decrypt-different-bucket"></a>

**範例**  
此政策陳述式示範如何允許其他帳戶中的 IAM 使用者或角色，使用您的金鑰從另一個帳戶中的 S3 儲存貯體讀取加密日誌。

**案例**
+ 您的 KMS 金鑰在帳戶 `111111111111` 中。
+ IAM 使用者 Alice 和 S3 儲存貯體都在帳戶 `222222222222` 中。

在此案例中，您要授予在帳戶 `222222222222` 下解密日誌的 CloudTrail 許可，再授予 Alice 的 IAM 使用者政策使用您金鑰 `KeyA` (在帳戶 `111111111111` 中) 的許可。

KMS 金鑰政策聲明：

```
{
  "Sid": "EnableEncryptedCloudTrailLogReadAccess",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::222222222222:root"
    ]
  },
  "Action": "kms:Decrypt",
  "Resource": "arn:aws:kms:region:111111111111:key/key-id",
  "Condition": {
    "Null": {
      "kms:EncryptionContext:aws:cloudtrail:arn": "false"
    }
  }
}
```

Alice 的 IAM 使用者政策陳述式：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:us-west-2:111111111111:key/KeyA"
    }
  ]
}
```

------

#### 允許其他帳戶中的使用者從您的儲存貯體解密追蹤日誌
<a name="create-kms-key-policy-for-cloudtrail-decrypt-same-bucket"></a>

**Example**  
此政策示範另一個帳戶如何使用您的金鑰從您的 S3 儲存貯體讀取加密日誌。

**Example 案例**  
+ 您的 KMS 金鑰和 S3 儲存貯體都在帳戶 `111111111111` 中。
+ 要從您儲存貯體讀取日誌的使用者位於帳戶 `222222222222` 中。

若要進行此案例，您要為您帳戶中的 IAM 角色 **CloudTrailReadRole** 允許解密許可，再授予其他帳戶擔任該角色的許可。

KMS 金鑰政策聲明：

```
{
  "Sid": "EnableEncryptedCloudTrailLogReadAccess",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::111111111111:role/CloudTrailReadRole"
    ]
  },
  "Action": "kms:Decrypt",
  "Resource": "arn:aws:kms:region:account-id:key/key-id",
  "Condition": {
    "Null": {
      "kms:EncryptionContext:aws:cloudtrail:arn": "false"
    }
  }
}
```

**CloudTrailReadRole** 信任實體政策陳述式：

------
#### [ JSON ]

****  

```
{
 "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 開發人員指南》*中的[編輯金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)。

## 授予事件資料存放區的解密許可
<a name="create-kms-key-policy-for-cloudtrail-decrypt-eds"></a>

與 CloudTrail Lake 事件資料存放區搭配使用的 KMS 金鑰的解密政策類似如下內容。值指定為 `Principal` 的使用者或角色 ARN 需要解密許可，才能建立或更新事件資料存放區、執行查詢或取得查詢結果。

```
{
      "Sid": "EnableUserKeyPermissionsEds"
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::account-id:user/username"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*"
  }
```

以下是允許 CloudTrail 服務主體解密事件資料存放區所需的範例政策。

```
{
      "Sid": "AllowCloudTrailDecryptEds",
      "Effect": "Allow",
      "Principal": {
          "Service": "cloudtrail.amazonaws.com"
        },
      "Action": "kms:Decrypt",
      "Resource": "*"
}
```

## 啟用 CloudTrail 以描述 KMS 金鑰屬性
<a name="create-kms-key-policy-for-cloudtrail-describe"></a>

CloudTrail 需要描述 KMS 金鑰屬性的能力。若要啟用此功能，請將下列必要陳述式依原內容新增至您的 KMS 金鑰政策。此陳述式不會授予 CloudTrail 您指定之其他許可以外的任何許可。

安全最佳實務是將 `aws:SourceArn` 條件金鑰新增至 KMS 金鑰政策。IAM 全域條件金鑰 `aws:SourceArn` 可協助確保 CloudTrail 僅針對特定追蹤使用 KMS 金鑰。

```
{
  "Sid": "AllowCloudTrailAccess",
  "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 開發人員指南》**中的[編輯金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-editing)。

# 在 CloudTrail 主控台中建立的預設金鑰政策
<a name="default-kms-key-policy"></a>

如果您在 CloudTrail 主控台 AWS KMS key 中建立 ，系統會自動為您建立下列政策。此政策允許這些許可：
+ KMS 金鑰的 Allow AWS 帳戶 (root) 許可。
+ 允許 CloudTrail 在 KMS 金鑰下加密日誌檔案和摘要檔案，並描述 KMS 金鑰。
+ 允許指定帳戶中的所有使用者解密日誌檔案和摘要檔案。
+ 允許指定帳戶中的所有使用者建立 KMS 金鑰的 KMS 別名。
+ 已建立追蹤的帳戶能夠用於帳戶 ID 跨帳戶日誌解密。

**Topics**
+ [

## 適用於追蹤的預設 KMS 金鑰政策
](#default-kms-key-policy-trail)
+ [

## CloudTrail Lake 事件資料存放區的預設 KMS 金鑰政策
](#default-kms-key-policy-eds)

## 適用於追蹤的預設 KMS 金鑰政策
<a name="default-kms-key-policy-trail"></a>

以下是針對您搭配線索使用的 AWS KMS key 所建立的預設政策。

**注意**  
此政策包含允許跨帳戶使用 KMS 金鑰解密日誌檔案和摘要檔案的陳述式。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Key policy created by CloudTrail",
    "Statement": [
        {
            "Sid": "Enable IAM user permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111111111:root",
                    "arn:aws:iam::111111111111:user/username"
                ]
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow CloudTrail to encrypt logs",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
             },
            "Action": "kms:GenerateDataKey*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:us-east-1:111111111111:trail/trail-name"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:111111111111:trail/*"
                }
            }
        },
        {
            "Sid": "Allow CloudTrail to describe key",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
             },
            "Action": "kms:DescribeKey",
            "Resource": "*"
        },
        {
            "Sid": "Allow principals in the account to decrypt log files",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
             },
            "Action": [
                "kms:Decrypt",
                "kms:ReEncryptFrom"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "111111111111"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:111111111111:trail/*"
                }
            }
        },
        {
            "Sid": "Enable cross account log decryption",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "kms:Decrypt",
                "kms:ReEncryptFrom"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "111111111111"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:111111111111:trail/*"
                }
            }
        }
    ]
}
```

------

## CloudTrail Lake 事件資料存放區的預設 KMS 金鑰政策
<a name="default-kms-key-policy-eds"></a>

以下是您用於 CloudTrail Lake 中 AWS KMS key 事件資料存放區之 的預設政策。

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Id": "Key policy created by CloudTrail",
      "Statement": [
        {
          "Sid": "The key created by CloudTrail to encrypt event data stores. Created ${new Date().toUTCString()}",
          "Effect": "Allow",
          "Principal": {
            "Service": "cloudtrail.amazonaws.com"
          },
          "Action": [
            "kms:GenerateDataKey",
            "kms:Decrypt"
          ],
          "Resource": "*"
        },
        {
          "Sid": "Enable IAM user permissions",
          "Effect": "Allow",
          "Principal": {
                "AWS": "arn:aws:iam::111111111111:root"
          },
          "Action": "kms:*",
          "Resource": "*"
        },
        {
          "Sid": "Enable user to have permissions",
          "Effect": "Allow",
          "Principal": {
               "AWS" : "arn:aws:sts::111111111111:assumed-role/example-role-name"
        },
          "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
           ],
          "Resource": "*"
        }
      ]
    }
```

------

# 更新資源以搭配 主控台使用您的 KMS 金鑰
<a name="create-kms-key-policy-for-cloudtrail-update-trail"></a>

在 CloudTrail 主控台上，更新追蹤或事件資料存放區以使用 KMS 金鑰。請注意，使用您自己的 KMS 金鑰會產生加密和解密 AWS KMS 的成本。如需詳細資訊，請參閱[AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。

**Topics**
+ [

## 更新追蹤以使用 KMS 金鑰
](#kms-key-policy-update-trail)
+ [

## 更新事件資料存放區以使用 KMS 金鑰
](#kms-key-policy-update-eds)

## 更新追蹤以使用 KMS 金鑰
<a name="kms-key-policy-update-trail"></a>

若要更新線索以使用您為 CloudTrail 修改 AWS KMS key 的 ，請在 CloudTrail 主控台中完成下列步驟。

**注意**  
如果您使用帶有[S3 儲存貯體金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)的 S3 儲存貯體，則必須在金鑰政策中允許CloudTrail 使用 AWS KMS 動作 `GenerateDataKey` 和 `DescribeKey`。如果 `cloudtrail.amazonaws.com` 未授與金鑰政策中的這些許可，則無法建立或更新追蹤。

若要使用 更新線索 AWS CLI，請參閱 [使用 啟用和停用 CloudTrail 日誌檔案、摘要檔案和事件資料存放區的加密 AWS CLI](cloudtrail-log-file-encryption-cli.md)。

**更新追蹤以使用您的 KMS 金鑰**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) 開啟 CloudTrail 主控台。

1. 選擇 **Trails** (追蹤)，然後選擇追蹤名稱。

1. 在 **General details** (一般詳細資訊) 中，選擇 **Edit **(編輯)。

1. 對於**日誌檔案 SSE-KMS 加密**，如果您想要使用 SSE-KMS 加密而非 SSE-S3 加密來加密日誌檔案和摘要檔案，請選擇**已啟用**。預設為**啟用**。如果您未啟用 SSE-KMS 加密，您的日誌檔案和摘要檔案會使用 SSE-S3 加密進行加密。如需 SSE-KMS 加密的詳細資訊，請參閱[搭配 AWS Key Management Service (SSE-KMS) 使用伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。如需 SSE-S3 加密的詳細資訊，請參閱[搭配使用伺服器端加密與 Amazon S3 受管加密金鑰 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

   選擇 **Existing** (現有) 來使用 AWS KMS key更新您的追蹤。選擇與接收您日誌檔案之 S3 儲存貯體位在相同區域中的 KMS 金鑰。若要驗證 S3 儲存貯體的區域，請在 S3 主控台中檢視其屬性。
**注意**  
您也可以輸入來自另一個帳戶的金鑰 ARN。如需詳細資訊，請參閱[更新資源以搭配 主控台使用您的 KMS 金鑰](#create-kms-key-policy-for-cloudtrail-update-trail)。金鑰政策必須允許 CloudTrail 使用金鑰來加密您的日誌檔案和摘要檔案，並允許您指定的使用者以未加密的形式讀取日誌檔案或摘要檔案。如需手動編輯金鑰政策的資訊，請參閱「[設定 CloudTrail 的 AWS KMS 金鑰政策](create-kms-key-policy-for-cloudtrail.md)」。

   在 **AWS KMS Alias** (別名) 中，指定您為其變更政策以與 CloudTrail 搭配使用的別名，格式為 `alias/`*MyAliasName*。如需詳細資訊，請參閱[更新資源以搭配 主控台使用您的 KMS 金鑰](#create-kms-key-policy-for-cloudtrail-update-trail)。

   您可以輸入別名、ARN 或全域唯一金鑰 ID。如果 KMS 金鑰屬於其他帳戶，請驗證金鑰政策具備許可，可讓您使用它。此值的格式可為下列其中之一：
   + **別名**：`alias/MyAliasName`
   + **別名 ARN**：`arn:aws:kms:region:123456789012:alias/MyAliasName`
   + **金鑰 ARN**：`arn:aws:kms:region:123456789012:key/12345678-1234-1234-1234-123456789012`
   + **全域唯一金鑰 ID**：`12345678-1234-1234-1234-123456789012`

1. 選擇 **Update trail** (更新追蹤)。
**注意**  
如果您選擇的 KMS 金鑰已停用或待刪除，您將無法使用該 KMS 金鑰來儲存追蹤。您可以啟用 KMS 金鑰或選擇另一個。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[金鑰狀態：對 KMS 金鑰的影響](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)。

## 更新事件資料存放區以使用 KMS 金鑰
<a name="kms-key-policy-update-eds"></a>

若要更新事件資料存放區以使用您為 CloudTrail 修改 AWS KMS key 的 ，請在 CloudTrail 主控台中完成下列步驟。

若要使用 更新事件資料存放區 AWS CLI，請參閱 [使用 更新事件資料存放區 AWS CLI](lake-cli-update-eds.md)。

**重要**  
停用或刪除 KMS 金鑰，或移除該金鑰的 CloudTrail 許可，會導致 CloudTrail 無法將事件擷取到事件資料存放區，並導致使用者無法查詢使用該金鑰加密的事件資料存放區中的資料。將事件資料存放區與 KMS 金鑰建立關聯後，就無法移除或變更 KMS 金鑰。停用或刪除您搭配事件資料存放區使用的 KMS 金鑰之前，請先刪除或備份您的事件資料存放區。

**若要更新事件資料存放區以使用您的 KMS 金鑰**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) 的 CloudTrail 主控台。

1. 在導覽窗格中，選擇 **Lake** 中的 **Event data stores** (事件資料存放區)。選擇事件資料存放區以進行更新。

1. 在 **General details** (一般詳細資訊) 中，選擇 **Edit **(編輯)。

1. 針對**加密**，如果尚未啟用，請選擇**使用我自己的 AWS KMS key** KMS 金鑰來加密事件資料存放區。

   選擇 **Existing** (現有) 來使用您的 KMS 金鑰更新您的事件資料存放區。選擇與事件資料存放區位在相同區域中的 KMS 金鑰。不支援來自另一個帳戶的金鑰。

   在**輸入 AWS KMS 別名**中，指定您變更政策以搭配 CloudTrail 使用的別名，格式為 `alias/`*MyAliasName*。如需詳細資訊，請參閱[更新資源以搭配 主控台使用您的 KMS 金鑰](#create-kms-key-policy-for-cloudtrail-update-trail)。

   您可以選擇別名，或使用全域唯一金鑰 ID。此值的格式可為下列其中之一：
   + **別名**：`alias/MyAliasName`
   + **別名 ARN**：`arn:aws:kms:region:123456789012:alias/MyAliasName`
   + **金鑰 ARN**：`arn:aws:kms:region:123456789012:key/12345678-1234-1234-1234-123456789012`
   + **全域唯一金鑰 ID**：`12345678-1234-1234-1234-123456789012`

1. 選擇**儲存變更**。
**注意**  
如果您選擇的 KMS 金鑰已停用或待刪除，您將無法使用該 KMS 金鑰來儲存事件資料存放區組態。您可以啟用 KMS 金鑰，或選擇不同的金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[金鑰狀態：對 KMS 金鑰的影響](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)。

# 使用 啟用和停用 CloudTrail 日誌檔案、摘要檔案和事件資料存放區的加密 AWS CLI
<a name="cloudtrail-log-file-encryption-cli"></a>

本主題說明如何使用 啟用和停用 CloudTrail 日誌檔案、摘要檔案和事件資料存放區的 SSE-KMS 加密 AWS CLI。如需背景資訊，請參閱[使用 AWS KMS 金鑰加密 CloudTrail 日誌檔案、摘要檔案和事件資料存放區 (SSE-KMS)](encrypting-cloudtrail-log-files-with-aws-kms.md)。

**Topics**
+ [

## 使用 啟用 CloudTrail 日誌檔案、摘要檔案和事件資料存放區的加密 AWS CLI
](#cloudtrail-log-file-encryption-cli-enable)
+ [

## 使用 停用日誌檔案和摘要檔案的加密 AWS CLI
](#cloudtrail-log-file-encryption-cli-disable)

## 使用 啟用 CloudTrail 日誌檔案、摘要檔案和事件資料存放區的加密 AWS CLI
<a name="cloudtrail-log-file-encryption-cli-enable"></a>
+ [啟用追蹤的日誌檔案和摘要檔案加密](#log-encryption-trail)
+ [啟用事件資料存放區的加密](#log-encryption-eds)<a name="log-encryption-trail"></a>

**啟用追蹤日誌檔案和摘要檔案的加密**

1. 使用 AWS CLI建立金鑰。您建立的金鑰必須位在與收到您 CloudTrail 日誌檔案之 S3 儲存貯體相同的區域中。在此步驟中 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)，您可以使用 命令。

1. 取得現有金鑰政策，讓您可以將其修改以搭配 CloudTrail 使用。您可以使用 命令擷取金鑰政策 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)。

1. 將必要的區段新增至金鑰政策，以便 CloudTrail 加密，使用者可以解密您的日誌檔案和摘要檔案。確定將解密許可授予所有讀取日誌檔案的使用者。請不要變更任何政策的現有區段。如需要包含之政策區段的詳細資訊，請參閱 [設定 CloudTrail 的 AWS KMS 金鑰政策](create-kms-key-policy-for-cloudtrail.md)。

1. 使用 命令將修改過的 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) JSON 政策檔案連接至金鑰。

1. 執行具有 `--kms-key-id` 參數的 CloudTrail `create-trail` 或 `update-trail` 命令。此命令會啟用日誌檔案和摘要檔案的加密。

   ```
   aws cloudtrail update-trail --name Default --kms-key-id alias/MyKmsKey
   ```

   `--kms-key-id` 參數指定您針對 CloudTrail 修改其政策的金鑰。它可以是下列格式中的任何一種：
   + **別名**。範例：`alias/MyAliasName`
   + **別名 ARN**。範例：`arn:aws:kms:us-east-2:123456789012:alias/MyAliasName`
   + **金鑰 ARN**。範例：`arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012`
   + **全域唯一金鑰 ID。**範例：`12345678-1234-1234-1234-123456789012`

   以下是回應範例：

   ```
   {
       "IncludeGlobalServiceEvents": true, 
       "Name": "Default", 
       "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Default", 
       "LogFileValidationEnabled": false,
       "KmsKeyId": "arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012", 
       "S3BucketName": "amzn-s3-demo-bucket"
   }
   ```

   `KmsKeyId` 元素的存在表示已啟用日誌檔案的加密。如果日誌檔案驗證已啟用 （由設定為 true 的 `LogFileValidationEnabled`元素表示），這也表示已啟用摘要檔案的加密。加密的日誌檔案和摘要檔案應該會在大約 5 分鐘內出現在為追蹤設定的 S3 儲存貯體中。<a name="log-encryption-eds"></a>

**啟用事件資料存放區的加密**

1. 使用 AWS CLI建立金鑰。您建立的金鑰必須與事件資料存放區位於相同區域中。在此步驟中 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)，請執行 命令。

1. 取得現有金鑰政策對其進行編輯以搭配 CloudTrail 使用。您可以執行 AWS KMS [https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html) 命令來取得金鑰政策。

1. 將必要的區段新增至金鑰政策，以便 CloudTrail 加密，使用者可以解密您的事件資料存放區。確定讀取事件資料存放區的所有使用者都獲得解密許可。請不要變更任何政策的現有區段。如需要包含之政策區段的詳細資訊，請參閱 [設定 CloudTrail 的 AWS KMS 金鑰政策](create-kms-key-policy-for-cloudtrail.md)。

1. 執行 AWS KMS [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) 命令，將編輯的 JSON 政策檔案連接至金鑰。

1. 執行 CloudTrail `create-event-data-store` 或 `update-event-data-store` 命令，並新增 `--kms-key-id` 參數。此命令會啟用事件資料存放區的加密。

   ```
   aws cloudtrail update-event-data-store --name my-event-data-store --kms-key-id alias/MyKmsKey
   ```

   `--kms-key-id` 參數指定您針對 CloudTrail 修改其政策的金鑰。它可以是下列四種格式中的任何一種：
   + **別名**。範例：`alias/MyAliasName`
   + **別名 ARN**。範例：`arn:aws:kms:us-east-2:123456789012:alias/MyAliasName`
   + **金鑰 ARN**。範例：`arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012`
   + **全域唯一金鑰 ID。**範例：`12345678-1234-1234-1234-123456789012`

   以下是回應範例：

   ```
   {
       "Name": "my-event-data-store",
       "ARN": "arn:aws:cloudtrail:us-east-1:12345678910:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE",
       "RetentionPeriod": "90",
       "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
       "MultiRegionEnabled": false,
       "OrganizationEnabled": false,
       "TerminationProtectionEnabled": true,
       "AdvancedEventSelectors": [{
           "Name": "Select all external events",
           "FieldSelectors": [{
               "Field": "eventCategory",
               "Equals": [
                   "ActivityAuditLog"
               ]
           }]
       }]
   }
   ```

   `KmsKeyId` 元素的存在表示事件資料存放區的加密已啟用。

## 使用 停用日誌檔案和摘要檔案的加密 AWS CLI
<a name="cloudtrail-log-file-encryption-cli-disable"></a>

若要停止加密追蹤的日誌檔案和摘要檔案，請執行並`update-trail`傳遞空字串至 `kms-key-id` 參數：

```
aws cloudtrail update-trail --name my-test-trail --kms-key-id ""
```

以下是回應範例：

```
{
    "IncludeGlobalServiceEvents": true, 
    "Name": "Default", 
    "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Default", 
    "LogFileValidationEnabled": false, 
    "S3BucketName": "amzn-s3-demo-bucket"
}
```

缺少 `KmsKeyId`值表示日誌檔案和摘要檔案的加密不再啟用。

**重要**  
您無法停止事件資料存放區的加密。

# AWS CloudTrail 如何使用 AWS KMS
<a name="how-kms-works-with-cloudtrail"></a>

本節說明如何 AWS KMS 使用以 SSE-KMS 金鑰加密的 CloudTrail 追蹤。

**重要**  
AWS CloudTrail 和 Amazon S3 僅支援[對稱 AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks)。您無法使用[非對稱 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)來加密您的 CloudTrail 日誌。如需判斷 KMS 金鑰是對稱金鑰還是非對稱金鑰的說明，請參閱《AWS Key Management Service 開發人員指南》**中的 [Identify different key types](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html)。

當 CloudTrail 讀取或寫入使用 SSE-KMS 金鑰加密的日誌檔案時，您無需支付金鑰使用費。不過，當您存取使用 SSE-KMS 金鑰加密的 CloudTrail 日誌檔案時，您要支付金鑰使用費。如需 AWS KMS 定價的資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。如需 CloudTrail 定價的資訊，請參閱 [AWS CloudTrail 定價](https://aws.amazon.com/cloudtrail/pricing/)。

## 了解您的 KMS 金鑰何時用於您的線索
<a name="cloudtrail-details"></a>

在稱為伺服器端加密的 Amazon S3 功能上使用 AWS KMS key (SSE-KMS) AWS KMS 建置來加密 CloudTrail 日誌檔案。若要進一步了解 SSE-KMS，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。

當您設定 AWS CloudTrail 使用 SSE-KMS 加密日誌檔案時，CloudTrail 和 Amazon S3 會在您使用這些服務執行特定動作 AWS KMS keys 時使用 。以下章節說明這些服務使用您的 KMS 金鑰的時機和方法，並提供您可用來驗證此說明的額外資訊。

**Contents**
+ [

### 您可以將 CloudTrail 設定為使用 加密日誌檔案 AWS KMS key
](#cloudtrail-details-update-configuration)
+ [

### CloudTrail 將日誌檔案放到您的 S3 儲存貯體
](#cloudtrail-details-put-log-file)
+ [

### 您從 S3 儲存貯體取得加密的日誌檔
](#cloudtrail-details-get-log-file)

### 您可以將 CloudTrail 設定為使用 加密日誌檔案 AWS KMS key
<a name="cloudtrail-details-update-configuration"></a>

當您[更新 CloudTrail 組態以使用 KMS 金鑰](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail-update-trail.html)時，CloudTrail 會向 傳送[https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)請求 AWS KMS ，以驗證 KMS 金鑰是否存在，以及 CloudTrail 是否具有使用該金鑰進行加密的許可。CloudTrail 不會使用產生的資料金鑰。

`GenerateDataKey` 請求包含[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)的下列資訊：
+ CloudTrail 追蹤的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
+ 交付 CloudTrail 日誌檔案的 S3 儲存貯體 ARN 和路徑

`GenerateDataKey` 請求會在您的 CloudTrail 日誌中產生類似以下範例的項目。當您看到像這樣的日誌項目時，您可以判斷 CloudTrail AWS KMS `GenerateDataKey`已針對特定線索呼叫 操作。 已在特定 KMS 金鑰下 AWS KMS 建立資料金鑰。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "cloudtrail.amazonaws.com"
    },
    "eventTime": "2024-12-06T20:14:46Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "cloudtrail.amazonaws.com",
    "userAgent": "cloudtrail.amazonaws.com",
    "requestParameters": {
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770",
        "encryptionContext": {
            "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/management-events",
            "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket-123456789012-9af1fb49/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2010Z_TO50OLMG1hIQ1png.json.gz"
        }
    },
    "responseElements": null,
    "requestID": "a0555e85-7e8a-4765-bd8f-2222295558e1",
    "eventID": "e4f3557e-7dbd-4e37-a00a-d86c137d1111",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/example1-6736-4661-bf00-exampleeb770"
         }],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "sharedEventID": "ce71d6be-0846-498e-851f-111a1af9078f",
    "eventCategory": "Management"
}
```

### CloudTrail 將日誌檔案放到您的 S3 儲存貯體
<a name="cloudtrail-details-put-log-file"></a>

每次 CloudTrail 將日誌檔案放入 S3 儲存貯體時，Amazon S3 都會 AWS KMS 代表 CloudTrail 傳送[https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)請求至 。為了回應此請求， AWS KMS 會產生唯一的資料金鑰，然後傳送兩個資料金鑰複本給 Amazon S3，一個為純文字，另一個使用指定的 KMS 金鑰加密。Amazon S3 使用純文字資料金鑰來加密 CloudTrail 日誌檔案，然後在使用後盡快從記憶體移除純文字資料金鑰。Amazon S3 會將加密的資料金鑰以中繼資料形式跟加密 CloudTrail 日誌檔案一起存放。

`GenerateDataKey` 請求包含[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)的下列資訊：
+ CloudTrail 追蹤的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
+ S3 物件的 ARN (CloudTrail 日誌檔案)

每個 `GenerateDataKey` 請求會在您的 CloudTrail 日誌中產生類似以下範例的項目。當您看到像這樣的日誌項目時，您可以判斷 CloudTrail 已針對特定線索呼叫 AWS KMS `GenerateDataKey` 操作，以保護特定日誌檔案。 在指定的 KMS 金鑰下 AWS KMS 建立資料金鑰，在同一日誌項目中顯示兩次。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "cloudtrail.amazonaws.com"
    },
    "eventTime": "2024-12-06T21:49:28Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "cloudtrail.amazonaws.com",
    "userAgent": "cloudtrail.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1::trail/insights-trail",
            "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T2150Z_hVXmrJzjZk2wAM2V.json.gz"
        },
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a"
    },
    "responseElements": null,
    "requestID": "11117d14-9232-414a-b3d1-01bab4dc9f99",
    "eventID": "999e9a50-512c-4e2a-84a3-111a5f511111",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "sharedEventID": "5e663acc-b7fd-4cdd-8328-0eff862952fa",
    "eventCategory": "Management"
}
```

### 您從 S3 儲存貯體取得加密的日誌檔
<a name="cloudtrail-details-get-log-file"></a>

每次從 S3 儲存貯體取得加密的 CloudTrail 日誌檔案時，Amazon S3 都會 AWS KMS 代表您傳送[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求至 ，以解密日誌檔案的加密資料金鑰。為了回應此請求， AWS KMS 會使用 KMS 金鑰來解密資料金鑰，然後將純文字資料金鑰傳送至 Amazon S3。Amazon S3 使用純文字資料金鑰來解密 CloudTrail 日誌檔案，然後在使用後盡快從記憶體移除純文字資料金鑰。

`Decrypt` 請求包含[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)的下列資訊：
+ CloudTrail 追蹤的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
+ S3 物件的 ARN (CloudTrail 日誌檔案)

每個 `Decrypt` 請求會在您的 CloudTrail 日誌中產生類似以下範例的項目。當您看到像這樣的日誌項目時，您可以判斷 擔任的角色是否針對特定線索和特定日誌檔案呼叫 AWS KMS `Decrypt` 操作。 已在特定 KMS 金鑰下 AWS KMS 解密資料金鑰。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:sts::123456789012:assumed-role/Admin",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/Admin",
                "accountId": "123456789012",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2024-12-06T22:04:04Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2024-12-06T22:26:34Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "encryptionContext": {
            "aws:cloudtrail:arn": "arn:aws:cloudtrail:us-east-1:123456789012:trail/insights-trail",
            "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-logging-bucket1-123456789012-7867ab0c/AWSLogs/123456789012/CloudTrail/us-east-1/2024/12/06/123456789012_CloudTrail_us-east-1_20241206T0000Z_aAAsHbGBdye3jp2R.json.gz"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "1ab2d2d2-111a-2222-a59b-11a2b3832b53",
    "eventID": "af4d4074-2849-4b3d-1a11-a1aaa111a111",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:123456789012:key/example9-16ef-48ba-9163-example67a5a"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}
```