Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS) - Mailing list pgsql-hackers
From | Stephen Frost |
---|---|
Subject | Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS) |
Date | |
Msg-id | 20190817175217.GE16436@tamriel.snowman.net Whole thread Raw |
In response to | Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS) (Bruce Momjian <bruce@momjian.us>) |
Responses |
Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS)
|
List | pgsql-hackers |
Greetings, * Bruce Momjian (bruce@momjian.us) wrote: > I will state whet I have already told some people privately, that for > this feature, we have many people understanding 40% of the problem, but > thinking they understand 90%. I do agree we should plan for our > eventual full feature set, but I can't figure out what that feature set > looks like beyond full-cluster encryption, and no one is addressing my > concerns to move that forward. Vague complains that they don't like the > process are not changing that. I don't particularly care for these "40%" and "90%" characterizations and I'm concerned that some might also, reasonably, find that to be a way to dismiss the opinions and comments from anyone who isn't in the clearly subjective "90%" crowd. Regarding what the eventual feature-set is, I believe it's abundently clear where we want to eventually go and it's surprising to me that it's unclear- we should be aiming for parity with the other major database vendors when it comes to TDE. That's pretty clear and straight-forward to define, as well, and as facts: Oracle: - Supports column-level and tablespace-level. - Has a Master Encryption Key (MEK), and table keys. - Supports having the MEK be external to the database system. - For tablespaces, can also use an external key store with different keys for different tablespaces. - Supports Triple-DES and AES (128, 192, 256 bit) - Supports a NOMAC parameter to improve performance. - Has a mechanism for changing the keys/algorithms for tables with encrypted columns. SQL Server: - Supports database-level encryption - Has a Instance master key and a per-database master key - Includes a key store for having other keys - Provides a function-based approach for encrypting at a column level (imagine pgcrypto, but where the key can be pulled from a key-store in the database which has to be unlocked) DB2: - Supports a Master Key and a Data Encryption Key - Support encryption at a per-database level Sybase: - Supports a key encryption key - Supports column level encryption with column encryption keys MySQL: - Supports a master encryption key - Supports having the master key in an external data store which speaks Oasis KMIP - Supports per-tablespace encryption - Supports per-table encryption Every one of the database systems above uses at least a two-tier system (SQL server seems to possibly support three-tier) where there is a MEK and then multiple keys under the MEK to allow partial encryption of the system, at *least* at a database or tablespace level but a number go down to column-level, either directly or using a function-based approach with a key store. Every one has some kind of key store, and a number support an external key store. There is not one that uses a single key or which requires that the enctire instance be encrypted. Being PostgreSQL, I would expect us to shoot for as much flexibility as we possible, similar to what we've done for our ACL system where we support down to a column-level (and row level with RLS). That's our target end-goal. Having an incremental plan to get there where we start with something simpler and then work towards a more complicated implementation is fine- but that base, as I've said multiple times and as supported by what we see other database systems have, should include some kind of key store with support for multiple keys and a way to encrypt something less than the entire system. Every other database system that we consider at all comparable has at least that. Thanks, Stephen
Attachment
pgsql-hackers by date: