hi …

well, the reason why there is no key management is that we wanted to keep the 
interface open so that people 
can integrate with everything they want. i have seen keymanagement tools come 
and go.
postgresql is certainly gonna live longer than many of those things.
thus we intentionally decided to be flexible here.

as for postgresql 14: we are certainly willing to push that into 14 but the 
past couple of years
on the TDE front have been a little frustrating for us.
it seems we cannot reach consensus so it is pretty likely that we have to
keep maintaining it separately. i would love to see it in core but i don’t 
expect that to happen
under current circumstances. 

        many thanks,

                hans



> On 11.09.2020, at 17:19, Stephen Frost <sfr...@snowman.net> wrote:
> 
> Greetings,
> 
> * laurent.fe...@free.fr (laurent.fe...@free.fr) wrote:
>> There is a fork named PostgreSQL 12.x TDE from Cybertec. The issue is that 
>> there is no key management at all.
> 
> Key management is definitely an understood issue in the community and
> there was a fair bit of work put into trying to solve that problem last
> year and hopefully that'll continue and perhaps be to a point where we
> have a solution in v14.  With that, perhaps we can also get TDE in, but
> there certainly aren't any guarantees.
> 
> What really needs to be considered, however, is what your attack vectors
> are and if TDE would really address them (often it doesn't, as with any
> TDE the keys end up at least in the memory of the database server and
> therefore available to an attacker, not to mention that the data ends up
> being sent to the application unencrypted, and no, TLS/SSL doesn't help
> that since an attacker on the server would be able to get at the data
> before it's wrapped in TLS).
> 
>> Using pgcrypto has an impact on the application then I have to give up this 
>> way.
> 
> pgcrypto is an option but, again, the keys end up on the database server
> and therefore it may not be very helpful, depending on what the attack
> vector is that you're concerned about.
> 
>> There is another alternative named "Client-Side Encryption'' that I have not 
>> looked at in detail yet. I'm afraid that this solution has an impact on the 
>> application too. And if there are two applications pointing to the same 
>> database I am wondering how the encryption key is shared between the two 
>> nodes.
> 
> Performing encryption of the sensitive data as early as possible is
> certainly the best answer, and that means doing it in the application
> before it ever reaches the database server.  Yes, that means that
> changes have to be made to the application, but it's a much better
> solution which will actually address real attack vectors, like the
> database server being compromised.
> 
> In general, as it relates to multiple applications connecting to the
> same database- I'd just downright discourage that.  PG is much lighter
> weight than other RDBMS solutions and you don't need to have 100
> different applications connecting to the same database server- instead
> have an independent cluster for each application and use certificates or
> other strong authentication mechanism to make sure that app A can only
> connect to the PG cluster for app A and not to any others- this
> completely removes the concern about an SQL injection attack on app A
> allowing the attacker to gain access to app B's data.
> 
> Another advantage of this is that the individual clusters are smaller,
> and they can be scaled independently, backed up independently, and
> restored independently, all of which are really good things.
> 
>> The last point is about the backups, whatever the solution, the data has to 
>> be in an encrypted format when "backuping".
> 
> Use a backup technology that provides encryption- pgbackrest does, and
> some others probably do too.
> 
> Thanks,
> 
> Stephen

--
Cybertec PostgreSQL International GmbH
Gröhrmühlgasse 26, A-2700 Wiener Neustadt
Web: https://www.cybertec-postgresql.com <https://www.cybertec-postgresql.com/>








Reply via email to