SVSP
TECHNOLOGIES

Документация

Система прав доступа

Данный документ подробно описывает архитектуру и принципы работы системы прав доступа в Certis Platform.

Общие принципы

Система прав доступа в Certis Platform построена на основе ролевой модели с группами пользователей. Каждый пользователь может принадлежать одной или нескольким группам, а права доступа настраиваются на уровне групп.

Уровни доступа

Система использует три уровня доступа:

УровеньЗначениеОписание
0Полный доступРазрешено чтение и запись
1Только чтениеРазрешено только чтение данных
2Доступ запрещенПолный запрет доступа (значение по умолчанию)

Архитектура системы прав

Система прав доступа состоит из нескольких компонентов:

1. Группы пользователей (CrmGroup)

Группы объединяют пользователей и служат контейнерами для прав доступа. Каждая группа имеет:

По умолчанию в системе существуют две группы:

2. Типы прав доступа

Система поддерживает два типа прав доступа:

Общие права (CrmPermissions)

Права, применяемые ко всем сущностям определенного типа. Например, можно настроить права доступа ко всем сущностям типа «Проект».

Прямые права (CrmDirectPermissions)

Права, применяемые к конкретной сущности. Позволяют настроить индивидуальный доступ к отдельным экземплярам.

Механизм проверки прав

Проверка прав доступа выполняется автоматически при попытке доступа к сущностям. Механизм работает следующим образом:

1. Определение уровня доступа

При запросе доступа к сущности система последовательно проверяет:

  1. Прямые права — если существуют прямые права для конкретной сущности, используется их уровень доступа
  2. Общие права — если нет прямых прав, проверяются общие права для типа сущности
  3. Правило по умолчанию — если нет ни прямых, ни общих прав, доступ запрещен (уровень 2)

2. Приоритеты прав

Система использует принцип наименьших привилегий:

Работа с правами доступа

Настройка прав для группы

Права доступа настраиваются через методы класса CrmGroup:

<?php

addAccessRightForEntity(int $entityTypeId, int $accessRight, int $entityId = null)

Добавляет право доступа для группы.

Параметры:

Примеры использования:

<?php
// Дать полный доступ ко всем проектам
$group->addAccessRightForEntity(5, 0);

// Дать права на чтение к конкретному проекту (ID: 10)
$group->addAccessRightForEntity(5, 1, 10);

// Запретить доступ к конкретному клиенту (ID: 15)
$group->addAccessRightForEntity(3, 2, 15);
<?php

getEntityAccessRight(int $entityTypeId, int $entityId = null): int

Получает уровень доступа для сущности.

Параметры:

Возвращает: Уровень доступа (0, 1, 2)

<?php

deleteDirectRule(int $etid, int $eid)

Удаляет прямое правило доступа.

Параметры:

Практические примеры

Пример 1: Настройка прав для отдела продаж

<?php
// Получаем группу "Отдел продаж"
$salesGroup = EntityTable::getEntities([
    "ENTITY_TYPE_ID" => 2,
    "FILTER" => [["name", "=", "Отдел продаж"]]
])[0];

// Даем полный доступ ко всем клиентам
$salesGroup->addAccessRightForEntity(3, 0); // 3 - тип сущности "Клиент"

// Даем только чтение к финансовым отчетам
$salesGroup->addAccessRightForEntity(7, 1); // 7 - тип сущности "Отчет"

// Запрещаем доступ к настройкам системы
$salesGroup->addAccessRightForEntity(1, 2); // 1 - тип сущности "Пользователь"

Пример 2: Индивидуальный доступ к проекту

<?php
// Даем менеджеру прямой доступ к конфиденциальному проекту
$managerGroup = EntityTable::getEntities([
    "ENTITY_TYPE_ID" => 2,
    "FILTER" => [["name", "=", "Менеджеры"]]
])[0];

// Полный доступ к конкретному проекту (ID: 100)
$managerGroup->addAccessRightForEntity(5, 0, 100);

Безопасность и ограничения

1. Правило по умолчанию

Если для сущности не настроены права доступа, доступ к ней запрещен. Это обеспечивает безопасность по умолчанию.

2. Проверка при создании

При создании новой сущности права доступа на нее не наследуются автоматически. Необходимо явно настраивать права.

3. Аудит изменений

Все изменения прав доступа должны фиксироваться в журнале аудита для отслеживания безопасности.

Рекомендации по использованию

  1. Начинайте с минимальных привилегий — предоставляйте только необходимые права
  2. Используйте группы — не настраивайте права на уровне отдельных пользователей
  3. Регулярно аудируйте права — проверяйте актуальность настроек доступа
  4. Документируйте политики — ведите реестр групп и их прав доступа
  5. Используйте прямые права умеренно — они усложняют управление доступом

Система прав доступа Certis Platform обеспечивает гибкое и безопасное управление доступом к данным, позволяя настраивать как общие, так и индивидуальные права для различных групп пользователей.

SVSP
TECHNOLOGIES
Политика конфиденциальности
Политика конфиденциальности