Re: postgres_fdw, dblink, and CREATE SUBSCRIPTION security - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: postgres_fdw, dblink, and CREATE SUBSCRIPTION security |
Date | |
Msg-id | CA+Tgmobit_-XTGJxZ0kzxJ7KSasQShxJz-oBGJCDbzPjL6s2-g@mail.gmail.com Whole thread Raw |
In response to | Re: postgres_fdw, dblink, and CREATE SUBSCRIPTION security (Jacob Champion <jchampion@timescale.com>) |
Responses |
Re: postgres_fdw, dblink, and CREATE SUBSCRIPTION security
|
List | pgsql-hackers |
On Thu, Feb 9, 2023 at 4:46 PM Jacob Champion <jchampion@timescale.com> wrote: > On 2/6/23 08:22, Robert Haas wrote: > > I don't think that's quite the right concept. It seems to me that the > > client is responsible for informing the server of what the situation > > is, and the server is responsible for deciding whether to allow the > > connection. In your scenario, the client is not only communicating > > information ("here's the password I have got") but also making demands > > on the server ("DO NOT authenticate using anything else"). I like the > > first part fine, but not the second part. > > For what it's worth, making a negative demand during authentication is > pretty standard: if you visit example.com and it tells you "I need your > OS login password and Social Security Number to authenticate you," you > have the option of saying "no thanks" and closing the tab. No, that's the opposite, and exactly the point I'm trying to make. In that case, the SERVER says what it's willing to accept, and the CLIENT decides whether or not to provide that. In your proposal, the client tells the server which authentication methods to accept. > In a hypothetical world where the server presented the client with a > list of authentication options before allowing any access, this would > maybe be a little less convoluted to solve. For example, a proxy seeing > a SASL list of > > - ANONYMOUS > - EXTERNAL > > could understand that both methods allow the client to assume the > authority of the proxy itself. So if its client isn't allowed to do > that, the proxy realizes something is wrong (either it, or its target > server, has been misconfigured or is under attack), and it can close the > connection *before* the server runs login triggers. Yep, that totally makes sense to me, but I don't think it's what you proposed. > This sounds like a reasonable separation of responsibilities on the > surface, but I think it's subtly off. The entire confused-deputy problem > space revolves around the proxy being unable to correctly decide which > connections to allow unless it also knows why the connections are being > authorized. I agree. > You've constructed an example where that's not a concern: everything's > symmetrical, all proxies operate with the same authority, and internal > users are identical to external users. But the CVE that led to the > password requirement, as far as I can tell, dealt with asymmetry. The > proxy had the authority to connect locally to a user, and the clients > had the authority to connect to other machines' users, but those users > weren't the same and were not mutually trusting. Yeah, agreed. So, I think the point here is that the proxy configuration (and pg_hba.conf) need to be sufficiently powerful that each user can permit the things that make sense in their environment and block the things that don't. I don't think we're really very far apart here, but for some reason the terminology seems to be giving us some trouble. Of course, there's also the small problem of actually finding the time to do some meaningful work on this stuff, rather than just talking.... -- Robert Haas EDB: http://www.enterprisedb.com
pgsql-hackers by date: