Управление правами доступа пользователей Kintsugi#
Platform V Kintsugi (DBM) предоставляет широкий спектр возможностей по настройке прав доступа благодаря двум моделям управления доступом: Role-Based Access Control (RBAC) и Attribute-Based Access Control (ABAC).
Распределение привилегий моделью RBAC#
Модель RBAC распределяет привилегии на основе заранее установленных ролей.
Каждая роль включает конкретные права, доступные ее обладателям.
RBAC позволяет централизованно назначить привилегии через предварительно созданные роли.
Распределение привилегий моделью ABAC#
Модель ABAC основывается на правилах, учитывающих атрибуты пользователя, ресурса и окружения.
Атрибуты ABAC#
Активы#
Основой для вычисления привилегий в механизме ABAC являются атрибуты объектов. В данном разделе рассмотрим атрибуты активов.
В качестве атрибутов активов выступают пользовательские свойства.
Набор пользовательских свойств определяется клиентом после развертывания Kintsugi (DBCM) и может изменяться по мере необходимости.
Группы активов (фильтры активов)#
В Kintsugi (DBCM) группы активов формируются путем задания некоторого набора признаков (фильтра): активы, обладающие подходящим набором признаков, считаются членами группы.
Фильтр активов представляет собой набор условий (предикатов), при этом:
каждый предикат проверяет одно из пользовательских свойств на равенство заданному значению;
все предикаты фильтра объединяются через операцию логического «И».
Таким образом, с точки зрения механизма ABAC, атрибутом актива является признак его соответствия определенным фильтрам.
Примеры фильтров#
Фильтр будем представлять в форме JSON-документа, содержащего один объект, где каждая пара key-value описывает один предикат, где:
key– имя пользовательского свойства;value– искомое значение пользовательского свойства.
Пусть в системе присутствует набор активов с пользовательскими свойствами согласно следующей таблице.
Название актива |
Свойство |
Свойство |
Свойство |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рассмотрим несколько примеров фильтрации активов:
Выдача привилегий на все активы для конкретной автоматизированной системы#
Требуется выдать привилегии на все активы, находящиеся в стендах ops автоматизированной системы magenta.
Задайте фильтр активов следующим образом:
{
"custom_as": "magenta",
"custom_stand": "ops"
}
Данный фильтр выбирает активы, у которых свойство:
custom_asимеет значениеmagenta;custom_standимеет значениеops.
Группа активов, образованная данным фильтром, будет включать следующие элементы:
host-magenta-ops-jazz-primary;host-magenta-ops-jazz-secondary;host-magenta-ops-blues-primary;host-magenta-ops-blues-secondary.
Выдача привилегий на все активы всех автоматизированных систем#
Требуется выдать привилегии на все активы, находящиеся в стендах ops всех автоматизированных систем.
Задайте фильтр активов следующим образом:
{
"custom_stand": "ops"
}
Данный фильтр выбирает активы, у которых свойство custom_stand имеет значение ops.
Группа активов, образованная данным фильтром, будет включать следующие элементы:
host-cyan-ops-jazz-primary;host-cyan-ops-jazz-secondary;host-cyan-ops-blues-primary;host-cyan-ops-blues-secondary;host-magenta-ops-jazz-primary;host-magenta-ops-jazz-secondary;host-magenta-ops-blues-primary;host-magenta-ops-blues-secondary.
Выдача привилегий на все активы, существующие в настоящий момент, и создаваемые в будущем#
Для выдачи привилегий на все активы, существующие в настоящий момент, и создаваемые в будущем, задайте фильтр активов следующим образом — в виде пустого JSON-документа.
Данный фильтр не содержит условий на пользовательские свойства, то есть он выбирает все активы.
Группа, образованная данным фильтром, будет включать абсолютно все активы.
Пользователи и их группы#
Как правило, привилегии требуется выдавать не отдельным пользователям, а их группам.
Группа пользователей в Kintsugi (DBCM):
имеет идентификатор (
user_group_key);включает множество пользователей, определенное одним из двух способов:
непосредственным перечислением (если имя пользователя содержится в массиве
usernames, то пользователь считается членом группы);по признаку наличия у них определенной роли RBAC (если у пользователя имеется роль, заданная в поле
role_name, то пользователь считается членом группы).
Таким образом, пользователь с точки зрения механизма ABAC обладает следующими характеристиками:
членство в группах с определенными значениями
user_group_key(прямо);обладание ролями RBAC с определенными значениями
role_name(косвенно, через членство в группах с заданным значением поляrole_name).
Внимание
Вычисление привилегий не имеет прямой связи с механизмом RBAC, однако, благодаря возможности создавать группы пользователей, ассоциированные с RBAC-ролями, при выдаче привилегий в механизме ABAC становится возможным учесть принадлежность пользователя к определенной RBAC-роли.
Набор привилегий#
Привилегии представляют собой конкретные права, которые определены в Kintsugi (DBCM):
Привилегия Backend |
Примечания |
|---|---|
|
Изменение характеристик активов PostgreSQL |
|
Удаление активов PostgreSQL |
|
Получение списка событий |
|
Просмотр списка подписчиков на оповещения |
|
Переключение флага сбора всех метрик |
|
Переключение флага сбора метрик с типами |
|
Переключение флага сбора и параметров встроенных метрик |
|
Просмотр логов актива |
|
Изменение конфигурации активов |
Конфигурация политики ABAC#
Политика ABAC конфигурируется путем загрузки снепшотов через публичный REST API (/privileges/snapshots/upload).
Подробнее с публичным API-вызовом можно ознакомиться в документе «Руководство прикладного разработчика на Kintsugi (DBCM)» раздел «Загрузка правил выдачи привилегий для групп пользователей».
Важно
Загруженные снепшоты не приводят к изменению политики ABAC немедленно. Для того чтобы изменить политику, соответствующий снепшот должен быть применен администратором через интерфейс Kintsugi.