静态加密 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

静态加密

您可以在 Amazon Athena 中针对同一区域或有限数量的区域中 Amazon S3 中的加密数据运行查询。您还可以加密 Amazon S3 中的查询结果以及 Amazon Glue Data Catalog 中的数据。

您可以对 Athena 中的以下资产进行加密:

注意

使用 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 中,此选项要求您使用带有 TBLPROPERTIES 子句的 CREATE TABLE 语句,指定 'has_encrypted_data'='true'。有关更多信息,请参阅 根据 Amazon S3 中的加密数据集创建表

有关使用 Amazon S3 进行 Amazon KMS 加密的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 什么是 Amazon Key Management ServiceAmazon Simple Storage Service (Amazon S3) 如何使用 Amazon KMS。有关使用 Athena 操作 SSE-KMS 或 CSE-KMS 的更多信息,请参阅 Amazon 大数据博客启动:Amazon Athena 增加了对查询加密数据的支持

不支持的选项

不支持以下加密选项:

  • 客户提供密钥 SSE (SSE-C)。

  • 使用客户端托管式密钥进行客户端加密。

  • 非对称密钥。

若要比较 Amazon S3 加密选项,请参阅《Amazon Simple Storage Service 用户指南》中的 使用加密保护数据

客户端加密的工具

对于客户端加密,请注意有两种工具可用:

这两种工具不兼容,使用一种工具加密的数据不能被另一种工具解密。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:GenerateDataKeykms: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 中的加密元数据