2013-03-15 3 views
4

Могу ли я подключиться к базе данных Heroku Postgres через веб-приложение без риска сброса таблицы?Запуск Heroku Postgres с наименьшими привилегиями

Я создаю заявку Heroku для третьей стороны, которая использует Heroku Postgres для бэкэнда. Третья сторона очень чувствительна к безопасности, поэтому я рассматриваю применение «Layered security» во всем приложении. Так, например, проверка на атаки SQL-инъекций на веб-уровне. Применяя подход «Layered security», я должен также защитить базу данных в случае пропуски потенциальной атаки SQL-инъекции, которая может привести к потере таблицы базы данных.

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

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

Я работаю над дополнением к крану Heroku Postgres.

Неужели кто-то сталкивается с этим или имеет какие-либо творческие работы вокруг этого сценария?

+0

Можно утверждать, что если «третья сторона очень чувствительна к безопасности», вы не должны использовать провайдера облачных вычислений вообще. Сколько людей в Heroku или их восходящем провайдере AWS могут получить доступ к данным? – rjmunro

ответ

4

С помощью Heroku Postgres у вас есть только одна учетная запись для подключения. Один из вариантов, который существует для этого типа функциональности, заключается в создании последователя на Heroku Postgres. Последователь асинхронно обновляется (как правило, только второй или около того) и читается только. Это позволит вам предоставить доступ к подписчику тем, кто в нем нуждается, не предоставляя им подробную информацию для лидера db.

+0

Благодаря @CraigKerstiens предложение базы данных следящего устройства хорошо работает в сценариях, где требование о минимальных привилегиях доступно только для чтения. К сожалению, в моем сценарии требование о минимальных привилегиях - это то, где пользователю нужен доступ на чтение и запись в базу данных (и ничего более) –

+0

Это также было бы полезно для мониторинга решений (в этом случае для пользователей только для чтения). Этот пользователь также должен использоваться pg-extras, чтобы избежать сценариев бедствий (слишком параноидальных?). –

+2

Следует отметить, что эти имена пользователей и пароли такие же, как для основной БД! Учетная запись существует из-за репликации, поэтому нет способа изменить ее учетные данные. – reconbot