Множество привилегий и множество получателей привилегий
Множество привилегий и множество получателей привилегий
Есть возможность предоставлять несколько привилегий в одном операторе и предоставлять одну или более привилегий множеству пользователей или объектов.
Множество привилегий
Для предоставления получателю нескольких привилегий к таблице перечислите предоставляемые привилегии в списке, отделяя друг от друга запятыми. Следующий оператор назначает полномочия INSERT и UPDATE К таблице DEPARTMENT пользователю
CHALKY:
GRANT INSERT, UPDATE ON DEPARTMENT TO CHALKY;
Список привилегий может быть любой комбинацией в любом порядке привилегий
SELECT, INSERT, UPDATE, DELETE и REFERENCES. Привилегия EXECUTE должна назначаться в отдельном операторе.
Привилегия REFERENCES не может быть назначена просмотру.
Привилегия ALL
Привилегия ALL объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES В одном пакете. Например, следующий оператор предоставляет CHALKY полный пакет полномочий к таблице DEPARTMENT:
GRANT ALL ON DEPARTMENT TO CHALKY;
Вы также можете назначать пакет ALL триггерам и процедурам. В следующем операторе процедура COUNT_CHICKENS получает полные права к таблице PROJ_DEPT_BUDGET:
GRANT ALL ON PROJ_DEPT_BUDGET TO PROCEDURE COUNT_CHICKENS;
Привилегии для множества пользователей
Несколько видов синтаксиса позволяют вам предоставлять привилегии множеству пользователей в одном операторе. Вы также можете назначать привилегии:
* списку именованных пользователей или процедур;
* группе UNIX;
* всем пользователям (PUBLIC);
* роли (затем назначая эту роль списку пользователей, PUBLIC или группе UNIX).
Список именованных пользователей
Для назначения одних и тех же привилегий доступа пользователям в одном операторе запищите список пользователей, разделенных запятыми, на месте одного имени пользователя.
Следующий оператор предоставляет полномочия INSERT и UPDATE К таблице DEPARTMENT пользователям MICKEY, DONALD и HPOTTER:
GRANT INSERT, UPDATE ON DEPARTMENTS TO MICKEY, DONALD, HPOTTER;
Список процедур
Для назначения привилегий нескольким процедурам в одном операторе запишите список процедур, разделенных запятыми. Здесь две процедуры получают привилегии в одном операторе:
GRANT INSERT, UPDATE ON PROJ_DEPT_BUDGET
TO PROCEDURE CALCULATE_ODDS, COUNT_BEANS;
Группа UNIX
Имена учетных записей операционной системы Linux/UNIX доступны для безопасности в Firebird через привилегии Firebird, которые не являются стандартом SQL. Клиент, выполняющийся как пользователь UNIX, применяет этот идентификатор пользователя в базе данных, даже если такая учетная запись не определена в базе данных безопасности Firebird.
Машина, получающая доступ к серверу, должна быть в списке доверенных машин на сервере (файлы /etc/host.equiv или /etc/gds_host.equiv, или в .rhost в домашнем каталоге пользователя на сервере). При соединении пользователь использует идентификацию его группы, если он не предоставил для Firebird свое имя пользователя и пароль в качестве параметров соединения - учетные записи Firebird перекрывают учетные записи UNIX.
Группы Linux/UNIX совместно используют такое поведение: пользователь SYSDBA или Суперпользователь могут назначать привилегии SQL группам UNIX. Любая операция над учетной записью на уровне системы, которая является членом группы, наследует привилегии, предоставленные группе, например:
GRANT ALL ON CUSTOMER TO GROUP sales;
Все пользователи (PUBLIC)
Для назначения одних и тех же привилегий доступа к таблице всем пользователям предоставьте привилегии PUBLIC, PUBLIC только пользователей - не триггеры, процедуры, просмотры или роли.
GRANT SELECT, INSERT, UPDATE ON DEPARTMENT TO PUBLIC;
Привилегии, предоставленные пользователям с помощью PUBLIC, могут быть отменены только путем отмены их у PUBLIC. Вы не можете, например, отменить привилегию у CHALKY, которую CHALKY получил как член PUBLIC.