

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

# Image Builder 中的数据保护和责任 AWS 共担模型
<a name="data-protection"></a>

责任共担模型 AWS [分担责任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于 EC2 Image Builder 中的数据保护。如本模型所述 AWS ，负责保护运行所有内容的全球基础架构 AWS 云。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅 *AWS Security Blog* 上的 [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-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 踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果您在 AWS 通过命令行界面或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

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

## Image Builder 中的加密和密钥管理
<a name="ib-encryption"></a>

默认情况下，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 开发人员指南中的[入门](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)。

**加密上下文**  
为了对加密数据进行额外的完整性和真实性检查，您可以选择在加密数据时包含[加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。使用加密上下文对资源进行加密时，会 AWS KMS 以加密方式将上下文绑定到密文。只有当请求者为上下文提供精确、区分大小写的匹配项时，才能对资源进行解密。

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

### 使用客户托管密钥加密映像工作流
<a name="ib-workflow-encrypt-cmk"></a>

要添加一层保护，您可以使用自己的客户托管密钥对 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](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

------
#### [ 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 图像工作流程的事件
<a name="ib-workflow-cloudtrail-examples"></a>

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

**例如： GenerateDataKey**  
此示例显示了 Image Builder 从 Image Builder API 操作中调用 AWS KMS **GenerateDataKey** API 操作时 CloudTrail 的事件可能是什么样子。**CreateWorkflow**Image 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"
}
```

**示例：解密**  
此示例显示了 Image Builder 从 Image Builder API 操作中调用 AWS KMS **Decrypt** API 操作时 CloudTrail 的事件可能是什么样子。**GetWorkflow**Image 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 中的数据存储
<a name="ib-data-storage"></a>

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

## Image Builder 中的互联网络流量隐私
<a name="image-builder-internetwork"></a>

通过 HTTPS 保护 Image Builder 与本地位置之间、 AWS 区域 AZs 内部以及 AWS 区域之间的连接。在账户之间没有直接连接。