Информаторы, верификаторы и аналитики

Часто используемая у нас в стране и за рубежом система разграничения полномочий при сборе конфиденциальной информации, когда информаторы, т.е. те, кто собирают и заносят информацию, могут только вносить новую информацию, но не имеют право читать ее.

Информаторам часто запрещается видеть цельную картину, это удел так называемых аналитиков, в функции которых входит обработка и анализ собранной информации.

Однако между информаторами и аналитиками должно стоять еще одно звено – это пользователи с функциями проверки, т.е. верификаторы. Верификаторы должны производить, во-первых, проверку введенных информаторами фактов, во-вторых, первичную обработку (например, обезличивание фактов).

Следовательно, верификаторам должны быть разрешены выборка из таблиц информаторов и запись (с возможной модификацией) в таблицы аналитиков.

Обычно, аналитик результаты анализа собирает в своих таблицах, доступ к которым имеет только он и никто больше (другие аналитики и даже администратор).

В этом примере роли нужно построить так:

  • роль информаторов (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;
    				

Обращаем внимание, что владельцем всех таблиц, кроме аналитических, является администратор. Таблицы с результатами анализа данных скрыты от всех, кроме их владельцев-аналитиков.