有没有办法使用 AWS KMS 或其他方式加密 AWS EC2 实例 PostgreSQL 数据库?

Is there a way for encrypting AWS EC2 instance PostgreSQL database using AWS KMS or else?

我需要找到一种加密整个数据库和加密 PostgreSQL 中特定列数据的方法。目前我在 Amazon EC2 实例中有一个 PostgreSQL 数据库。

有没有办法使用 AWS 密钥管理服务或其他方式加密此数据库?

如果您在 Amazon Relational Database Service (Amazon RDS) 下使用 PostgreSQL,您可以自动加密静态数据。

参见:Encrypting Amazon RDS Resources - Amazon Relational Database Service

但是,由于您自己安装了 PostgreSQL(不管它是在 Amazon EC2 实例上),您需要自己管理加密

参见:PostgreSQL Documentation: Encryption Options

你要求两个不同的用例,我会把它们分开

I need to find a method for encrypting whole database

正如已经回答的那样,AWS 可以默认加密静态数据,数据存储在后台加密(对于 RDS 或 EBS)。 AWS 使用 KMS 来管理用于加密底层存储的加密密钥。

这种加密是透明的,因此具有正确数据库凭据的客户端可以访问数据。

and encrypt specific columns data

这需要在应用程序级别完成。您在这里有几个选择。应用程序可以直接加密数据,也可以使用 pgcrypto 库让数据库加密数据。

这种情况下最大的问题是存储在哪里以及如何管理加密密钥。密钥可以由 KMS 或 AWS Secret Manager

管理

使用 KMS,您可以创建数据加密密钥来加密数据本身,并使用 KMS 来加密 "data encryption key"。实际上 - 秘密经理正在为您做这件事。