Izin Ditolak untuk Server Asing


8

Saya mencoba mengatur pengguna dengan izin terbatas yang dapat membuat tabel asing. Saya punya dua database, hr_dbdan accounting_db. Saya telah membuat hr_userpengguna untuk hr_dbdan accounting_userpengguna untuk accounting_db. Saya hanya ingin accounting_userpengguna memiliki hak pilih pada beberapa hr_dbtabel, seperti userstabel. Untuk melakukan ini, sebagai pengguna super saya pergi ke hr_dbdatabase dan berlari:

GRANT CONNECT ON DATABASE hr_db TO accounting_user;
GRANT SELECT ON people TO accounting_user;

Saya mengatur koneksi ke hr_dbdari accounting_dbmenggunakan pembungkus data asing:

CREATE SERVER hr_db FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', dbname 'hr_db', port '5432');

Saya kemudian menambahkan pemetaan untuk accounting_userpengguna:

CREATE USER MAPPING FOR accounting_user SERVER hr_db
OPTIONS (user 'accounting_user', password 'secretpassword');

Sandi untuk accounting_usersama dengan yang saya gunakan untuk masuk dari baris perintah. Ini berfungsi dengan baik:

psql -U accounting_user -W hr_db
[enter accounting_user password]
SELECT * FROM people LIMIT 10;

Saya bisa membuat tabel biasa dalam accounting_dbdatabase sebagai accounting_userpengguna:

psql -U accounting_user -W accounting_db
[enter accounting_user password]
CREATE TABLE test (person_id integer NOT NULL);
DROP TABLE test;

Tetapi jika saya mencoba membuat tabel asing:

CREATE FOREIGN TABLE hr_people (person_id integer NOT NULL)
SERVER hr_db OPTIONS (table_name 'people');
ERROR:  permission denied for foreign server hr_db

Sebagai superuser, saya bisa membuat hr_peopletabel asing dan accounting_userakan memiliki akses ke sana. Jadi koneksi data asing hr_dbsepertinya benar. Apa lagi yang perlu saya berikan accounting_useragar bisa membuat dan menjatuhkan tabel asing?

Jawaban:


10

Untuk memberikan izin untuk server asing:

GRANT USAGE ON FOREIGN SERVER hr_db TO accounting_user;

Rincian lebih lanjut tersedia dalam contoh di halaman resmi https://www.postgresql.org/docs/9.6/static/contrib-dblink-connect.html


Itu membantu dengan izin ditolak tetapi saya mendapatkan ERROR: only superuser can change options of a file_fdw foreign tablesekarang ... ☹️
msciwoj

> Itu membantu dengan izin yang ditolak tetapi saya mendapatkan ERROR: hanya superuser yang dapat> mengubah opsi tabel asing file_fdw sekarang ... Anda harus terhubung pada targetdb dengan superuser dan setelah memberikan penggunaan
Diego Scaravaggi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.