ALTER DEFAULT PRIVILEGES
ALTER DEFAULT PRIVILEGES â опÑеделиÑÑ Ð¿Ñава доÑÑÑпа по ÑмолÑаниÑ
СинÑакÑиÑ
ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } ÑелеваÑ_ÑÐ¾Ð»Ñ [, ...] ]
[ IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] ]
пÑедложение_GRANT_или_REVOKE
Ðде пÑедложение_GRANT_или_REVOKE Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON TABLES
TO { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { USAGE | SELECT | UPDATE }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
TO { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTIONS
TO { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON TYPES
TO { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...] [ WITH GRANT OPTION ]
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON TABLES
FROM { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | SELECT | UPDATE }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
FROM { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTIONS
FROM { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] }
ON TYPES
FROM { [ GROUP ] имÑ_Ñоли | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]ÐпиÑание
ALTER DEFAULT PRIVILEGES позволÑÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ Ð¿Ñава, пÑименÑемÑе к обÑекÑам, коÑоÑÑе бÑдÑÑ ÑоздаваÑÑÑÑ Ð² бÑдÑÑем. (ÐÑа команда не заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ Ð¿Ñава, назнаÑеннÑе Ñже ÑÑÑеÑÑвÑÑÑим обÑекÑам.) РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаваÑÑ Ð¿Ñава ÑолÑко Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ (вклÑÑÐ°Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÑоÑонние ÑаблиÑÑ), поÑледоваÑелÑноÑÑей, ÑÑнкÑий и Ñипов (вклÑÑÐ°Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ).
ÐÑ Ð¼Ð¾Ð¶ÐµÑе измениÑÑ Ð¿Ñава по ÑмолÑÐ°Ð½Ð¸Ñ ÑолÑко Ð´Ð»Ñ Ð¾Ð±ÑекÑов, коÑоÑÑе бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð²Ð°Ð¼Ð¸ или ÑолÑми, Ñленами коÑоÑÑÑ Ð²Ñ ÑвлÑеÑеÑÑ. ÐÑава можно задаÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»Ñно (Ñ. е. Ð´Ð»Ñ Ð²ÑÐµÑ Ð¾Ð±ÑекÑов, ÑоздаваемÑÑ Ð² ÑекÑÑей базе даннÑÑ ) или Ð´Ð»Ñ Ð¾Ð¿ÑеделÑннÑÑ ÑÑ ÐµÐ¼.
Ðак обÑÑÑнÑеÑÑÑ Ð² GRANT, пÑава по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑекÑов лÑбого Ñипа обÑÑно даÑÑ Ð²Ñе назнаÑаемÑе ÑазÑеÑÐµÐ½Ð¸Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑÑ Ð¾Ð±ÑекÑа, а Ñакже могÑÑ Ð´Ð°Ð²Ð°ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑазÑеÑÐµÐ½Ð¸Ñ Ñоли PUBLIC. Ðднако ÑÑо поведение можно поменÑÑÑ, изменив пÑава по ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER DEFAULT PRIVILEGES.
ÐаданнÑе на ÑÑовне ÑÑ
ÐµÐ¼Ñ Ð¿Ñава по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ðº Ñем, ÑÑо опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð³Ð»Ð¾Ð±Ð°Ð»Ñно Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного Ñипа обÑекÑа. ÐÑо ознаÑаеÑ, ÑÑо Ð²Ñ Ð½Ðµ можеÑе оÑозваÑÑ Ð¿Ñава ÑÑÐ¾Ð²Ð½Ñ ÑÑ
емÑ, еÑли они назнаÑÐµÐ½Ñ Ð³Ð»Ð¾Ð±Ð°Ð»Ñно (либо по ÑмолÑаниÑ, либо пÑедÑдÑÑей командой ALTER DEFAULT PRIVILEGES без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ
емÑ). Ðоманда REVOKE Ð´Ð»Ñ ÑÑ
ÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð° ÑолÑко Ð´Ð»Ñ Ð¾ÑÐ¼ÐµÐ½Ñ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¿ÑедÑдÑÑей ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT Ð´Ð»Ñ ÑÑой же ÑÑ
емÑ.
ÐаÑамеÑÑÑ
ÑелеваÑ_ÑолÑÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑей Ñоли, Ñленом коÑоÑой ÑвлÑеÑÑÑ ÑекÑÑаÑ. ÐÑли
FOR ROLEопÑÑено, подÑазÑмеваеÑÑÑ ÑекÑÑÐ°Ñ ÑолÑ.имÑ_ÑÑ ÐµÐ¼ÑÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑей ÑÑ ÐµÐ¼Ñ. ÐÑли Ñказано, пÑава по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼ÐµÐ½ÑÑÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑекÑов, коÑоÑÑе бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð² ÑÑой ÑÑ ÐµÐ¼Ðµ. ÐÑли
IN SCHEMAопÑÑено, менÑÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑе пÑава по ÑмолÑаниÑ.имÑ_ÑолиÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑей Ñоли, Ð´Ð»Ñ ÐºÐ¾ÑоÑой даÑÑÑÑ Ð¸Ð»Ð¸ оÑзÑваÑÑÑÑ Ð¿Ñава. ÐÑÐ¾Ñ Ð¸ вÑе дÑÑгие паÑамеÑÑÑ Ð²
пÑедложении_grant_или_revokeдейÑÑвÑÑÑ ÐºÐ°Ðº опиÑано в GRANT или REVOKE, за иÑклÑÑением Ñого, ÑÑо они ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð½Ðµ на один конкÑеÑнÑй обÑекÑ, а на ÑелÑй клаÑÑ Ð¾Ð±ÑекÑов.
ÐамеÑаниÑ
ЧÑÐ¾Ð±Ñ ÑзнаÑÑ ÑекÑÑие назнаÑеннÑе пÑава по ÑмолÑаниÑ, воÑполÑзÑйÑеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ \ddp в psql. ÐнÑеÑпÑеÑаÑÐ¸Ñ Ð·Ð½Ð°Ñений пÑав пÑиведена в опиÑании ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ \dp в GRANT.
ÐÑли Ð²Ñ Ð¶ÐµÐ»Ð°ÐµÑе ÑдалиÑÑ ÑолÑ, пÑава по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾ÑоÑой бÑли измененÑ, необÑ
одимо Ñвно оÑмениÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñав по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð»Ð¸ воÑполÑзоваÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ DROP OWNED BY Ð´Ð»Ñ Ð¸Ð·Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ Ð½Ð°Ð·Ð½Ð°ÑеннÑÑ
Ð´Ð»Ñ ÑÑой Ñоли пÑав по ÑмолÑаниÑ.
ÐÑимеÑÑ
Ðаделение вÑеÑ
пÑавом SELECT Ð´Ð»Ñ Ð²ÑеÑ
ÑÐ°Ð±Ð»Ð¸Ñ (и пÑедÑÑавлений), коÑоÑÑе бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð² далÑнейÑем в ÑÑ
еме myschema, и наделение Ñоли webuser пÑавом INSERT Ð´Ð»Ñ ÑÑиÑ
же ÑаблиÑ:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;
ÐÑмена пÑедÑдÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ñ Ñем, ÑÑÐ¾Ð±Ñ Ð´Ð»Ñ ÑаблиÑ, ÑоздаваемÑÑ Ð² бÑдÑÑем, бÑли опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑолÑко обÑÑнÑе пÑава, без дополниÑелÑнÑÑ :
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
ÐиÑение Ñоли public пÑава на вÑполнение (EXECUTE), коÑоÑое обÑÑно даÑÑÑÑ Ð´Ð»Ñ ÑÑнкÑий (Ð´Ð»Ñ Ð²ÑеÑ
ÑÑнкÑий, коÑоÑÑе бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ ÑолÑÑ admin):
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
Ðднако замеÑÑÑе, ÑÑо ÑÑого же ÑÑÑекÑа нелÑÐ·Ñ Ð´Ð¾Ð±Ð¸ÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, огÑаниÑенной одной ÑÑ
емой. ÐÑа команда бÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ, ÑолÑко еÑли ей пÑедÑеÑÑвовала ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° GRANT:
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
ÐÑо обÑÑÑнÑеÑÑÑ Ñем, ÑÑо на ÑÑовне ÑÑ ÐµÐ¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко назнаÑиÑÑ Ð¿Ñава по ÑмолÑаниÑ, коÑоÑÑе добавÑÑÑÑ Ðº назнаÑеннÑм глобалÑно, но нелÑÐ·Ñ Ð¾ÑозваÑÑ Ð¿Ð¾Ñледние.
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ ALTER DEFAULT PRIVILEGES оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.