静态加密
您可以在 Amazon Athena 中针对同一区域或有限数量的区域中 Amazon S3 中的加密数据运行查询。您还可以加密 Amazon S3 中的查询结果以及 Amazon Glue Data Catalog 中的数据。
您可以对 Athena 中的以下资产进行加密:
-
Amazon S3 中所有查询的结果,Athena 将这些结果存储在称为 Amazon S3 结果位置的位置中。您可以加密在 Amazon S3 中存储的查询结果,无论底层数据集是否在 Amazon S3 中加密都是如此。有关信息,请参阅加密在 Amazon S3 中存储的 Athena 查询结果。
-
Amazon Glue 数据目录中的数据。有关信息,请参阅针对 Amazon Glue 数据目录中加密元数据的权限。
注意
使用 Athena 读取加密的表时,Athena 使用为表数据指定的加密选项,而不是查询结果的加密选项。如果为查询结果和表数据配置了单独的加密方法或密钥,Athena 将读取表数据,而不使用加密选项和用于加密或解密查询结果的密钥。
但是,如果使用 Athena 将数据插入到具有加密数据的表中,则 Athena 将使用为查询结果指定的加密配置来加密插入的数据。例如,如果您为查询结果指定 CSE_KMS
加密,则 Athena 将使用与用于查询结果加密的相同 Amazon KMS 密钥 ID,通过 CSE_KMS
对插入的表数据进行加密。
主题
支持的 Amazon S3 加密选项
Athena 支持 Amazon S3 中数据集和查询结果的以下加密选项。
加密类型 | 描述 | 跨区域支持 |
---|---|---|
SSE-S3 | 使用 Amazon S3 托管式密钥进行服务器端加密 (SSE)。 | 是 |
SSE-KMS | 使用 Amazon Key Management Service 客户管理的密钥进行服务器端加密 (SSE)。注意使用此加密类型,Athena 不需要您在创建表时指示数据是加密的。 |
是 |
CSE-KMS |
使用 Amazon KMS 客户管理的密钥进行客户端加密 (CSE)。在 Athena 中,此选项要求您使用带有 |
否 |
有关使用 Amazon S3 进行 Amazon KMS 加密的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 什么是 Amazon Key Management Service 和 Amazon Simple Storage Service (Amazon S3) 如何使用 Amazon KMS。有关使用 Athena 操作 SSE-KMS 或 CSE-KMS 的更多信息,请参阅 Amazon 大数据博客的 启动:Amazon Athena 增加了对查询加密数据的支持
不支持的选项
不支持以下加密选项:
-
客户提供密钥 SSE (SSE-C)。
-
使用客户端托管式密钥进行客户端加密。
-
非对称密钥。
若要比较 Amazon S3 加密选项,请参阅《Amazon Simple Storage Service 用户指南》中的 使用加密保护数据。
客户端加密的工具
对于客户端加密,请注意有两种工具可用:
-
Amazon S3 加密客户端 – 此操作工具仅加密 Amazon S3 的数据,并且受 Athena 支持。
-
Amazon Encryption SDK – 软件开发工具包可在 Amazon 的任何地方加密数据但并不直接受 Athena 支持。
这两种工具不兼容,使用一种工具加密的数据不能被另一种工具解密。Athena 仅能直接支持 Amazon S3 加密客户端。如果您使用软件开发工具包对数据进行加密,则可以从 Athena 运行查询,但数据将作为加密文本返回。
如果要使用 Athena 查询已使用 Amazon 加密软件开发工具包加密的数据,您必须下载并解密您的数据,然后使用 Amazon S3 加密客户端再次对其加密。
Amazon S3 中加密数据的权限
根据在 Amazon S3 中使用的加密类型,可能需要向 Athena 中使用的策略添加权限(也称为“允许”操作):
-
SSE-S3 - 如果使用 SSE-S3 加密,则 Athena 用户无需在其策略中添加权限。对相应的 Amazon S3 位置和 Athena 操作具有适当的 Amazon S3 权限就足够了。要详细了解允许适当 Athena 和 Amazon S3 权限的策略,请参阅Amazon Athena 的 Amazon 托管策略和 控制从 Athena 对 Amazon S3 的访问。
-
Amazon KMS - 如果使用 Amazon KMS 加密,则除了 Athena 和 Amazon S3 权限之外,还必须允许 Athena 用户执行特定 Amazon KMS 操作。通过编辑对 Amazon S3 中数据加密使用的 Amazon KMS 客户管理的密钥 (CMK) 密钥策略,您可以允许这些操作。要将密钥用户添加到相应的 Amazon KMS 密钥策略,则可以使用 Amazon KMS 控制台,网址:https://console.aws.amazon.com/kms
。有关如何将用户添加到 Amazon KMS 密钥策略,请参阅《Amazon Key Management Service 开发人员指南》中的允许密钥用户使用 CMK。 注意
高级密钥策略管理员可以调整密钥策略。要处理加密数据集,最少应允许 Athena 用户执行
kms:Decrypt
操作。要使用加密的查询结果,则最小允许操作是kms:GenerateDataKey
和kms:Decrypt
。当使用 Athena 在 Amazon S3 中查询数据集时,如果有大量使用 Amazon KMS 加密的对象,则 Amazon KMS 可能会节流查询结果。当有大量的小对象时,这种可能性更大。Athena 已停止重试请求,但可能仍会发生节流错误。如果您在处理大量加密对象时遇到此问题,则可以选择启用 Amazon S3 存储桶密钥来减少对 KMS 的调用次数。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本。另一种选择是增加 Amazon KMS 的服务配额。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的配额。
有关将 Amazon S3 与 Athena 结合使用时的权限疑难解答信息,请参阅 在 Athena 中进行排查问题 主题的 权限 部分。
针对 Amazon Glue 数据目录中加密元数据的权限
如果加密 Amazon Glue Data Catalog 中的元数据,则必须向用于访问 Athena 的策略添加 "kms:GenerateDataKey"
、"kms:Decrypt"
和 "kms:Encrypt"
操作。有关信息,请参阅从 Athena 配置对 Amazon Glue Data Catalog 中加密元数据的访问。