使用 KMS 进行 AWS RDS 加密会影响性能吗?

Posted

技术标签:

【中文标题】使用 KMS 进行 AWS RDS 加密会影响性能吗?【英文标题】:Does AWS RDS encryption with KMS affect performance? 【发布时间】:2016-12-20 22:34:50 【问题描述】:

亚马逊states那个

加密和解密是透明处理的,因此您无需修改​​应用程序即可访问您的数据

我的应用程序(Rails、mysql、Elasticsearch)构建了大量图形,因此查询了大量数据。从我之前的数据库加密经验来看,它确实会影响数据检索速度(我们只能说读取和解密后记录是否匹配条件)。

是否有任何相关的基准?或者,也许您曾经使用过 AWS 的这种服务器端加密?我需要担心性能变化吗?

另外,我还不太清楚是否可以以相同的“透明”方式加密 Elasticsearch 数据。我也会采纳你的建议

【问题讨论】:

【参考方案1】:

根据我之前的数据库加密经验,它确实影响 数据检索速度(我们只能说如果记录匹配条件 阅读并解密后)。

如果每条记录的每个值在插入数据库之前都经过加密,就会出现这种情况。这不是 RDS 加密的工作方式。 RDS 加密通过启用存储数据库的 EBS 卷的加密来工作。对于 RDS 数据库引擎,数据似乎没有加密。这与在连接到您的 EC2 服务器的 EBS 卷上启用加密相同。

关于性能,我没有注意到在 RDS 和 EBS 上启用加密时性能有任何下降。根据 AWS 文档here:

您可以在加密卷上获得与您相同的 IOPS 性能 将使用未加密的卷,对延迟的影响最小。


请注意,这是“静态加密”。如果您还需要“在传输中加密”数据,那么您将需要考虑对所有数据库连接使用 SSL 连接,并可能在您的数据库中启用设置以强制执行 SSL 连接。


关于您的第二个问题,AWS 目前似乎不支持 ElasticSearch 服务的静态加密。对于传输中加密,您可以使用 HTTPS 连接,根据 AWS Support 对this question 的回复:

您可以使用 https 与您的域进行加密通信。

节点之间的通信未加密。节点本身是 托管在我们的 VPC 中,节点之间的所有通信仍然保持 在里面。

【讨论】:

以上是关于使用 KMS 进行 AWS RDS 加密会影响性能吗?的主要内容,如果未能解决你的问题,请参考以下文章

AWS KMS 加密 - 数据大小限制

使用默认 aws/S3 KMS 密钥对解密对象进行跨账户访问

DynamoDB 如何使用 AWS KMS

PHP - 如何缓存从 AWS KMS Parameter Store 检索的数据库凭证

来自 Spark / Dataframes 的 AWS SSE-KMS 加密

AWS:无法使用流从 SSE-KMS 加密存储桶下载文件