20.5. ÐÑедопÑеделÑннÑе Ñоли
Ð Postgres Pro имееÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ð¿ÑедопÑеделÑннÑÑ
Ñолей, коÑоÑÑе даÑÑ Ð´Ð¾ÑÑÑп к некоÑоÑÑм ÑаÑÑо воÑÑÑебованнÑм, но не обÑедоÑÑÑпнÑм ÑÑнкÑиÑм и даннÑм. ÐдминиÑÑÑаÑоÑÑ (вклÑÑÐ°Ñ Ñоли Ñ Ð¿Ñавами CREATEROLE) могÑÑ Ð½Ð°Ð·Ð½Ð°ÑаÑÑ (GRANT) ÑÑи Ñоли полÑзоваÑелÑм и/или ÑолÑм в Ñвоей ÑÑеде, Ñаким обÑазом оÑкÑÑÐ²Ð°Ñ ÑÑим полÑзоваÑелÑм доÑÑÑп к Ñказанной ÑÑнкÑионалÑноÑÑи и инÑоÑмаÑии.
ÐмеÑÑиеÑÑ Ð¿ÑедопÑеделÑннÑе Ñоли опиÑÐ°Ð½Ñ Ð² ТаблиÑа 20.1. ÐамеÑÑÑе, ÑÑо конкÑеÑнÑе ÑазÑеÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из ÑÐ°ÐºÐ¸Ñ Ñолей в бÑдÑÑем могÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ Ð¿Ð¾ меÑе Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной ÑÑнкÑионалÑноÑÑи. ÐдминиÑÑÑаÑоÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑледиÑÑ Ð·Ð° ÑÑими изменениÑми, пÑоÑмаÑÑÐ¸Ð²Ð°Ñ Ð·Ð°Ð¼ÐµÑÐ°Ð½Ð¸Ñ Ðº вÑпÑÑкам.
ТаблиÑа 20.1. ÐÑедопÑеделÑннÑе Ñоли
| Ð Ð¾Ð»Ñ | РазÑеÑаемÑй доÑÑÑп |
|---|---|
| pg_read_all_data | ЧиÑаÑÑ Ð²Ñе даннÑе (ÑаблиÑÑ, пÑедÑÑавлениÑ, поÑледоваÑелÑноÑÑи), как бÑдÑо ÑÐ¾Ð»Ñ Ð¸Ð¼ÐµÐµÑ Ð¿Ñава SELECT на ÑÑи обÑекÑÑ Ð¸ пÑава USAGE на вÑе ÑÑ
емÑ, но пÑи ÑÑом ÑвнÑм обÑазом Ñакие пÑава ей не назнаÑенÑ. ÐÑÑибÑÑ BYPASSRLS Ð´Ð»Ñ ÑÑой Ñоли не ÑÑÑановлен. ÐÑли иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð»Ð¸Ñика RLS, админиÑÑÑаÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð°ÑÑибÑÑ BYPASSRLS Ñленам ÑÑой Ñоли. |
| pg_write_all_data | ÐапиÑÑваÑÑ Ð²Ñе даннÑе (ÑаблиÑÑ, пÑедÑÑавлениÑ, поÑледоваÑелÑноÑÑи), как бÑдÑо ÑÐ¾Ð»Ñ Ð¸Ð¼ÐµÐµÑ Ð¿Ñава INSERT, UPDATE и DELETE на ÑÑи обÑекÑÑ Ð¸ пÑава USAGE на вÑе ÑÑ
емÑ, но пÑи ÑÑом ÑвнÑм обÑазом Ñакие пÑава ей не назнаÑенÑ. ÐÑÑибÑÑ BYPASSRLS Ð´Ð»Ñ ÑÑой Ñоли не ÑÑÑановлен. ÐÑли иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð»Ð¸Ñика RLS, админиÑÑÑаÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð°ÑÑибÑÑ BYPASSRLS Ñленам ÑÑой Ñоли. |
| pg_read_all_settings | ЧиÑаÑÑ Ð²Ñе конÑигÑÑаÑионнÑе пеÑеменнÑе, даже Ñе, ÑÑо обÑÑно Ð²Ð¸Ð´Ð½Ñ ÑолÑко ÑÑпеÑполÑзоваÑелÑм. |
| pg_read_all_stats | ЧиÑаÑÑ Ð²Ñе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ pg_stat_* и иÑполÑзоваÑÑ ÑазлиÑнÑе ÑаÑÑиÑениÑ, ÑвÑзаннÑе Ñо ÑÑаÑиÑÑикой, даже Ñе, ÑÑо обÑÑно Ð²Ð¸Ð´Ð½Ñ ÑолÑко ÑÑпеÑполÑзоваÑелÑм. |
| pg_stat_scan_tables | ÐÑполнÑÑÑ ÑÑнкÑии мониÑоÑинга, коÑоÑÑе могÑÑ ÑÑÑанавливаÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки ACCESS SHARE в ÑаблиÑаÑ
, возможно, на длиÑелÑное вÑемÑ. |
| pg_monitor | ЧиÑаÑÑ/вÑполнÑÑÑ ÑазлиÑнÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÑнкÑии Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга. ÐÑа ÑÐ¾Ð»Ñ Ð²ÐºÐ»ÑÑена в Ñоли pg_read_all_settings, pg_read_all_stats и pg_stat_scan_tables. |
| pg_database_owner | Ðикакого. ÐеÑвнÑм обÑазом вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . |
| pg_signal_backend | ÐеÑедаваÑÑ Ð´ÑÑгим обÑлÑживаÑÑим пÑоÑеÑÑам ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð´Ð»Ñ Ð¾ÑÐ¼ÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑа или завеÑÑÐµÐ½Ð¸Ñ ÑеанÑа. |
| pg_read_server_files | ЧиÑаÑÑ ÑÐ°Ð¹Ð»Ñ Ð² лÑбом меÑÑе Ñайловой ÑиÑÑемÑ, кÑда Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп СУÐРна ÑеÑвеÑе, вÑполнÑÑ COPY и дÑÑгие ÑÑнкÑии ÑабоÑÑ Ñ Ñайлами. |
| pg_write_server_files | ÐапиÑÑваÑÑ ÑÐ°Ð¹Ð»Ñ Ð² лÑбом меÑÑе Ñайловой ÑиÑÑемÑ, кÑда Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп СУÐРна ÑеÑвеÑе, вÑполнÑÑ COPY и дÑÑгие ÑÑнкÑии ÑабоÑÑ Ñ Ñайлами. |
| pg_execute_server_program | ÐÑполнÑÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð½Ð° ÑеÑвеÑе (Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑелÑ, запÑÑкаÑÑего СУÐÐ) Ñак же, как ÑÑо Ð´ÐµÐ»Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° COPY и дÑÑгие ÑÑнкÑии, вÑполнÑÑÑие пÑогÑÐ°Ð¼Ð¼Ñ Ð½Ð° ÑÑоÑоне ÑеÑвеÑа. |
| pg_checkpoint | ÐÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CHECKPOINT. |
Роли pg_monitor, pg_read_all_settings, pg_read_all_stats и pg_stat_scan_tables ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð¼Ð¾Ð³Ð»Ð¸ легко наÑÑÑоиÑÑ ÑÐ¾Ð»Ñ Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга ÑеÑвеÑа ÐÐ. ÐÑи Ñоли наделÑÑÑ ÑвоиÑ
Ñленов набоÑом обÑиÑ
пÑав, позволÑÑÑиÑ
ÑиÑаÑÑ ÑазлиÑнÑе полезнÑе паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии, ÑÑаÑиÑÑÐ¸ÐºÑ Ð¸ дÑÑгÑÑ ÑиÑÑемнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, ÑÑо обÑÑно доÑÑÑпно ÑолÑко ÑÑпеÑполÑзоваÑелÑм.
ÐдинÑÑвеннÑм Ñленом Ñоли pg_database_owner неÑвнÑм обÑазом ÑвлÑеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ðак и лÑÐ±Ð°Ñ Ð´ÑÑÐ³Ð°Ñ ÑолÑ, она Ð¼Ð¾Ð¶ÐµÑ Ð²Ð»Ð°Ð´ÐµÑÑ Ð¾Ð±ÑекÑами или полÑÑаÑÑ Ð¿Ñава доÑÑÑпа. СледоваÑелÑно, пÑава, даннÑе Ñоли pg_database_owner в базе-Ñаблоне, пÑиобÑеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ базÑ, Ñозданной из данного Ñаблона. Ð Ð¾Ð»Ñ pg_database_owner не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñленом какой-либо Ñоли, и в Ð½ÐµÑ Ð½Ðµ могÑÑ Ð±ÑÑÑ Ñвно вклÑÑÐµÐ½Ñ ÑленÑ. ÐзнаÑалÑно ÑÑа ÑÐ¾Ð»Ñ Ð²Ð»Ð°Ð´ÐµÐµÑ ÑÑ
емой public, Ñо еÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑпÑавлÑÐµÑ Ð¸ÑполÑзованием данной ÑÑ
ÐµÐ¼Ñ Ð² Ñвоей базе.
Ð Ð¾Ð»Ñ pg_signal_backend пÑедназнаÑена Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð¼Ð¾Ð³Ð»Ð¸ даваÑÑ Ð´Ð¾Ð²ÐµÑеннÑм, но не имеÑÑим пÑав ÑÑпеÑполÑзоваÑÐµÐ»Ñ ÑолÑм пÑаво поÑÑлаÑÑ ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð´ÑÑгим обÑлÑживаÑÑим пÑоÑеÑÑам. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑа ÑÐ¾Ð»Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿ÐµÑедаваÑÑ ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð´Ð»Ñ Ð¾ÑÐ¼ÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑа, вÑполнÑÑÑегоÑÑ Ð² дÑÑгом пÑоÑеÑÑе, или Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÑеанÑа. Ðднако полÑзоваÑелÑ, вклÑÑÑннÑй в ÑÑÑ ÑолÑ, не Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑпÑавлÑÑÑ ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð¿ÑоÑеÑÑам, пÑинадлежаÑим ÑÑпеÑполÑзоваÑелÑм. См. ÐодÑаздел 9.27.2.
Роли pg_read_server_files, pg_write_server_files и pg_execute_server_program пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð¼Ð¾Ð³Ð»Ð¸ вÑделиÑÑ Ð´Ð¾Ð²ÐµÑеннÑе, но не имеÑÑие пÑава ÑÑпеÑполÑзоваÑелей Ñоли Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к Ñайлам и запÑÑка пÑогÑамм на ÑеÑвеÑе ÐÐ Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑелÑ, запÑÑкаÑÑего СУÐÐ. Так как ÑÑи Ñоли могÑÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº лÑбÑм Ñайлам в Ñайловой ÑиÑÑеме ÑеÑвеÑа, они обÑ
одÑÑ Ð²Ñе пÑовеÑки ÑазÑеÑений на ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, а знаÑиÑ, воÑполÑзовавÑиÑÑ Ð¸Ð¼Ð¸, можно полÑÑиÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ. ÐоÑÑÐ¾Ð¼Ñ Ð½Ð°Ð·Ð½Ð°ÑаÑÑ Ð¸Ñ
полÑзоваÑелÑм ÑледÑÐµÑ Ñо вÑей оÑÑоÑожноÑÑÑÑ.
УпÑавлÑÑÑ ÑленÑÑвом в ÑÑÐ¸Ñ ÑолÑÑ ÑледÑÐµÑ Ð¾ÑмоÑÑиÑелÑно, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ иÑполÑзовалиÑÑ ÑолÑко по Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи и ÑолÑко Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸ÐµÐ¼, ÑÑо они оÑкÑÑваÑÑ Ð´Ð¾ÑÑÑп к закÑÑÑой инÑоÑмаÑии.
ÐдминиÑÑÑаÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð´Ð°Ð²Ð°ÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑм доÑÑÑп к ÑÑим ÑолÑм, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT. ÐапÑимеÑ:
GRANT pg_signal_backend TO admin_user;