本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
中的数据保护 AWS Clean Rooms
AWS 责任共担模式
出于数据保护的目的,我们建议您保护 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/
。
强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括当您 AWS 服务 使用控制台 AWS CLI、API AWS Clean Rooms 或 AWS SDK 或其他方式使用时。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL,强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。
静态加密
AWS Clean Rooms 始终对所有静态服务元数据进行加密,无需任何额外配置。当你使用时,这种加密是自动 AWS Clean Rooms的。
Clean Rooms ML 使用加密存储在服务中的所有静态数据。 AWS KMS如果您选择提供自己的 KMS 密钥,则相似模型和相似细分生成作业内容将使用您的 KMS 密钥进行静态加密。
使用 AWS Clean Rooms 自定义 ML 模型时,该服务会加密所有静态存储的数据。 AWS KMS AWS Clean Rooms 支持使用您创建、拥有和管理的对称客户管理密钥来加密静态数据。如果未指定客户管理密钥, AWS 拥有的密钥 则默认使用客户管理密钥。
AWS Clean Rooms 使用授权和密钥策略访问客户管理的密钥。您可以随时撤销授予访问权限,或删除服务对客户托管密钥的访问权限。如果你这样做,将 AWS Clean Rooms 无法访问由客户管理的密钥加密的任何数据,这会影响依赖该数据的操作。例如,如果您尝试从 AWS Clean Rooms 无法访问的加密 ML 输入通道创建经过训练的模型,则该操作将返回ValidationException错误。
注意
您可以利用 Amazon S3 中的加密选项来保护静态数据。
有关更多信息,请参阅《Amazon S3 用户指南》中的指定 Amazon S3 加密。
在其中 AWS KMS使用 ID 映射表时 AWS Clean Rooms,该服务会使用静态存储的所有数据进行加密。如果您选择提供自己的 KMS 密钥,则您的 ID 映射表中的内容将通过 KMS 密钥进行静态加密 AWS Entity Resolution 数据匹配服务。有关使用 ID 映射工作流程进行加密所需的权限的更多详细信息,请参阅《AWS Entity Resolution 数据匹配服务 用户指南》中的为 AWS Entity Resolution 数据匹配服务创建工作流程作业角色。
传输中加密
AWS Clean Rooms 在传输过程中使用传输层安全 (TLS) 进行加密。与的 AWS Clean Rooms 通信始终通过 HTTPS 进行,因此无论您的数据存储在 Amazon S3、Amazon Athena 还是 Snowflake 中,您的数据在传输过程中始终处于加密状态。这包括使用 Clean Rooms ML 时的所有传输中数据。
加密底层数据
有关如何解密您的底层数据的更多信息,请参阅加密计算 Clean Rooms。
密钥策略
密钥策略控制对客户自主管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略,其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时,可以指定密钥策略。有关更多信息,请参阅《 AWS Key Management Service 开发者指南》中的管理对客户管理密钥的访问权限。
要将客户管理的密钥用于您的 AWS Clean Rooms 自定义 ML 模型,密钥政策中必须允许以下 API 操作:
-
kms:DescribeKey— 提供客户管理的密钥详细信息 AWS Clean Rooms 以允许验证密钥。 -
kms:Decrypt— 提供解密加密数据并将其用于相关任务的访问权限。 AWS Clean Rooms -
kms:CreateGrant-Clean Rooms ML 通过为亚马逊 ECR 创建补助金,对亚马逊 ECR 中的静态训练和推理图像进行加密。要了解更多信息,请参阅 Amazon ECR 中的静态加密。Clean Rooms ML 还使用 SageMaker Amazon AI 来运行训练和推理任务,并为 SageMaker AI 创建补助金,以加密连接到实例的亚马逊 EBS 卷以及亚马逊 S3 中的输出数据。要了解更多信息,请参阅在 SageMaker Amazon AI 中使用加密保护静态数据。 -
kms:GenerateDataKey-Clean Rooms ML 使用服务器端加密对存储在 Amazon S3 中的静态数据进行加密。 AWS KMS keys要了解更多信息,请参阅在 Amazon S3 中使用带有 AWS KMS keys (SSE-KMS) 的服务器端加密。
以下是您可以为以下资源添加 AWS Clean Rooms 的政策声明示例:
带有合成数据的 ML 输入通道
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Allow access to principals authorized to use AWS Clean Rooms ML", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::666666666666:role/ExampleRole" }, "Action": [ "kms:GenerateDataKey", "kms:CreateGrant", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cleanrooms-ml.us-east-1.amazonaws.com" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "Encrypt", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "DescribeKey", "RetireGrant", "GenerateDataKey" ] }, "BoolIfExists": { "kms:GrantIsForAWSResource": true } } }, { "Sid": "Allow describe key for principals authorized to use AWS Clean Rooms ML", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/ExampleRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cleanrooms-ml.us-east-1.amazonaws.com" } } }, { "Sid": "Allow grant operations for AWS Clean Rooms ML service principal", "Effect": "Allow", "Principal": { "Service": "cleanrooms-ml.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:CreateGrant", "kms:Decrypt" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "Encrypt", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "DescribeKey", "RetireGrant", "GenerateDataKey" ] } } }, { "Sid": "Allow describe key for AWS Clean Rooms ML service principal", "Effect": "Allow", "Principal": { "Service": "cleanrooms-ml.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" } ] }
没有合成数据的 ML 输入通道
经过训练的模型作业或经过训练的模型推理作业
Clean Rooms ML 不支持在客户管理的密钥策略中指定服务加密上下文或源上下文。客户可以在中看到该服务内部使用的加密上下文 CloudTrail。
中间表的加密
在中使用中间表时 AWS Clean Rooms,该服务使用 AWS Key Management Service (AWS KMS) 加密所有静态存储的数据。默认情况下,该服务使用服务管理的密钥加密中间表数据。如果您选择提供自己的 KMS 密钥,该服务会使用该密钥对您的静态中间表进行加密。这使用带有 AWS KMS keys (SSE-KMS) 的服务器端加密。
AWS Clean Rooms 使用密钥策略和服务主体访问中间表的客户管理密钥。该服务在填充中间表时对中间表数据进行写入加密,并在后续分析中使用中间表时透明地解密数据。
KMS 密钥 ARN 在中间表创建时提供,适用于该表的所有版本。您可以使用中间表详细信息页面上的 “编辑” 操作更新 KMS 密钥。新密钥将在下次填充时生效——每个版本都使用填充时指定的密钥进行加密。
注意
删除中间表不需要任何 AWS KMS 操作。托管存储服务删除了 Amazon S3 中的加密数据。
中间表所需的 AWS KMS 权限
要将客户管理的密钥用于中间表,密钥策略中必须允许以下 API 操作:
-
kms:DescribeKey— 在创建或更新中间表时验证密钥状态。 -
kms:GenerateDataKey— 填充表时对中间表数据进行加密。Amazon S3 代表该服务调用 AWS KMS 以生成用于 SSE-KMS 加密的数据密钥。 -
kms:Decrypt— 在后续分析中引用中间表数据时解密该表数据。Amazon S3 代表该服务调用 AWS KMS 以透明地解密数据。
中间表的关键策略示例
以下是使用客户管理的密钥和中间表的密钥策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Clean Rooms to encrypt and decrypt intermediate table data", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:cleanrooms:intermediateTableArn": "arn:aws:cleanrooms:us-east-1:666666666666:membership/membership-id/intermediatetable/intermediate-table-id" }, "ForAnyValue:ArnEquals": { "aws:SourceArn": [ "arn:aws:cleanrooms:us-east-1:666666666666:membership/member-1-membership-id", "arn:aws:cleanrooms:us-east-1::membership/member-2-membership-id" ] } } }, { "Sid": "Allow Clean Rooms to describe key", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow caller to validate key via Clean Rooms", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::666666666666:role/ExampleRole" }, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cleanrooms.us-east-1.amazonaws.com", "kms:CallerAccount": "666666666666" } } } ] }
第一条语句授予 AWS Clean Rooms 服务主体在填充期间加密数据并在分析期间解密数据的权限。该kms:EncryptionContext:aws:cleanrooms:intermediateTableArn条件限制了哪些中间表可以使用密钥。该aws:SourceArn条件通过限制对协作中的特定成员资格 ARN 的访问权限来提供混乱的代理保护。
第二条语句允许服务描述密钥以进行验证。
第三条语句允许客户账户中的特定 IAM 角色通过执行密钥验证 AWS Clean Rooms。允许的操作是 DescribeKey GenerateDataKey、和 Decrypt。访问权限受使用kms:ViaService和kms:CallerAccount条件的限制。此角色通常是您用来与之交互的 IAM 角色 AWS Clean Rooms。
加密上下文
AWS Clean Rooms 加密中间表数据时使用以下加密上下文:
{ "aws:cleanrooms:intermediateTableArn": "arn:aws:cleanrooms:us-east-1:123456789012:membership/membership-id/intermediatetable/intermediate-table-id" }
每个 AWS KMS 操作都 CloudTrail 使用中间表 ARN 登录,从而提供清晰的审计记录,以了解哪个资源触发了每个加密或解密调用。您可以在密钥策略中使用kms:EncryptionContext条件密钥来限制哪些中间表可以使用该密钥。