LINUX.ORG.RU

PostgreSQL наружу в интернет — безопасно?

 


0

1

Я краем уха слышал, что существуют люди, которые используют торчащий в интернет PostgreSQL в качестве API для серверных частей своих приложений. Мол, зачем писать какой-то лишний слой ошибок, занимающийся конвертацией XML/JSON/чего-то ещё в SQL, если можно сразу из клиента работать с базой.

Хочу сделать так же. Подскажите, есть ли какие-то подводные камни, о которых нужно знать?

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

Чего я боюсь не учесть, так это банальных вопросов безопасности при авторизации.

Точно ли логин сразу в PostgreSQL настолько же защищён, как более привычный (для API) HTTPS?

Есть ли смысл придумывать схему с подключением к «базе localhost на системе по SSH», или всё-таки напрямую это нормально?

Всем заранее спасибо за любую инфу по теме.



Последнее исправление: greatperson (всего исправлений: 1)

может быть можно как-то проксировать к постгресу через https с nginx. Так же, может быть можно какой-то маленький сервер написать, висящий на https, чтобы он безопасно все запросы от кого надо исполнял. к nginx если что есть модуль, который может говорить с postgresql

zarkone ★★
()
Ответ на: комментарий от zarkone

Ну, «исполнял все запросы» это да, но я хотел бы уж всеми благами библиотек пользоваться, а не только готовые строки на свой страх и риск гонять. Это-то я и сам по SSH могу.

greatperson
() автор топика
Ответ на: комментарий от Evgueni

Это мне известно, да только не о том это. Там о том, чтобы разово дать кому-то доступ к себе (или кому-то третьему). А если я хочу делать всё простым клиент-серверным путём, а не дожидаться такого приглашения от сервера? А если клиенту неохота занимат какие-то порты у себя только ради того, чтобы общаться с портами сервера?

Короче, это просто решение не той проблемы, по-моему.

greatperson
() автор топика

В смысле, в паблик? Чтение/запись или только чтение? Вообще, пользую прямое подключение, но только для внутренних целей. Во-первых, на уровне iptables ограничего по разрешенным ip, во-вторых, в постгресе hostssl вроде нормально работает.

targitaj ★★★★★
()
Ответ на: комментарий от greatperson

а, я к тому же неправильно понял, думал, из браузера (веб-приложений) тоже доступ нужен почему-то

zarkone ★★
()

Вот чё отыскал, оказывается, SSL у PostgreSQL у самого есть, что, вероятно, означает, что если её включить (и иметь сертификат на домен), то безопасности будет не меньше, чем в случае с HTTPS. Так ведь?

greatperson
() автор топика
Последнее исправление: greatperson (всего исправлений: 1)

а приватность данных?

к примеру пользователь получает данные
select subject, body from emails where account_id = 5

а он возьмет и заменит
select subject, body from emails where account_id = 4
и прочитает чужую почту

kiotoze ★★★★
()
Ответ на: комментарий от targitaj

В смысле, в паблик? Чтение/запись или только чтение?

И то и другое. Подключаться будет свой собственный клиент, но обитать этот клиент будет в сравнительно дикой природе (на компьютерах партнёров).

greatperson
() автор топика
Ответ на: комментарий от kiotoze

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

greatperson
() автор топика
Ответ на: комментарий от targitaj

Счётное количество партнёров компании, людей-неайтишников, на стабильность IP которых полагаться нельзя. Проще будет назвать их пользователями.

greatperson
() автор топика
Ответ на: комментарий от x3al

А вот просвети меня, человека тёмного, что такого может пользователь натворить прямыми запросами, чего не смог бы натворить через http-прослойку?

greatperson
() автор топика
Ответ на: комментарий от greatperson

На уровне своей http-прослойки можно его ограничить, а вот с прямым подключением, если и можно, то не так просто

disarmer ★★★
()
Ответ на: комментарий от greatperson

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

x3al ★★★★★
()
Ответ на: комментарий от x3al

банального DoS хитрыми запросами?

Чтобы делать хитрые запросы, нужно же сначала аутентифицироваться?

Теоретически, кто-то может заказать (d)dos для узла ТС, но тогда и проксирование через http не особо поможет. А про ботов, которые ищут открытые установки postgresql, подбирают пароли и вредят пока еще не слышно.

anonymous
()

PostgreSQL наружу в интернет — безопасно?

если будешь использовать SSL, авторизацию с проверкой подписи и отзывом скомпроментированных сертификатов то ок. Сам так как то делал.

exception13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.