29.9. ÐезопаÑноÑÑÑ
ÐолÑзоваÑелÑ, имеÑÑий пÑаво Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑ
ÐµÐ¼Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð½Ð° ÑÑоÑоне подпиÑÑика, Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð±Ð¸ÑÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑоизволÑного кода Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ñоли владелÑÑа лÑбой подпиÑки, в коÑоÑой менÑÑÑÑÑ ÑÑи ÑаблиÑÑ. ÐгÑаниÑÑÑе кÑÑг владелÑÑев и Ñолей, имеÑÑиÑ
пÑаво TRIGGER Ð´Ð»Ñ ÑакиÑ
ÑаблиÑ, довеÑеннÑми ÑолÑми. Ðолее Ñого, в базе, где недовеÑеннÑе полÑзоваÑели могÑÑ ÑоздаваÑÑ ÑаблиÑÑ, вклÑÑайÑе в пÑбликаÑÐ¸Ñ ÑолÑко ÑаблиÑÑ Ð¿Ð¾ ÑпиÑкÑ. ÐÑÑгими Ñловами, ÑоздавайÑе подпиÑÐºÑ FOR ALL TABLES или FOR TABLES IN SCHEMA, ÑолÑко когда ÑÑпеÑполÑзоваÑели довеÑÑÑÑ Ð²Ñем полÑзоваÑелÑм, имеÑÑим пÑаво ÑоздаваÑÑ Ð½Ðµ вÑеменнÑе ÑаблиÑÑ Ð½Ð° ÑÑоÑоне пÑбликаÑии или подпиÑки.
РолÑ, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ ÑепликаÑии, должна имеÑÑ Ð°ÑÑибÑÑ REPLICATION (или бÑÑÑ ÑÑпеÑполÑзоваÑелем). ÐÑли Ñ Ñоли оÑÑÑÑÑÑвÑÑÑ ÑвойÑÑва SUPERUSER и BYPASSRLS, пÑи ÑепликаÑии могÑÑ Ð²ÑполнÑÑÑÑÑ Ð¿Ð¾Ð»Ð¸Ñики заÑиÑÑ ÑÑÑок, опÑеделÑннÑе на ÑÑоÑоне пÑбликаÑии. ÐÑли ÑÑа ÑÐ¾Ð»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð²ÐµÑÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑам вÑеÑ
ÑаблиÑ, добавÑÑе в ÑÑÑÐ¾ÐºÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ options=-crow_security=off; еÑли Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑаблиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð·Ð°ÑиÑÑ ÑÑÑок позже, пÑи Ñаком знаÑении паÑамеÑÑа ÑепликаÑÐ¸Ñ Ð¾ÑÑановиÑÑÑ, но полиÑика вÑполнÑÑÑÑÑ Ð½Ðµ бÑдеÑ. ÐоÑÑÑп Ð´Ð»Ñ ÑÑой Ñоли должен бÑÑÑ Ð½Ð°ÑÑÑоен в pg_hba.conf, и ÑÑа ÑÐ¾Ð»Ñ Ñакже должна имеÑÑ Ð°ÑÑибÑÑ LOGIN.
ЧÑÐ¾Ð±Ñ Ð¸Ð¼ÐµÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑкопиÑоваÑÑ Ð¸ÑÑ
однÑе даннÑе ÑаблиÑÑ, ÑолÑ, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑепликаÑии, должна имеÑÑ Ð¿Ñаво SELECT в пÑбликÑемой ÑаблиÑе (или бÑÑÑ ÑÑпеÑполÑзоваÑелем).
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð¿ÑбликаÑиÑ, полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ имеÑÑ Ð¿Ñаво CREATE в базе даннÑÑ
.
ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÑаблиÑÑ Ð² пÑбликаÑиÑ, полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ имеÑÑ Ð¿Ñава владелÑÑа Ð´Ð»Ñ ÑÑÐ¸Ñ ÑаблиÑ. ÐобавлÑÑÑ Ð² пÑбликаÑÐ¸Ñ Ð²Ñе ÑаблиÑÑ ÑÑ ÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ. Также ÑолÑко ÑÑпеÑполÑзоваÑелÑм ÑазÑеÑено ÑоздаваÑÑ Ð¿ÑбликаÑии, пÑбликÑÑÑие вÑе ÑаблиÑÑ Ð¸Ð»Ð¸ вÑе ÑаблиÑÑ Ð² ÑÑ ÐµÐ¼Ðµ авÑомаÑиÑеÑки.
СоздаваÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñки ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.
ÐÑоÑеÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ подпиÑки бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð² локалÑной базе Ñ Ð¿Ñавами владелÑÑа подпиÑки.
Ðа пÑбликÑÑÑем ÑеÑвеÑе пÑава пÑовеÑÑÑÑÑÑ ÑолÑко один Ñаз пÑи ÑÑÑановлении подклÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑепликаÑии и не пеÑепÑовеÑÑÑÑÑÑ Ð¿Ñи ÑÑении каждой запиÑи изменениÑ.
Ðа ÑÑоÑоне подпиÑки пÑава владелÑÑа подпиÑки пеÑепÑовеÑÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑанзакÑии, когда она пÑименÑеÑÑÑ. ÐÑли ÑабоÑий пÑоÑеÑÑ Ð¾ÑÑÑеÑÑвлÑÐµÑ Ð¿Ñименение ÑÑанзакÑии, когда в паÑаллелÑной ÑÑанзакÑии менÑеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñки, пÑименение ÑекÑÑей ÑÑанзакÑии пÑодолжаеÑÑÑ Ñ Ð¿Ñавами ÑÑаÑого владелÑÑа.