Re: Proposal: Role Sandboxing for Secure Impersonation

Поиск
Список
Период
Сортировка
От Wolfgang Walther
Тема Re: Proposal: Role Sandboxing for Secure Impersonation
Дата
Msg-id e654c73d-4dc8-432a-baf4-43ca52a959b3@technowledgy.de
обсуждение исходный текст
Ответ на Re: Proposal: Role Sandboxing for Secure Impersonation  (Jelte Fennema-Nio <postgres@jeltef.nl>)
Ответы Re: Proposal: Role Sandboxing for Secure Impersonation
Re: Proposal: Role Sandboxing for Secure Impersonation
Список pgsql-hackers
Jelte Fennema-Nio:
>> I am extremely skeptical of something like SET ROLE WITH <password>.
> 
> Totally agreed on the security concerns here. We don't want to provide
> passwords in a SQL command. For the same reasons explained by Robert,
> we also tell people not to set user passwords using SQL, but to use
> the \password command instead which generates hashes client side.

Right, I should have clarified: My proposal wasn't mean to be taken 
literally as an SQL command. Passwords should not be sent as plain text, 
no question. This needs to happen on the protocol level.

What my proposal is about is this: All other suggestions just seem to 
fight the symptoms of an underlying problem. Which is, that connection 
poolers / PostgREST need to run with a very high privileged role, 
because they need to be able to switch into all possible roles that 
could come in via that connection.

Of course, authentication should still happen - but it doesn't happen 
with PostgreSQL anymore. It has to be implemented in the application 
layer / pooler. That kind of defeats some of the purpose of using the 
PostgreSQL role system for users' roles.

I don't want to give any privileges to the connection pooler / 
application and I don't want to outsource authentication.

Once the role to connect with is unprivileged, all the other problems 
become obsolete. RESET ROLE is just fine - you can't win anything.

> If we want something like this, we'd want to allow
> users to re-trigger SCRAM authentication. Which clearly requires a
> protocol change.

Yes. This. Re-authenticating without re-connecting.

I'd hope that this would also work around problems building up the role 
cache when doing SET ROLE with a lot of granted roles [1].

Best,

Wolfgang

[1]: 
https://www.postgresql.org/message-id/7d32e088-34a7-421a-9398-80958acb3f64%40technowledgy.de



В списке pgsql-hackers по дате отправления: