Перейти к содержимому

SoD, делегирование и deny-гранты

Три механизма делают доступ в X7 Insight безопасным и управляемым: разделение обязанностей не даёт совместить конфликтующие роли, делегирование позволяет корректно замещать коллегу, а deny-гранты дают точечные исключения, которые не перекроет ни одна широкая роль.

Разделение обязанностей (Separation of Duties) не позволяет одному человеку совмещать права, которые по регламенту должны быть у разных людей. Классические пары:

  • тот, кто вводит данные (data.enter), не должен их верифицировать (data.sdv.verify);
  • автор правок дизайна (studyversion.update) не должен сам их утверждать (studyversion.approve);
  • тот, кто раздаёт доступ (access.grant), под контролем при совмещении с правкой данных.

Каждое SoD-правило — это данные (пара конфликтующих разрешений + политика), настраиваемые под регламент вашего спонсора. Есть две политики:

Политика Что делает система
block жёстко отклоняет выдачу: обойти запрет нельзя, нужно изменить область действия, роль или набор прав
warn выполняет операцию, но предупреждает о конфликте; факт совмещения фиксируется в аудите

SoD на актах утверждения — политика, не константа

Заголовок раздела «SoD на актах утверждения — политика, не константа»

Правило «утверждает не автор» для актов утверждения (версия дизайна, словарь перевода) включается настройкой «Строгое разделение обязанностей при утверждении» (core.sod.strict_approvals) — на весь арендатор или на отдельное исследование (Администрирование → Настройки).

  • По умолчанию — мягко: автор может утвердить собственную работу; система всегда помечает факт самоутверждения в аудите (self_approved) — след не зависит от политики.
  • Строгий режим: утвердить дизайн или перевод может только другой человек. Если утвердить пытается автор, система прямо подсказывает — «Утвердить должен другой пользователь с правом studyversion.approve» — со ссылкой «Настроить доступ».

Строгий режим уместен, когда его требует регламент спонсора или ваша СМК; мягкий — для команд, где вторая пара рук не предусмотрена процессом. Пара на выдаче прав studyversion.update × studyversion.approve следует той же политике: в мягком режиме выдача проходит с предупреждением (иначе право утверждать нельзя было бы даже выдать автору). Остальные пары — прежде всего data.enter × data.sdv.verify — от настройки не зависят.

Малые организации: документированное исключение

Заголовок раздела «Малые организации: документированное исключение»

В строгом режиме второй пары рук для утверждения может просто не быть — например, в исследовании, инициированном исследователем, или в CRO из одного-двух человек (если строгий режим не требуется вовсе, проще его не включать — см. политику выше). Руководства по целостности данных (PIC/S PI 041, MHRA GxP Data Integrity) допускают отступление от разделения обязанностей в таких случаях — но задокументированное и авторизованное, а не молчаливое.

В X7 Insight носитель такого отступления — обычный грант специального права:

  • studyversion.self_approve — автор версии дизайна может утвердить её сам;
  • translation.self_approve — переводчик может утвердить собственный перевод.

Правила выдачи жёсткие, и обойти их нельзя:

  • выдать себе нельзя — исключение авторизует другой человек (в организации из одного человека — представитель спонсора, QA-консультант или администратор платформы): принцип «четырёх глаз» не отменяется, а смещается с акта утверждения на акт разрешения;
  • срок обязателен (valid_to) — бессрочных исключений не бывает; по истечении дверь закрывается сама;
  • причина обязательна — укажите ссылку на оценку риска в вашей СМК;
  • в роль не кладётся — право персонально, выдаётся только прямым грантом.

Что происходит дальше: автор с действующим исключением утверждает свою версию, а система помечает факт самоутверждения в аудите (self_approved) — инспектор увидит его первым. Блокирующая пара studyversion.update × studyversion.approve при действующем исключении понижается до предупреждения: права выдаются, конфликт остаётся видимым.

Делегирование — это когда вы временно передаёте свои права замещающему (например, монитор уходит в отпуск и коллега подхватывает его центры). Делегирование подчиняется строгим правилам:

  • передать можно только подмножество собственных эффективных прав (⊆ ваших прав) и только в подмножество вашей области действия;
  • глубина — один уровень: тот, кому делегировали, не может делегировать дальше;
  • срок делегирования не превышает срок ваших собственных прав;
  • при отзыве или истечении ваших прав делегированное каскадно отзывается автоматически.
  1. В зоне Администрирование → Доступ оформите замещающему временное назначение той же роли на тот же (или более узкий) scope.

  2. Задайте даты «с — по» — замещение действует ровно в этом окне.

  3. По окончании отпуска доступ прекращается сам (или отзывается вручную).

Deny-грант — это точечный запрет конкретного разрешения конкретному принципалу в конкретном scope. Его отличительное свойство: deny побеждает любой grant на пути. Даже если у человека есть широкая роль, дающая это право, точечный deny его перекроет.

Deny-гранты — хирургический инструмент для исключений: конфликт интересов, служебное расследование, временное ограничение. Пример: запретить одному координатору data.update на одном центре, не трогая его роль и не затрагивая остальные центры.

  1. На вкладке «Гранты» выберите принципала и нажмите «Новый грант».

  2. Укажите разрешение и область действия, а в поле «Эффект» выберите «deny — запретить (deny всегда побеждает)».

  3. Подтвердите. Система предупредит: «Deny побеждает любой grant на пути — хирургическое исключение, которое не перекроет ни одна роль».