

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

# EventBridge 排程器中的靜態加密
<a name="encryption-rest"></a>

 本節說明 Amazon EventBridge 排程器如何加密和解密靜態資料。靜態資料是存放在 EventBridge 排程器和服務基礎元件中的資料。EventBridge 排程器與 AWS Key Management Service (AWS KMS) 整合，以使用 加密和解密您的資料[AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)。EventBridge 排程器支援兩種 KMS 金鑰類型： [AWS 擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)和[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**注意**  
 EventBridge 排程器僅支援使用[對稱](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)加密 KMS 金鑰。

 *AWS 擁有的金鑰* 是 AWS 服務擁有和管理用於多個 AWS 帳戶的 KMS 金鑰。雖然 AWS 擁有的金鑰 EventBridge 排程器使用的 不會存放在 AWS 您的帳戶中，但 EventBridge 排程器會使用它們來保護您的資料和資源。根據預設，EventBridge 排程器會使用 AWS 擁有的金鑰來加密和解密所有資料。您不需要管理 AWS 擁有的金鑰 或其存取政策。當 EventBridge 排程器使用 AWS 擁有的金鑰 來保護您的資料時，您不需要支付任何費用，而且其用量不會計入您帳戶中的 AWS KMS 配額中。

 *客戶受管金鑰*是您建立、擁有和管理之 AWS 帳戶中存放的 KMS 金鑰。如果您的特定使用案例要求您控制和稽核可在 EventBridge 排程器上保護資料的加密金鑰，您可以使用客戶受管金鑰。如果您選擇客戶受管金鑰，則必須管理您的金鑰政策。客戶受管金鑰會衍生每月費用，以及超出免費方案部分的使用費用。使用客戶受管金鑰也算作[AWS KMS 配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)的一部分。如需定價的詳細資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。

**Topics**
+ [加密成品](#encryption-rest-artifacts)
+ [管理 KMS 金鑰](#key-management)
+ [CloudTrail 事件範例](#key-management-cloud-trail)

## 加密成品
<a name="encryption-rest-artifacts"></a>

 下表說明 EventBridge 排程器靜態加密的不同資料類型，以及它為每個類別支援的 KMS 金鑰類型。


| 資料類型 | Description | AWS 擁有的金鑰 | 客戶受管金鑰 | 
| --- | --- | --- | --- | 
|  承載 （最多 256KB)  |  當您設定要交付至目標的排程時，在排程的 `TargetInput` 參數中指定的資料。  |  支援  |  支援  | 
|  識別符和狀態  |  排程的唯一名稱和狀態 （啟用、停用）。  |  支援  |  不支援  | 
|  Scheduling configuration (排程組態)  |  排程表達式，例如週期性排程的速率或 Cron 表達式，以及一次性調用的時間戳記，以及排程的開始日期、結束日期和時區。  |  支援  |  不支援  | 
|  目標組態  |  目標的 Amazon Resource Name (ARN) 和其他目標相關組態詳細資訊。  |  支援  |  不支援  | 
|  叫用和失敗行為組態  |  彈性的時段組態、排程的重試政策，以及用於失敗交付的無效字母佇列詳細資訊。  |  支援  |  不支援  | 

 EventBridge 排程器只會在加密和解密目標承載時使用客戶受管金鑰，如上表所述。如果您選擇使用客戶受管金鑰，EventBridge 排程器會加密和解密承載兩次：一次使用預設值 AWS 擁有的金鑰，另一次使用您指定的客戶受管金鑰。對於所有其他資料類型，EventBridge 排程器只會使用預設值 AWS 擁有的金鑰 來保護靜態資料。

 使用下[管理 KMS 金鑰](#key-management)一節來了解如何管理您的 IAM 資源和金鑰政策，以便將客戶受管金鑰與 EventBridge 排程器搭配使用。

## 管理 KMS 金鑰
<a name="key-management"></a>

 您可以選擇性地提供客戶受管金鑰，以加密和解密排程交付給其目標的承載。EventBridge 排程器會加密和解密您高達 256KB 的資料承載。使用客戶受管金鑰會產生月費，以及超過免費方案的費用。使用客戶受管金鑰計為[AWS KMS 配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)的一部分。如需定價的詳細資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/) 

 EventBridge 排程器使用與建立排程以加密資料的委託人相關聯的 IAM 許可。這表示您必須將必要的 AWS KMS 相關許可連接到呼叫 EventBridge 排程器 API 的使用者或角色。此外，EventBridge 排程器會使用資源型政策來解密您的資料。這表示與排程相關聯的執行角色也必須具備必要的 AWS KMS 相關許可，才能在解密資料時呼叫 AWS KMS API。

**注意**  
 EventBridge 排程器不支援使用暫時許可的[授予](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。

 使用下一節來了解如何管理 AWS KMS [金鑰政策和](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)所需的 IAM 許可，以在 EventBridge 排程器上使用客戶受管金鑰。

**Topics**
+ [新增 IAM 許可](#key-management-iam-permissions)
+ [管理金鑰政策](#key-management-key-policy)

### 新增 IAM 許可
<a name="key-management-iam-permissions"></a>

 若要使用客戶受管金鑰，您必須將下列許可新增至建立排程的身分型 IAM 主體，以及與排程建立關聯的執行角色。

#### 客戶受管金鑰的身分型許可
<a name="key-management-iam-permissions-identity-based"></a>

您必須將下列 AWS KMS 動作新增至與建立排程時呼叫 EventBridge 排程器 API 的任何委託人 （使用者、群組或角色） 相關聯的許可政策。
+  **`kms:DescribeKey`** – 驗證您提供的金鑰是[對稱](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)加密 KMS 金鑰時需要。
+  **`kms:GenerateDataKey`** – 為了產生 EventBridge 排程器用來執行用戶端加密的資料金鑰，此為必要項目。
+  **`kms:Decrypt`** – 需要解密 EventBridge 排程器與您的加密資料一起存放的加密資料金鑰。

這些是下列動作的補充：
+  **`scheduler:*`** 
+  **`iam:PassRole`** – 傳遞執行角色時需要。

#### 客戶受管金鑰的執行角色許可
<a name="key-management-iam-permissions-execution-role"></a>

 您必須將下列動作新增至排程的執行角色許可政策，以提供 EventBridge 排程器在解密資料時呼叫 AWS KMS API 的存取權。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowEventBridgeSchedulerToDecryptDataUsingCMKMS",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/your-key-id"
        }
    ]
}
```

------
+  **`kms:Decrypt`** – 需要解密 EventBridge 排程器與您的加密資料一起存放的加密資料金鑰。

 如果您在建立新排程時使用 EventBridge 排程器主控台來建立新的執行角色，EventBridge 排程器會自動將必要的許可連接到您的執行角色。不過，如果您選擇現有的執行角色，則必須將必要的許可新增至角色，才能使用您的客戶受管金鑰。

### 管理金鑰政策
<a name="key-management-key-policy"></a>

 當您使用 建立客戶受管金鑰時 AWS KMS，根據預設，您的金鑰具有下列金鑰政策，可讓您存取排程的執行角色。

 或者，您可以將金鑰政策的範圍限制為僅提供對執行角色的存取。如果您只想將客戶受管金鑰與 EventBridge 排程器資源搭配使用，則可以這樣做。使用下列[金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)範例來限制哪些 EventBridge 排程器資源可以使用您的金鑰。

## CloudTrail 事件範例
<a name="key-management-cloud-trail"></a>

 AWS CloudTrail 會擷取所有 API 呼叫*事件*。這包括每當 EventBridge 排程器使用您的客戶受管金鑰解密資料時，API 呼叫。下列範例顯示 CloudTrail 事件項目，示範 EventBridge 排程器使用客戶受管金鑰的 `kms:Decrypt`動作。

```
{
  "eventVersion": "1.08",
  "userIdentity": {
      "type": "AssumedRole",
      "principalId": "ABCDEABCD1AB12ABABAB0:70abcd123a123a12345a1aa12aa1bc12",
      "arn": "arn:aws:sts::123456789012:assumed-role/execution-role/70abcd123a123a12345a1aa12aa1bc12",
      "accountId": "123456789012",
      "accessKeyId": "ABCDEFGHI1JKLMNOP2Q3",
      "sessionContext": {
          "sessionIssuer": {
              "type": "Role",
              "principalId": "ABCDEABCD1AB12ABABAB0",
              "arn": "arn:aws:iam::123456789012:role/execution-role",
              "accountId": "123456789012",
              "userName": "execution-role"
          },
          "webIdFederationData": {},
          "attributes": {
              "creationDate": "2022-10-31T21:03:15Z",
              "mfaAuthenticated": "false"
          }
      }
    },
    "eventTime": "2022-10-31T21:03:15Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "eu-north-1",
    "sourceIPAddress": "13.50.87.173",
    "userAgent": "aws-sdk-java/2.17.295 Linux/4.14.291-218.527.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/11.0.17+9-LTS Java/11.0.17 kotlin/1.3.72-release-468 (1.3.72) vendor/Amazon.com_Inc. md/internal exec-env/AWS_ECS_FARGATE io/sync http/Apache cfg/retry-mode/standard AwsCrypto/2.4.0",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:123456789012:key/2321abab-2110-12ab-a123-a2b34c5abc67",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "aws:scheduler:schedule:arn": "arn:aws:scheduler:us-west-2:123456789012:schedule/default/execution-role"
        }
    },
    "responseElements": null,
    "requestID": "request-id",
    "eventID": "event-id",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:123456789012:key/2321abab-2110-12ab-a123-a2b34c5abc67"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management",
    "tlsDetails": {
      "tlsVersion": "TLSv1.3",
      "cipherSuite": "TLS_AES_256_GCM_SHA384",
      "clientProvidedHostHeader": "kms.us-west-2.amazonaws.com"
  }
}
```