本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
加密计算参数
在创建协作时,可使用 Clean Rooms 加密计算 (C3R) 为协作提供加密计算参数。您可以使用 AWS Clean Rooms 控制台或 CreateCollaboration
API 操作创建协作。在控制台中,启用支持加密计算选项后,可以为加密计算参数中的参数设置值。有关更多信息,请参阅以下主题。
允许 cleartext 列参数
在控制台中,您可以在创建协作时设置允许 cleartext 列参数,以指定是否允许在包含加密数据的表中包含 cleartext 数据。
下表描述了允许 cleartext 列参数的值。
参数值 | 描述 |
---|---|
否 |
加密表中不允许有 Cleartext 列。所有数据都受到加密保护。 |
是 |
加密表中允许有 Cleartext 列。 Cleartext 列不受加密保护,包含为 cleartext。您应该注意行中的 cleartext 数据可能揭示了表中其他数据的哪些信息。 要在特定列上运行 SUM 或 AVG,这些列必须是 cleartext。 |
使用 CreateCollaboration
API 操作,对于 dataEncryptionMetadata
参数,您可以将 allowCleartext
的值设置为 true
或 false
。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考。
Cleartext 列对应于按表特定架构分类为 cleartext 的列。这些列中的数据未加密,可以以任何方式使用。如果数据不敏感和/或需要比加密 sealed 列或 fingerprint 列所允许的更大的灵活性,则列 Cleartext 可能很有用。
“允许重复”参数
在控制台中,您可以在创建协作时设置允许重复参数,以指定为 JOIN 查询加密的列是否可以包含重复的非 NULL 值。
重要
允许重复、允许对不同名称列进行 JOIN 和保留 NULL 值参数具有单独但相关的效果。
下表描述了允许重复参数的值。
参数值 | 描述 |
---|---|
否 |
fingerprint 列中不允许有重复的值。单个 fingerprint 列中的所有值都必须是唯一的。 |
是 |
fingerprint 列中允许有重复的值。 如果需要联接具有重复值的列,请将此值设置为是。如果设置为是,则 C3R 表或结果的 fingerprint 列中出现的频率模式可能意味着有关 cleartext 数据结构的一些其他信息。 |
使用 CreateCollaboration
API 操作,对于 dataEncryptionMetadata
参数,您可以将 allowDuplicates
的值设置为 true
或 false
。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考。
默认情况下,如果必须在 JOIN 查询中使用加密数据,则 C3R 加密客户端要求这些列没有重复值。此要求是为了加强数据保护。这种行为可以帮助确保无法观察到数据中的重复模式。但是,如果您想在 JOIN 查询中使用加密数据并且不担心重复值,则允许重复参数可以禁用此保守检查。
“允许对具有不同名称的列进行 JOIN”参数
在控制台中,您可以在创建协作时设置允许对具有不同名称的列进行 JOIN 参数,以指定是否支持具有不同名称的列之间的 JOIN 语句。
有关更多信息,请参阅 列标题名称的标准化 。
下表描述了允许对具有不同名称的列进行 JOIN 参数的值。
参数值 | 描述 |
---|---|
否 |
不支持联接具有不同名称的 fingerprint 列。JOIN 语句仅在具有相同名称的列上提供准确的结果。 重要否值可提高信息安全性,但要求协作参与者事先就列名达成共识。如果两列在加密为 fingerprint 列时具有不同的名称,并且允许对具有不同名称的列进行 JOIN 设置为否,则对这些列的 JOIN 语句不会生成任何结果。这是因为它们之间不共享加密后的值。 |
是 |
支持联接具有不同名称的 fingerprint 列。为了提高灵活性,用户可以将此值设置为是,这样无论列名如何,都允许对列执行 JOIN 语句。 如果设置为是,则 C3R 加密客户端在保护 fingerprint 列时将不会考虑列名。因此,在 C3R 表中可以观察到不同 fingerprint 列的共同值。 例如,如果一行在 |
使用 CreateCollaboration
API 操作,对于 dataEncryptionMetadata
参数,您可以将 allowJoinsOnColumnsWithDifferentNames
的值设置为 true
或 false
。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考。
默认情况下,fingerprint 列加密受该列的 targetHeader
所影响,它在步骤 4:为表格文件生成加密架构 中设置。因此,同一个 cleartext 值在每个不同的 fingerprint 列中都有不同的加密表示。
在某些情况下,此参数可用于防止推断 cleartext 值。例如,在 fingerprint 列中看到相同的加密值时,可以通过 City
和 State
来合理地推断该值是 New York
。但是,使用此参数需要事先进行额外的协调,以便查询中要联接的所有列都具有共享名称。
您可以使用允许对具有不同名称的列进行 JOIN 参数来放宽此限制。当参数值设置为 Yes
时,无论名称如何,都允许一起使用为 JOIN 加密的任何列。
“保留 NULL 值”参数
在控制台中,您可以在创建协作时设置保留 NULL 值参数,以指示该列不存在任何值。
下表描述了保留 NULL 值参数的值。
参数值 | 描述 |
---|---|
否 |
NULL 值不会被保留。NULL 值在加密表中不会显示为 NULL。NULL 值在 C3R 表中显示为唯一的随机值。 |
是 | NULL 值会被保留。NULL 值在加密表中显示为 NULL。如果您需要 NULL 值的 SQL 语义,则可以将此值设置为是。因此,无论列是否加密以及允许重复的参数设置如何,NULL 条目在 C3R 表中都会显示为 NULL。 |
使用 CreateCollaboration
API 操作,对于 dataEncryptionMetadata
参数,您可以将 preserveNulls
的值设置为 true
或 false
。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考。
当协作的保留 NULL 值参数设置为否时:
-
cleartext
列中的 NULL 条目保持不变。 -
加密
fingerprint
列中的 NULL 条目被加密为随机值以隐藏其内容。在 cleartext 中联接带有 NULL 条目的加密列不会生成任何 NULL 条目的任何匹配项。不会进行任何匹配,因为它们各自会收到自己的唯一随机内容。 -
加密
sealed
列中的 NULL 条目已加密。
当协作的保留 NULL 值参数的值设置为是时,无论列是否加密,所有列中的 NULL 条目都将保持为 NULL。
保留 NULL 值参数在数据扩充等情况下非常有用,在这些情况下,您需要共享以 NULL 表示的信息缺失。在 fingerprint 或 HMAC 格式中,如果要进行 JOIN 或 GROUP BY 的列中有 NULL 值,保留 NULL 值参数也很有用。
如果允许重复和保留 NULL 值参数的值设置为否,则在 fingerprint 列中包含多个 NULL 条目会产生错误并停止加密。如果任一参数的值设置为是,则不会发生此类错误。