

# 加密金丝雀构件
<a name="CloudWatch_Synthetics_artifact_encryption"></a>

CloudWatch Synthetics 将屏幕截图、HAR 文件和报告等金丝雀构件存储在 Amazon S3 存储桶中。默认情况下，这些构件使用 AWS 托管式密钥加密。有关更多信息，请参阅[客户密钥和 AWS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt.html)。

您可以选择使用其他加密选项。CloudWatch Synthetics 支持以下选项：
+ **SSE-S3** – 使用 Amazon S3 托管式密钥进行服务器端加密 (SSE)。
+ **SSE-KMS** – 使用 AWS KMS 客户托管式的密钥进行服务器端加密 (SSE)。

如果您想通过 AWS 托管式密钥使用默认加密选项，则不需要任何额外权限。

要使用 SSE-S3 加密，则需要将 **SSE\$1S3** 指定为创建或更新金丝雀时的加密模式。使用此加密模式不需要任何额外权限。有关更多信息，请参阅[使用服务器端加密与 Amazon S3 托管式加密密钥 (SSE-S3) 保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

要使用 AWS KMS 客户托管式密钥，则需要将 **SSE-KMS** 指定为创建或更新金丝雀时的加密模式，并提供密钥的 Amazon Resource Name (ARN)。您还可以使用跨账户 KMS 密钥。

要使用客户托管式密钥，需要以下设置：
+ 您的金丝雀的 IAM 角色必须具有使用密钥加密构件的权限。如果您使用可视化监控，还必须授予其解密构件的权限。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowKMSKeyUsage",
              "Effect": "Allow",
              "Action": [
                  "kms:GenerateDataKey",
                  "kms:Decrypt"
              ],
              "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
          }
      ]
  }
  ```

------
+ 您可以将 IAM 角色添加到密钥策略中，而不是向 IAM 角色添加权限。如果您对多个金丝雀使用相同的角色，您应该考虑这种方法。

  ```
  {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
          "AWS": "Your synthetics IAM role ARN"
      },
      "Action": [
          "kms:GenerateDataKey",
          "kms:Decrypt"
      ],
      "Resource": "*"
  }
  ```
+ 如果您使用的是跨账户 KMS 密钥，请参阅[是否允许其他账户中的用户使用 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

 **使用客户托管式密钥时查看加密的金丝雀构件** 

要查看金丝雀构件，请更新客户托管式密钥以向查看构件的用户提供 AWS KMS 解密权限。或者，向正在查看构件的用户或 IAM 角色添加解密权限。

默认 AWS KMS 策略让账户中的 IAM 策略能够允许访问 KMS 密钥。如果您使用的是跨账户 KMS 密钥，请参阅[为什么跨账户用户在尝试访问由自定义 AWS KMS 密钥加密的 Amazon S3 对象时会出现“拒绝访问”的错误？](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-denied-error-s3/) 

有关因 KMS 密钥而被拒绝访问的故障排除的更多信息，请参阅[密钥访问故障排除](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html)。

## 使用可视化监控时更新构件位置和加密
<a name="CloudWatch_Synthetics_artifact_encryption_visual"></a>

为执行可视化监控，CloudWatch Synthetics 会将您的屏幕截图与在基准运行中获得的基准屏幕截图进行比较。如果您更新构件位置或加密选项，必须执行以下操作之一：
+ 确保您的 IAM 角色对之前的 Amazon S3 位置和新的 Amazon S3 位置都具有足够的权限，以获取构件。同时，确保它对以前的和新的加密方法及 KMS 密钥都具有权限。
+ 通过选择下一个金丝雀运行作为新基准来创建新基准。如果您使用此选项，则只需确保您的 IAM 角色对构件的新位置和加密选项具有足够的权限。

我们建议第二个选项，即选择下一次运行作为新基准。这避免了对之前用于金丝雀的构件位置或加密选项的依赖。

例如，假设您的金丝雀使用构件位置 A 和 KMS 密钥 K 来上传构件。如果您将金丝雀更新为构件位置 B 和 KMS 密钥 L，则可以确保您的 IAM 角色具有对两个构件位置（A 和 B）以及两个 KMS 密钥（K 和 L）的权限。或者，您可以选择下一次运行作为新基准，并确保您的金丝雀 IAM 角色具有对构件位置 B 和 KMS 密钥 L 的权限。