Информаторы, верификаторы и аналитики
Часто используемая у нас в стране и за рубежом система разграничения полномочий при сборе конфиденциальной информации, когда информаторы, т.е. те, кто собирают и заносят информацию, могут только вносить новую информацию, но не имеют право читать ее.
Информаторам часто запрещается видеть цельную картину, это удел так называемых аналитиков, в функции которых входит обработка и анализ собранной информации.
Однако между информаторами и аналитиками должно стоять еще одно звено – это пользователи с функциями проверки, т.е. верификаторы. Верификаторы должны производить, во-первых, проверку введенных информаторами фактов, во-вторых, первичную обработку (например, обезличивание фактов).
Следовательно, верификаторам должны быть разрешены выборка из таблиц информаторов и запись (с возможной модификацией) в таблицы аналитиков.
Обычно, аналитик результаты анализа собирает в своих таблицах, доступ к которым имеет только он и никто больше (другие аналитики и даже администратор).
В этом примере роли нужно построить так:
-
роль информаторов (
Inf_Role
):CREATE ROLE Inf_Role; GRANT INSERT ON Inf_1 TO Inf_Role; GRANT INSERT ON Inf_2 TO Inf_Role; GRANT INSERT ON Inf_N TO Inf_Role;
-
роль верификаторов (
Ver_Role
):CREATE ROLE Ver_Role; GRANT SELECT ON Inf_1 TO Ver_Role; GRANT SELECT ON Inf_2 TO Ver_Role; GRANT SELECT ON Inf_N TO Ver_Role; GRANT SELECT,INSERT,UPDATE ON Ver_1 TO Ver_Role; GRANT SELECT,INSERT,UPDATE ON Ver_2 TO Ver_Role; GRANT SELECT,INSERT,UPDATE ON Ver_M TO Ver_Role;
-
роль аналитиков (
Anal_Role
):CREATE ROLE Anal_Role; GRANT SELECT ON Ver_1 TO Anal_Role; GRANT SELECT ON Ver_2 TO Anal_Role; .... GRANT SELECT ON Ver_M TO Anal_Role;
При этом создание нового пользователя выглядит так:
-
создание информатора:
GRANT CONNECT TO User_Name IDENTIFIED BY 'User_Password'; GRANT ROLE Inf_Role TO User_Name;
-
создание верификатора:
GRANT CONNECT TO User_Name IDENTIFIED BY 'User_Password'; GRANT ROLE Ver_Role TO User_Name;
-
создание аналитика:
GRANT RESOURCE TO User_Name IDENTIFIED BY 'User_Password'; GRANT ROLE Anal_Role TO User_Name;
Обращаем внимание, что владельцем всех таблиц, кроме аналитических, является администратор. Таблицы с результатами анализа данных скрыты от всех, кроме их владельцев-аналитиков.