diff --git a/docs/tutorial/access_control.md b/docs/tutorial/access_control.md index 002c79229da00b2083c2a73baf60b1349fb071b7..f413cb42f04e89a28ad1f8e61bf92edf6a6edbdb 100644 --- a/docs/tutorial/access_control.md +++ b/docs/tutorial/access_control.md @@ -2,7 +2,7 @@ Ð’ данном разделе опиÑана Ñ€Ð¾Ð»ÐµÐ²Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом в Picodata и приведены примеры необходимых Ð´Ð»Ñ ÐµÐµ наÑтройки Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -[DCL](../reference/sql/dcl.md) команд Ñзыка SQL. +[DCL](../reference/sql/dcl.md)-команд Ñзыка SQL. ## Ð Ð¾Ð»ÐµÐ²Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ {: #role_model } @@ -52,7 +52,7 @@ Picodata ÑвлÑетÑÑ Ñ€Ð°Ñпределенной СУБД, и управл - `procedure` – [процедура](#proc_access) <!-- -ДиÑкреционный метод ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом Ñубъектов доÑтупа объектам +ДиÑкреционный метод ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом Ñубъектов доÑтупа к объектам доÑтупа СУБД (БД, таблица, запиÑÑŒ или Ñтолбец, поле, предÑтавление, процедура (программный код) или иные объекты доÑтупа) должен оÑущеÑтвлÑтьÑÑ Ð½Ð° оÑнове наÑтраиваемых ÑпиÑков ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом @@ -61,7 +61,7 @@ Picodata ÑвлÑетÑÑ Ñ€Ð°Ñпределенной СУБД, и управл ДоÑтуп к объектам предоÑтавлÑетÑÑ Ð½Ð° оÑнове наÑтраиваемого ÑпиÑка ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом (access control list, ACL), который определÑет, -какими привилегиÑми обладает каждый Ñубъект (пользователь или роль). +какими привилегиÑми обладает пользователь или роль. ### Привилегии {: #privileges } @@ -115,10 +115,8 @@ Picodata предоÑтавлÑет неÑколько вÑтроенных уч - Ñоздавать, подключать БД. --> -ÐдминиÑтратором СУБД ÑвлÑетÑÑ Ð²Ñтроенный пользователь `admin`. - -ÐдминиÑтратор СУБД ÑвлÑетÑÑ _Ñуперпользователем_ и обладает Ñледующими -привилегиÑми: +ÐдминиÑтратором СУБД ÑвлÑетÑÑ Ð²Ñтроенный пользователь `admin`. Он ÑвлÑетÑÑ +_Ñуперпользователем_ и обладает Ñледующими привилегиÑми: - Ñоздавать учетные запиÑи пользователей СУБД - модифицировать, блокировать и удалÑть учетные запиÑи пользователей СУБД @@ -126,7 +124,8 @@ Picodata предоÑтавлÑет неÑколько вÑтроенных уч - управлÑть конфигурацией СУБД - Ñоздавать, подключать БД -Данный набор привилегий Ñквивалентен SQL-командам: +Ðаделить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¡Ð£Ð‘Ð” правами ÐдминиÑтратора СУБД можно Ñледующим +набором SQL-команд: ```sql GRANT CREATE TABLE TO "admin" @@ -156,6 +155,16 @@ GRANT DROP ROLE TO "admin" - Ñоздавать, модифицировать и удалÑть процедуры (программный код), хранимые в БД. --> +ÐдминиÑтратор БД обладает Ñледующими правами: + +- Ñоздавать учетные запиÑи пользователей БД +- модифицировать, блокировать и удалÑть учетные запиÑи пользователей БД +- управлÑть конфигурацией БД <!-- Ñхемой данных --> +- назначать права доÑтупа пользователÑм БД к объектам доÑтупа БД +- Ñоздавать резервные копии БД и воÑÑтанавливать БД из резервной копии +- Ñоздавать, модифицировать и удалÑть хранимые процедуры + + Ðаделить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¡Ð£Ð‘Ð” правами ÐдминиÑтратора БД можно Ñледующим набором SQL-команд: @@ -166,34 +175,38 @@ GRANT CREATE ROLE TO <grantee> GRANT CREATE PROCEDURE TO <grantee> ``` -Ðто обеÑпечивает наличие у админиÑтратора БД Ñледующих прав: +Ðто обеÑпечит админиÑтратору БД права на Ñоздание, ÑоответÑтвенно, таблиц, +пользователей, ролей и процедур. -- Ñоздавать учетные запиÑи пользователей БД -- модифицировать, блокировать и удалÑть учетные запиÑи пользователей БД -- управлÑть конфигурацией БД <!-- Ñхемой данных --> -- назначать права доÑтупа пользователÑм БД к объектам доÑтупа БД -- Ñоздавать резервные копии БД и воÑÑтанавливать БД из резервной копии -- Ñоздавать, модифицировать и удалÑть хранимые процедуры +При Ñоздании объекта пользователь ÑтановитÑÑ ÐµÐ³Ð¾ владельцем и автоматичеÑки +получает на него дополнительные права, различающиеÑÑ Ñƒ разных типов объектов. +Ðто Ñквивалентно Ñвной выдаче Ñледующих прав: -При Ñоздании объекта пользователь ÑтановитÑÑ ÐµÐ³Ð¾ владельцем и -автоматичеÑки получает на него Ñледующие права (в завиÑимоÑти от типа -объекта): +СоздателÑм таблиц: ```sql --- CREATE TABLE <table name> ... GRANT ALTER ON TABLE <table name> TO <owner> GRANT DROP ON TABLE <table name> TO <owner> GRANT READ ON TABLE <table name> TO <owner> GRANT WRITE ON TABLE <table name> TO <owner> +``` --- CREATE USER <user name> +СоздателÑм пользователей: + +```sql GRANT ALTER ON USER <user name> TO <owner> GRANT DROP ON USER <user name> TO <owner> +``` + +СоздателÑм ролей: --- CREATE ROLE <role name> +```sql GRANT DROP ON ROLE <role name> TO <owner> +``` --- CREATE PROCEDURE <procedure name> +СоздателÑм процедур: + +```sql GRANT ALTER ON PROCEDURE <procedure name> TO <owner> GRANT EXECUTE ON PROCEDURE <procedure name> TO <owner> GRANT DROP ON PROCEDURE <procedure name> TO <owner> @@ -211,11 +224,7 @@ GRANT DROP ON PROCEDURE <procedure name> TO <owner> Picodata позволÑет наделить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð” Ñледующими правами: -- Ñоздавать и манипулировать таблицами БД -- Ñоздавать и манипулировать хранимыми процедурами -- выполнÑть хранимые процедуры - -Ð”Ð»Ñ Ñтого иÑпользуйте Ñледующие SQL-команды: +- Ñоздавать и манипулировать таблицами БД: ```sql GRANT CREATE TABLE TO <grantee> @@ -223,11 +232,18 @@ GRANT ALTER ON TABLE <table name> TO <grantee> GRANT DROP ON TABLE <table name> TO <grantee> GRANT READ ON TABLE <table name> TO <grantee> GRANT WRITE ON TABLE <table name> TO <grantee> +``` +- Ñоздавать и манипулировать хранимыми процедурами: +```sql GRANT CREATE PROCEDURE TO <grantee> GRANT ALTER ON PROCEDURE <procedure name> TO <grantee> GRANT DROP ON PROCEDURE <procedure name> TO <grantee> +``` +- выполнÑть хранимые процедуры: + +```sql GRANT EXECUTE ON PROCEDURE <procedure name> TO <grantee> ``` @@ -235,14 +251,14 @@ GRANT EXECUTE ON PROCEDURE <procedure name> TO <grantee> Роль предÑтавлÑет Ñобой именованную группу привилегий, что позволÑет Ñтруктурировать управление доÑтупом. Чтобы выдать или отозвать -привилегию у роли иÑпользуйте команды [GRANT](../reference/sql/grant.md) +привилегию у роли, иÑпользуйте команды [GRANT](../reference/sql/grant.md) и [REVOKE](../reference/sql/revoke.md). ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ€Ð¾Ð»ÐµÐ¹ `public` и `super` ÑвлÑÑŽÑ‚ÑÑ Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸. Роль `public` автоматичеÑки назначаетÑÑ Ð²Ñем Ñоздаваемым пользователÑм. Ðаделение роли `public` привилегией на какой-либо объект -делает Ñтот объект общедоÑтупным. +делает его общедоÑтупным. Роль `super` ÑвлÑетÑÑ ÑиÑтемной и иÑпользуетÑÑ Ð¸Ñключительно Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ñ… целей. @@ -292,7 +308,7 @@ ALTER USER alice WITH LOGIN ``` Ð”Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ требуетÑÑ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ `ALTER USER` на -конкретную учетную запиÑÑŒ или на вÑе Ñразу: +конкретную учетную запиÑÑŒ или на вÑе учетные запиÑи Ñразу: ```sql GRANT ALTER ON USER <user name> TO <grantee> @@ -314,7 +330,7 @@ DROP USER alice ``` Ð”Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ требуетÑÑ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ `DROP USER` на -конкретную учетную запиÑÑŒ или на вÑе Ñразу: +конкретную учетную запиÑÑŒ или на вÑе учетные запиÑи Ñразу: ```sql GRANT DROP ON USER <user name> TO <grantee>