Обсуждение: dblink for 8.4 should work without user-mappings

Поиск
Список
Период
Сортировка

dblink for 8.4 should work without user-mappings

От
Itagaki Takahiro
Дата:
contrib/dblink in 8.4 supports a server name by CREATE SERVER for connection
string, but it always requires an user-mapping (by CREATE USER MAPPING).
However, I think it should work user-mappings because it works when
the connection string is passed directly.

=# SELECT * FROM dblink('dbname=postgres', 'SELECT current_user') AS t(i name);
(ok)

=# CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator;
=# CREATE SERVER server1 FOREIGN DATA WRAPPER postgresql OPTIONS (dbname 'postgres');
=# SELECT * FROM dblink('server1', 'SELECT 1') AS t(i integer);
ERROR:  user mapping not found for "postgres"

The attached patch adds 'missing_ok' parameter to GetUserMapping() and
made dblink to use it. There should be no additional security issues here
because dblink's original security check works even for server name mode.

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center

Вложения

Re: dblink for 8.4 should work without user-mappings

От
Peter Eisentraut
Дата:
On Wednesday 24 June 2009 05:42:01 Itagaki Takahiro wrote:
> contrib/dblink in 8.4 supports a server name by CREATE SERVER for
> connection string, but it always requires an user-mapping (by CREATE USER
> MAPPING). However, I think it should work user-mappings because it works
> when the connection string is passed directly.

I had looked into this the other day.  I *think* that SQL/MED requires a user 
mapping to be present.  There are cases where either behavior might be useful, 
but we should think about this carefully.  It's not simply a question of 
security, as you appear to imply.



Re: dblink for 8.4 should work without user-mappings

От
Bruce Momjian
Дата:
What happened to this patch?

---------------------------------------------------------------------------

Itagaki Takahiro wrote:
> contrib/dblink in 8.4 supports a server name by CREATE SERVER for connection
> string, but it always requires an user-mapping (by CREATE USER MAPPING).
> However, I think it should work user-mappings because it works when
> the connection string is passed directly.
> 
> =# SELECT * FROM dblink('dbname=postgres', 'SELECT current_user') AS t(i name);
> (ok)
> 
> =# CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator;
> =# CREATE SERVER server1 FOREIGN DATA WRAPPER postgresql OPTIONS (dbname 'postgres');
> =# SELECT * FROM dblink('server1', 'SELECT 1') AS t(i integer);
> ERROR:  user mapping not found for "postgres"
> 
> The attached patch adds 'missing_ok' parameter to GetUserMapping() and
> made dblink to use it. There should be no additional security issues here
> because dblink's original security check works even for server name mode.
> 
> Regards,
> ---
> ITAGAKI Takahiro
> NTT Open Source Software Center

[ Attachment, skipping... ]

> 
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.comPG East:  http://www.enterprisedb.com/community/nav-pg-east-2010.do + If your life is a hard
drive,Christ can be your backup. +
 


Re: dblink for 8.4 should work without user-mappings

От
Takahiro Itagaki
Дата:
Bruce Momjian <bruce@momjian.us> wrote:

> What happened to this patch?

It was rejected because SQL standard always requires an user mapping.
I agree about the decision, too.

> ---------------------------------------------------------------------------
> Itagaki Takahiro wrote:
> > contrib/dblink in 8.4 supports a server name by CREATE SERVER for connection
> > string, but it always requires an user-mapping (by CREATE USER MAPPING).
> > However, I think it should work user-mappings because it works when
> > the connection string is passed directly.
> > 
> > The attached patch adds 'missing_ok' parameter to GetUserMapping() and
> > made dblink to use it. There should be no additional security issues here
> > because dblink's original security check works even for server name mode.

Regards,
---
Takahiro Itagaki
NTT Open Source Software Center