Postgresql ограничения доступа к полю / таблице для выбора - PullRequest
0 голосов
/ 10 апреля 2011

Я рассматриваю возможность использования postgresql / postgis для пространственных исследований. У меня есть одна таблица с данными и одна таблица с координатами. «Данные» сами по себе не являются конфиденциальными. Но поскольку конечные пользователи легко могут определить идентичность случаев, после объединения с данными «данные» очень чувствительны.

В настоящее время я использую функции postgis для выполнения пространственных запросов и возвращаю результат в R для статистического анализа.

С помощью postgresql можно ограничить доступ к определенным полям, чтобы конечные пользователи могли использовать поле (координаты) и получать результат из пространственных запросов. Но не может вернуть / экспортировать поле (координаты) напрямую через оператор выбора.

Ответы [ 4 ]

3 голосов
/ 11 апреля 2011

Начиная с версии 8.4, вы можете использовать разрешения на уровне столбцов, чтобы "заблокировать" пользователя от возможности выбирать определенные столбцы, как вы можете делать с представлением или сохраненной функцией.

http://andreas.scherbaum.la/blog/archives/577-PostgreSQL-8.4-Column-Permissions.html

1 голос
/ 10 апреля 2011

Вы можете скрыть столбцы от конечного пользователя, создав представление, содержащее только столбец, который пользователь может видеть, а затем отозвав привилегию SELECT из базовой таблицы.

Но нет способа предотвратить локальное сохранение (экспорт) данных пользователем, которые он / она получил, запустив оператор SELECT.

0 голосов
/ 11 июля 2018

Хотя все вышеперечисленные решения имеют свои достоинства, я бы подчеркнул преимущества создания представления .

Вы можете предоставить определенному пользователю или роли разрешения для представления, но не для таблицы, на которой оно основано, что позволяет точно определить, к каким столбцам каких таблиц они получают доступ и какие операции они могут выполнять.

Ваше представление может объединять и объединять данные до того, как их увидят пользователи. Вы также можете определить «вычисляемые столбцы», которые преобразуют данные известными (и, мы надеемся, необратимыми) способами, чтобы сохранить целостность конфиденциальных данных и при этом предоставить пользователям доступ к необходимой информации.

Предостережение : не знакомый с функциональностью ГИС PostgreSQL, это решение может быть исключено из-за того, что я не знаю.

Мне ничего не известно о том, что помешает пользователю использовать данные, полученные из реляционной базы данных, так как у него нет возможности ограничить дальнейшее использование доставляемых данных.

0 голосов
/ 11 апреля 2011

Для этого можно использовать функцию SECURITY DEFINER.

Отмените выбор привилегий из вашей таблицы для всех пользователей. Создайте функцию SECURITY DEFINER, которой владеет владелец таблицы и которая возвращает только данные session_user интереса.

Но не забудьте записать функции безопасного определения функций .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...