加密金丝雀构件 - Amazon CloudWatch

加密金丝雀构件

CloudWatch Synthetics 将屏幕截图、HAR 文件和报告等金丝雀构件存储在 Amazon S3 存储桶中。默认情况下,这些构件使用 AWS 托管式密钥加密。有关更多信息,请参阅客户密钥和 AWS 密钥

您可以选择使用其他加密选项。CloudWatch Synthetics 支持以下选项:

  • SSE-S3 – 使用 Amazon S3 托管式密钥进行服务器端加密 (SSE)。

  • SSE-KMS – 使用 AWS KMS 客户托管式的密钥进行服务器端加密 (SSE)。

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

要使用 SSE-S3 加密,则需要将 SSE_S3 指定为创建或更新金丝雀时的加密模式。使用此加密模式不需要任何额外权限。有关更多信息,请参阅使用服务器端加密与 Amazon S3 托管式加密密钥 (SSE-S3) 保护数据

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

要使用客户托管式密钥,需要以下设置:

  • 您的金丝雀的 IAM 角色必须具有使用密钥加密构件的权限。如果您使用可视化监控,还必须授予其解密构件的权限。

    { "Version": "2012-10-17", "Statement": {"Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "Your KMS key ARN" } }
  • 您可以将 IAM 角色添加到密钥策略中,而不是向 IAM 角色添加权限。如果您对多个金丝雀使用相同的角色,您应该考虑这种方法。

    { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "Your synthetics IAM role ARN" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }
  • 如果您使用的是跨账户 KMS 密钥,请参阅是否允许其他账户中的用户使用 KMS 密钥

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

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

默认 AWS KMS 策略让账户中的 IAM 策略能够允许访问 KMS 密钥。如果您使用的是跨账户 KMS 密钥,请参阅为什么跨账户用户在尝试访问由自定义 AWS KMS 密钥加密的 Amazon S3 对象时会出现“拒绝访问”的错误?

有关因 KMS 密钥而被拒绝访问的故障排除的更多信息,请参阅密钥访问故障排除

使用可视化监控时更新构件位置和加密

为执行可视化监控,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 的权限。