View a markdown version of this page

数据保护和 AWS 映像生成器中的责任共担模型 - EC2 Image Builder

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

数据保护和 AWS 映像生成器中的责任共担模型

AWS 分担责任模型分适用于 EC2 Image Builder 中的数据保护。如本模型所述 AWS ,负责保护运行所有网络的全球基础设施 AWS Cloud。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息,请参阅数据隐私常见问题。有关欧洲数据保护的信息,请参阅通用数据保护条例(GDPR)中心。

出于数据保护的目的,我们建议您保护 AWS 账户 证书并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样,每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据:

  • 对每个账户使用多重身份验证(MFA)。

  • 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2,建议使用 TLS 1.3。

  • 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息,请参阅AWS CloudTrail 用户指南中的使用跟 CloudTrail 踪。

  • 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。

  • 使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon S3 中的敏感数据。

  • 如果在 AWS 通过命令行接口或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块,请使用 FIPS 终端节点。有关可用的 FIPS 端点的更多信息,请参阅《美国联邦信息处理标准(FIPS)第 140-3 版》https://aws.amazon.com/compliance/fips/。

强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括当您使用控制台、API 或 AWS SDK AWS 服务 使用映像生成器或其他工具包时。 AWS CLI在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL,强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

您对导入的 ISO 磁盘映像负责

当您导入 Windows ISO 磁盘映像时,您提供的 ISO 会为输出 AMI 提供操作系统。在责任共担模式下,验证媒体的真实性是你的责任。

导入在您自己的 AWS 账户构建实例上运行,该实例使用基础设施配置中的实例配置文件角色。在导入期间,映像生成器在该角色下以 SYSTEM 权限运行 ISO 和应用的 Windows 映像中的可执行文件。

来自不可信来源的 ISO 可能会影响输出 AMI 以及您从中启动的任何实例。从微软或授权经销商处获取 ISO 文件。有关更多信息,请参阅 使用映像生成器导入经过验证的 Windows ISO 磁盘映像。

Image Builder 中的加密和密钥管理

默认情况下,Image Builder 使用服务拥有的 KMS 密钥对传输中数据和静态数据进行加密,但以下情况除外:

  • 自定义组件 – Image Builder 使用默认 KMS 密钥或服务拥有的 KMS 密钥对自定义组件进行加密。

  • 映像工作流 – 如果您在工作流创建期间指定密钥,Image Builder 可以使用客户托管密钥对映像工作流进行加密。Image Builder 使用您的密钥处理加密和解密,以运行您为映像配置的工作流。

您可以通过管理自己的密钥 AWS KMS。但是,您没有权限管理 Image Builder 拥有的 Image Builder KMS 密钥。有关使用管理 KMS 密钥的更多信息 AWS Key Management Service,请参阅 AWS Key Management Service 开发人员指南中的入门。

加密上下文

为了对加密数据进行额外的完整性和真实性检查,您可以选择在加密数据时包含加密上下文。当使用加密上下文加密资源时,会 AWS KMS 以加密方式将上下文绑定到密文。只有当请求者为上下文提供精确、区分大小写的匹配项时,才能对资源进行解密。

本节中的策略示例使用的加密上下文类似于 Image Builder 工作流资源的Amazon 资源名称(ARN)。

使用客户托管密钥加密映像工作流

要添加一层保护,您可以使用自己的客户托管密钥对 Image Builder 工作流资源进行加密。如果您使用客户托管密钥加密您创建的 Image Builder 工作流,则必须在密钥政策中授予 Image Builder 访问权限,以便其在加密和解密工作流资源时使用您的密钥。您可以随时撤销这些访问权限。但是,如果您撤销对密钥的访问权限,Image Builder 将无法访问任何已加密的工作流。

授予 Image Builder 访问权限以使用客户托管密钥的过程分为两个步骤,如下所示:

步骤 1:为 Image Builder 工作流添加密钥政策权限

要使 Image Builder 能够在创建或使用工作流资源时对其进行加密和解密,必须在 KMS 密钥政策中指定权限。

此示例密钥政策授予了 Image Builder 管道访问权限,以在创建过程中加密工作流资源,并解密工作流资源以使用这些资源。该策略还向密钥管理员授予了访问权限。加密上下文和资源规范使用通配符来覆盖您拥有工作流资源的所有区域。

作为使用映像工作流的先决条件,您创建了一个 IAM 工作流执行角色,该角色向 Image Builder 授予运行工作流操作的权限。此处密钥政策示例中显示的第一条语句的主体必须指定您的 IAM 工作流执行角色。

有关客户托管密钥的更多信息,请参阅《AWS Key Management Service Developer Guide》中的 Managing access to customer managed keys。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Allow access to build images with encrypted workflow", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/YourImageBuilderExecutionRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:imagebuilder:arn": "arn:aws:imagebuilder:*:111122223333:workflow/*" } } }, { "Sid": "Allow access for key administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:*" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } ] }
步骤 2:授予对工作流执行角色的密钥访问权限

Image Builder 为运行工作流而担任的 IAM 角色需要获得使用客户托管密钥的权限。如果无法访问您的密钥,Image Builder 将无法用其来加密或解密您的工作流资源。

编辑工作流执行角色的策略以添加以下策略语句。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowAccessToWorkflowKey", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/key_ID", "Condition": { "StringLike": { "kms:EncryptionContext:aws:imagebuilder:arn": "arn:aws:imagebuilder:*:111122223333:workflow/*" } } } ] }

AWS CloudTrail 图像工作流程的事件

以下示例显示了使用客户 AWS CloudTrail 管理的密钥存储的加密和解密图像工作流程的典型条目。

例如: GenerateDataKey

此示例显示了当图像生成器从图像生成器 API 操作中调用 AWS KMS GenerateDataKey API 操作时 CloudTrail 的事件会是什么样子。CreateWorkflowImage Builder 必须先对新的工作流进行加密,然后才能创建工作流资源。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "PRINCIPALID1234567890:workflow-role-name", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/workflow-role-name", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "PRINCIPALID1234567890", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-11-21T20:29:31Z", "mfaAuthenticated": "false" } }, "invokedBy": "imagebuilder.amazonaws.com" }, "eventTime": "2023-11-21T20:31:03Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "imagebuilder.amazonaws.com", "userAgent": "imagebuilder.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:imagebuilder:arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/sample-encrypted-workflow/1.0.0/*", "aws-crypto-public-key": "key value" }, "keyId": "arn:aws:kms:us-west-2:111122223333:alias/ExampleKMSKey", "numberOfBytes": 32 }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
示例:解密

此示例显示了当图像生成器从图像生成器 API 操作中调用 AWS KMS Decrypt API 操作时 CloudTrail 的事件会是什么样子。GetWorkflowImage Builder 管道需要先解密工作流资源,然后才能使用该资源。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "PRINCIPALID1234567890:workflow-role-name", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/workflow-role-name", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "PRINCIPALID1234567890", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-11-21T20:29:31Z", "mfaAuthenticated": "false" } }, "invokedBy": "imagebuilder.amazonaws.com" }, "eventTime": "2023-11-21T20:34:25Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "imagebuilder.amazonaws.com", "userAgent": "imagebuilder.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz", "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "encryptionContext": { "aws:imagebuilder:arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/sample-encrypted-workflow/1.0.0/*", "aws-crypto-public-key": "ABC123def4567890abc12345678/90dE/F123abcDEF+4567890abc123D+ef1==" } }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Image Builder 中的数据存储

Image Builder 不会在服务中存储您的任何日志。所有日志保存在用于生成映像的 Amazon EC2 实例上或 Systems Manager 自动化日志中。

Inter-network 图像生成器中的流量隐私

映像生成器与本地位置之间、区域内可用区之间以及 AWS 区域之间 AWS 通过 HTTPS 的连接是安全的。在账户之间没有直接连接。