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

О безопасности в Платформе

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

Управление доступом к информации и ресурсам в Платформе основано на известных моделях.

Модели безопасности в Платформе

Управление доступом в Платформе основано на следующих моделях:

  • Дискреционная или избирательная (Discretionary Access Control, DAC) — модель, в которой ограничения доступа к объектам основаны на возможности некоторого субъекта предоставлять другим субъектам или отбирать у них права доступа к объекту.

    Дискреционная модель использует следующие понятия:

    • Субъект — сущность, которая совершает действия в системе и чьими правами на совершение этих действий можно управлять. Субъектом является, например, пользователь.
    • Объект — сущность, над которой субъект совершает действие. Объектом является элемент данных, файл, элемент управления в пользовательском интерфейсе, метод API сервиса, бизнес-процесс или задача такого процесса.
    • Действия — то, что можно делать с объектами определенного типа. Например, кнопку в пользовательском интерфейсе можно отображать и нажимать, объект данных можно создавать, удалять, редактировать и просматривать.
    • Разрешение — правило доступа, связывающее субъект, объект и действие и определяющее право субъекта совершить действие над объектом. Значением правила может быть: разрешено или запрещено. Правило формулируется в виде: субъекту A разрешено совершать действие B над объектом C или субъекту X запрещено совершать действие Y над объектом Z.

    Состояние прав доступа в случае дискреционного управления доступом описывается матрицей, в строках которой перечислены субъекты, а в столбцах — объекты. В ячейках таблицы записываются способы доступа для субъекта по отношению к объекту.

  • Ролевая (Role Based Access Control, RBAC) — модель, которая является развитием дискреционной модели управления доступом, и в которой права доступа субъектов к объектам группируются с учетом специфики их применения, образуя роли.

    Ролевая модель использует следующие понятия:

    • Роль — совокупность действий и обязанностей, связанных с определенным видом деятельности.
    • Профиль — группа ролей с аналогичными действиями и обязанностями.

    Ролевая модель реализована в Редакторе Сущностей Безопасности DevTools.

  • Атрибутная (Attribute-Based Access Control, ABAC) — модель, в которой ограничения доступа к объектам основаны на анализе правил для атрибутов объектов или субъектов, возможных операций с ними и окружения, соответствующего запросу.

    Атрибутная модель реализована в Редакторе Модели Данных DevTools. Эта модель позволяет определять политики безопасности для классов модели данных.

Группы сущностей безопасности

Для удобства проектирования модели безопасности и управления правами доступа субъекты и объекты могут объединяться в группы. Группировка сущностей безопасности позволяет формировать иерархическую модель управления безопасностью.

Основные правила группировки сущностей следующие:

  • субъект или группа субъектов может включаться только в группы субъектов;
  • объект или группа объектов может включаться только в группы объектов;
  • один субъект или объект может включаться в несколько групп;
  • одна группа может содержать несколько субъектов или объектов или групп.

При включении групп в другие группы не допускаются кольцевые ссылки, а именно: если группа A включена в группу B, группа B включена в группу C, группа C не может быть включена в группу A.

Пространство имен — логическая группа сущностей безопасности (субъектов, объектов и действий), которая определяет область видимости и уникальности идентификаторов этих сущностей.

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

Для пространств имен верны следующие утверждения:

  • сущности, входящие в одно пространство имен, видят друг друга;
  • сущности, входящие в разные пространства имен, не видят друг друга;
  • субъекты и группы субъектов могут включаться только в группы субъектов из одного пространства имен;
  • объекты и группы объектов могут включаться только в группы объектов из одного пространства имен;
  • действия могут применяться только к объектам из одного пространства имен.

При создании разрешений допускается, чтобы субъект относился к одному пространству имен, а объект и действие относились к другому пространству имен. Такое допущение позволяет использовать, например, одно пространство имен Пользователи, содержащее всех пользователей программного продукта, для управления доступом к различным типам объектов, например, элементам пользовательского интерфейса, сущностям и экземплярам сущностей модели данных, файлам. При этом подходе разные типы объектных сущностей изолируются друг от друга в отдельных пространствах имен.

Пространства имен могут включать другие пространства имен, которые называются вложенными или дочерними. Использование вложенных пространств имен обеспечивает взаимную доступность родительского и дочернего пространств имен и изолирует сущности дочерних пространств имен. Например, если пространство имен А содержит пространства имен В и С, верны следующие утверждения:

  • субъекты из A могут включаться в группы из B и наоборот;
  • субъекты из A могут включаться в группы из C и наоборот;
  • субъекты из B не могут включаться в группы из C и наоборот.

Принципы определения прав доступа

Основной принцип определения прав доступа в Платформе следующий: неразрешенные действия запрещены.

Разрешения и запреты могут устанавливаться не только для субъектов и объектов, но и для групп этих сущностей. Для комбинации субъект-действие-объект может существовать несколько правил, заданных прямо или опосредованно на основании членства в группах. Для определения права субъекта совершить определенное действие с объектом используется следующий алгоритм:

  1. найти все прямые и опосредованные разрешения и запреты для комбинации субъект-действие-объект;

  2. проанализировать сформированный список разрешений и запретов и принять решение исходя из условий:

    • если разрешений или запретов не найдено, субъект не имеет права на совершение действия с объектом;
    • если в списке существует хотя бы один запрет, действие запрещено;
    • если в списке нет запретов, действие разрешено.