我需要找到一种加密整个数据库的方法,并在PostgreSQL中加密特定的列数据。目前,我在 Amazon EC2 实例中有一个 PostgreSQL 数据库。
有没有办法使用 AWS 密钥管理服务或其他方式加密此数据库?
你要求两个不同的用例,我会把它们分开
我需要找到一种加密整个数据库的方法
如前所述,AWS可以默认加密静态数据,数据存储在后台加密(对于RDS或EBS(。AWS 使用 KMS 管理用于加密底层存储的加密密钥。
此加密是透明的,因此具有正确数据库凭据的客户端可以访问数据。
并加密特定列数据
这需要在应用程序级别完成。您在这里有几个选择。应用程序可以直接加密数据,也可以使用 pgcrypto 库让数据库加密数据。
在这种情况下,最大的问题是存储位置以及如何管理加密密钥。密钥可由 KMS 或 AWS Secret Manager 进行管理
使用 KMS,您可以创建数据加密密钥来加密数据本身,并创建 KMS 来加密"数据加密密钥"。实际上 - 秘密管理器正在为您执行此操作。
如果您在 AmazonRelational Database Service (Amazon RDS(下使用 PostgreSQL,则可以自动加密静态数据。
请参阅:加密 Amazon RDS 资源 - Amazon 关系数据库服务
但是,由于您自己安装了 PostgreSQL(无论它是否在 Amazon EC2 实例上(,因此您需要自己管理加密。
请参阅:PostgreSQL 文档:加密选项