加密选项
Vastbase E100提供多个级别的加密,并提供灵活性,保护数据免于因数据库服务器被盗,不道德的管理员和不安全的网络而泄露。可能还需要加密来保护敏感数据,例如医疗记录或金融 Transaction 。
密码加密
数据库用户密码存储为哈希值(由设置 password_encryption 确定),因此管理员无法确定分配给用户的实际密码。如果SCRAM或MD5加密用于客户端身份验证,则未加密的密码甚至不会临时存在于服务器上,因为客户端在通过网络发送之前对其进行加密。 SCRAM是首选,因为它是Internet标准,并且比Vastbase E100特定的MD5身份验证协议更安全。
特定列的加密
pgcrypto 模块允许以加密方式存储某些字段。如果只有部分数据是敏感的,这很有用。客户端提供解密密钥,数据在服务器上解密,然后发送到客户端。
解密数据和解密密钥在服务器上存在短暂时间,同时在客户端和服务器之间进行解密和通信。这提供了一个简短的时刻,数据和密钥可以被完全访问数据库服务器的人拦截,例如系统管理员。
存储加密
存储加密可以在文件系统级别或块级别执行。 Linux文件系统加密选项包括eCryptfs和EncFS,而FreeBSD使用PEFS。块级或全盘加密选项包括Linux上的dm-crypt LUKS和FreeBSD上的GEOM模块geli和gbde。许多其他操作系统都支持此功能,包括Windows。
如果驱动器或整个计算机被盗,此机制可防止从驱动器读取未加密的数据。这不能防止在安装文件系统时受到攻击,因为在安装时,操作系统会提供未加密的数据视图。但是,要挂载文件系统,需要某种方法将加密密钥传递给操作系统,有时密钥存储在安装磁盘的主机上的某个位置。
存储加密功能默认开启,且无参数控制,无法关闭。
存储加密验证示例:
1、连接数据库。
2、创建表,插入测试数据,退出数据库。
create table t1(x int,y text);
insert into t1 values(999933,'cctest');
\q
3、在数据库实例目录$PGDATA或上层目录使用grep命令在文件中查询插入的数据,无法在数据文件中搜索到,证明存储加密功能有效。
grep -rn 'cctest'
加密网络数据
SSL连接对通过网络发送的所有数据进行加密:密码,查询和返回的数据。 pg_hba.conf 文件允许管理员指定哪些主机可以使用非加密连接( host )以及哪些主机需要SSL加密连接( hostssl )。此外,客户端可以指定它们仅通过SSL连接到服务器。 Stunnel或SSH也可用于加密传输。
SSL主机验证
客户端和服务器可以相互提供SSL证书。它需要在每一侧进行一些额外的配置,但与仅仅使用密码相比,这提供了更强的身份验证。它可以防止计算机假装成服务器的时间足以读取客户端发送的密码。它还有助于防止客户端和服务器之间的计算机假装成服务器并在客户端和服务器之间读取和传递所有数据的“中间人”攻击。
客户端加密
如果服务器机器的系统管理员不可信,则客户端必须加密数据;这样,未加密的数据永远不会出现在数据库服务器上。数据在发送到服务器之前在客户端上加密,并且数据库结果必须在使用之前在客户端上解密。