Управление правами доступа пользователей 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 — искомое значение пользовательского свойства.

Пусть система содержит набор активов с пользовательскими свойствами согласно следующей таблице.

Название актива

Свойство
custom_as

Свойство
custom_stand

Свойство
custom_cluster

host-cyan-dev-jazz-primary

cyan

dev

jazz

host-cyan-dev-jazz-secondary

cyan

dev

jazz

host-cyan-dev-blues-primary

cyan

dev

blues

host-cyan-dev-blues-secondary

cyan

dev

blues

host-cyan-ops-jazz-primary

cyan

ops

jazz

host-cyan-ops-jazz-secondary

cyan

ops

jazz

host-cyan-ops-blues-primary

cyan

ops

blues

host-cyan-ops-blues-secondary

cyan

ops

blues

host-magenta-dev-jazz-primary

magenta

dev

jazz

host-magenta-dev-jazz-secondary

magenta

dev

jazz

host-magenta-dev-blues-primary

magenta

dev

blues

host-magenta-dev-blues-secondary

magenta

dev

blues

host-magenta-ops-jazz-primary

magenta

ops

jazz

host-magenta-ops-jazz-secondary

magenta

ops

jazz

host-magenta-ops-blues-primary

magenta

ops

blues

host-magenta-ops-blues-secondary

magenta

ops

blues

Рассмотрим примеры фильтрации активов:

Выдача привилегий на все активы для конкретной автоматизированной системы#

Необходимо выдать привилегии на все активы стенда 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, позволяет учитывать принадлежность пользователя к определенной роли RBAC при выдаче привилегий в механизме ABAC.

Набор привилегий#

Привилегии представляют собой конкретные права, определенные в Kintsugi (DBCM):

Привилегия Backend

Примечания

asset_pg_edit

Изменение характеристик активов PostgreSQL

asset_pg_delete

Удаление активов PostgreSQL

asset_pg_view

Получение списка событий
Открытие дашборда Обзор
Открытие дашбордов метрик мониторинга
Открытие информации о производительности
Открытие помощника по блокировкам
Создание отчета PWR
Создание и редактирование пользовательских дашбордов

alerting_view_subscribers

Просмотр списка подписчиков на оповещения

pg_metrics_toggle_global

Переключение флага сбора всех метрик

pg_metrics_regular_toggle

Переключение флага сбора метрик типов pg и host и изменение пороговых значений метрик типов pg и host

pg_metrics_embedded_toggle

Переключение флага сбора и параметров встроенных метрик

asset_pg_log_view

Просмотр логов актива

asset_pg_config_edit

Изменение конфигурации активов

Конфигурация политики ABAC#

Политика ABAC настраивается загрузкой снепшотов через публичный REST API (/privileges/snapshots/upload).

Подробнее с публичным API-вызовом можно ознакомиться в документе «Руководство по использованию публичного API Kintsugi (DBCM)» раздел «Загрузка правил выдачи привилегий для групп пользователей».

Важно

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

Сценарии работы со снепшотами#