AWS RDS 加密允许通过 mysql-客户端访问生成纯文本

AWS RDS encryption allows yielding plain text with mysql-client access

我是 AWS 的新手,我的任务是确保 RDS 特定数据库中的所有数据都已加密。

我创建了启用加密的示例 RDS 数据库实例(并使其可全局访问以模拟利用过程)。

然后,一旦我使用 mysql-client 创建了数据库实例,当我访问数据时,

+---------+---------+
| column1 | column2 |
+---------+---------+
| orange  | hawaii  |
+---------+---------+

所有数据都不是密文而是明文。我期待这样的事情:

+----------+---------+
| column1  | column2 |
+----------+---------+
| abj12b7  | bb2ce11 |
+----------+---------+

此外,当 mysqldump 尝试时,我可以获得原始数据。

所以我的问题是:这个 RDS 的加密选项有什么用?如何确认RDS中的数据是加密的,这种加密在哪个工作流中保证你的安全?实际上,不确定这种加密是如何工作的....因为我可以通过通常的 mysql-客户端访问看到纯文本数据....

当我不在 RDS 中加密存储时,是否存在任何可想象的风险或利用场景?

原生 aws 加密是透明的,有效地加密了底层存储。事实上,如果您使用凭据正确访问数据库,您将取回纯数据。

如果你想在应用程序级别加密数据,你将不得不自己做(你仍然可以使用 KMS 进行主密钥管理)。

我们不时看到类似的问题 - 想象一下,如果所有数据都像您描述的那样被加密,您将无法在不解密整个数据库(或至少可搜索/索引)的情况下搜索或查询任何内容列)

RDS 加密用于加密您的数据所在的存储。

Amazon RDS encrypted DB instances provide an additional layer of data protection by securing your data from unauthorized access to the underlying storage. You can use Amazon RDS encryption to increase data protection of your applications deployed in the cloud, and to fulfill compliance requirements for data-at-rest encryption.

如果无法访问您的 KMS master key

,则任何试图物理访问磁盘的外部资源都将无法访问。

如果您希望对 MySQL 数据库中的各个值进行加密,这将要求您在将数据写入数据库之前使用自己的客户端密钥进行加密。

关于任何风险,您可以从网络角度(保密)和凭据角度减少对 RDS 数据库的访问。有些人使用 Secrets Manager 来 rotate database credentials。通过这样做,任何人都不应访问实时凭据,这进一步限制了个人的访问。

这是关于 RDS 的精彩 article 以及它如何使用加密。