Image Builder 中的数据保护和 Amazon 责任共担模式
Amazon 责任共担模式
出于数据保护目的,我们建议您保护 Amazon Web Services 账户 凭证并使用 Amazon IAM Identity Center 或 Amazon Identity and Access Management(IAM)设置单个用户。这样,每个用户只获得履行其工作职责所需的权限。我们还建议您通过以下方式保护数据:
-
对每个账户使用多重身份验证(MFA)。
-
使用 SSL/TLS 与 Amazon 资源进行通信。我们要求使用 TLS 1.2,建议使用 TLS 1.3。
-
使用 Amazon CloudTrail 设置 API 和用户活动日记账记录。有关使用 CloudTrail 跟踪来捕获 Amazon 活动的信息,请参阅《Amazon CloudTrail 用户指南》中的 Working with CloudTrail trails。
-
使用 Amazon 加密解决方案以及 Amazon Web Services 服务 中的所有默认安全控制。
-
使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon S3 中的敏感数据。
-
如果在通过命令行界面或 API 访问 Amazon 时需要经过 FIPS 140-3 验证的加密模块,请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息,请参阅美国联邦信息处理标准(FIPS)140-3
。
我们强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括处理 Image Builder 或其他 Amazon Web Services 服务 时使用控制台、API、Amazon CLI 或 Amazon 开发工具包。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供网址,强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。
Image Builder 中的加密和密钥管理
默认情况下,Image Builder 使用服务拥有的 KMS 密钥对传输中数据和静态数据进行加密,但以下情况除外:
-
自定义组件 – Image Builder 使用默认 KMS 密钥或服务拥有的 KMS 密钥对自定义组件进行加密。
-
映像工作流 – 如果您在工作流创建期间指定密钥,Image Builder 可以使用客户托管密钥对映像工作流进行加密。Image Builder 使用您的密钥处理加密和解密,以运行您为映像配置的工作流。
您可以通过 Amazon KMS 管理您的密钥。但是,您没有权限管理 Image Builder 拥有的 Image Builder KMS 密钥。有关使用 Amazon Key Management Service 管理 KMS 密钥的更多信息,请参阅 Amazon Key Management Service 开发人员指南中的入门章节。
加密上下文
为了对加密数据进行额外的完整性和真实性检查,您可以选择在加密数据时包含加密上下文。使用加密上下文对资源进行加密时,Amazon 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 工作流执行角色。
有关客户托管密钥的更多信息,请参阅《Amazon Key Management Service Developer Guide》中的 Managing access to customer managed keys。
{ "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 将无法用其来加密或解密您的工作流资源。
编辑工作流执行角色的策略以添加以下策略语句。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access to the workflow key", "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/*" } } } ] }
映像工作流的 Amazon CloudTrail 事件
以下示例显示了加密和解密使用客户托管密钥进行存储的映像工作流的典型 Amazon CloudTrail 条目。
示例:GenerateDataKey
此示例显示了当 Image Builder 从 Image Builder CreateWorkflow API 操作中调用 Amazon KMS GenerateDataKey API 操作时,CloudTrail 事件可能是什么样子。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 GetWorkflow API 操作中调用 Amazon KMS Decrypt API 操作时,CloudTrail 事件可能是什么样子。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 中的数据存储
Image Builder 不会在服务中存储您的任何日志。所有日志保存在用于生成映像的 Amazon EC2 实例上或 Systems Manager 自动化日志中。
Image Builder 中的互联网络流量隐私
可以通过 HTTPS 保护 Image Builder 和本地位置之间、Amazon 区域中的 AZ 之间以及 Amazon 区域之间的连接。在账户之间没有直接连接。