Объект класса Rbac
описывает модель управления доступом на основе типов, полномочий, ролей, и ограничений/правил для операций. Эти параметры задаются в конфигурации объекта класса Rbac
.
Конфигурация объекта
Конфигурация объекта класса Rbac
содержит следующие элементы:
types
– список допустимых моделью типов объектов и субъектов.Пример: types: [core, einit, tls, smm, auth, app]
images
– список образов, из которых создаются субъекты. permissions
– список допустимых моделью полномочий (см. Полномочия).roles
– список допустимы моделью ролей (см. Роли).create_subject
– ограничения и правила для операции создания субъекта (см. Ограничения/правила: создание субъекта).create_object
– ограничения и правила для операции создания объекта (см. Ограничения/правила: создание объекта).retype_object
– ограничения и правила для операции изменения типа объекта (см. Ограничения/правила: изменение типа объекта).add_roles
– ограничения и правила для операции добавления ролей к субъекту (см. Ограничения/правила: добавление ролей к субъекту).Все параметры конфигурации обязательны при создании объекта класса.
Конфигурация аудита
Объект класса Rbac
не содержит дополнительных полей конфигурации аудита.
Пример
security.psl
use nk.rbac._
policy object rbac0 : Rbac {
config =
{ types: ["actors", "userland", "obscura"]
, images: []
, permissions:
{ mundane: ["observe"]
, unusual: ["research"]
}
, roles:
{ admin:
{ extends: []
, rights: []
}
, user:
{ extends: []
, rights:
[ { from: ["actors"]
, to: ["userland"]
, permissions: ["mundane/observe"]
}
]
}
, obscurantist:
{ extends: []
, rights:
[ { from: ["actors"]
, to: ["obscura"]
, permissions: ["mundane/observe"]
}
, { from: ["actors"]
, to: ["obscura"]
, permissions: ["unusual/research"]
}
]
}
, hyperadmin:
{ extends: ["user", "admin", "obscurantist"]
, rights: []
}
}
, create_subject:
[ { source_type: ["actors"]
, source_role: ["admin"]
, target_type: ["actors"]
// it might be nice to have @any target_role selector
, target_role: ["user", "obscurantist"]
, target_type_auto: ()
, target_role_auto: []
, image: []
}
, { source_type: ["@any"]
, source_role: ["@any"]
, target_type: ["actors"]
, target_role: ["admin"]
, target_type_auto: ()
, target_role_auto: []
, image: []
}
]
, create_object:
[ { source_type: ["actors"]
, source_role: ["user"]
, target_type: ["userland"]
, target_type_auto: ()
, container_type: ["@any"]
}
, { source_type: ["actors"]
, source_role: ["obscurantist"]
, target_type: ["obscura"]
, target_type_auto: ()
, container_type: ["@any"]
}
]
, retype_object:
[ { source_type: ["actors"]
, source_role: ["admin"]
, target_type: ["userland", "obscura"]
, original_type: ["userland", "obscura"]
, container_type: ["@any"]
}
]
, add_roles:
[ { source_type: ["actors"]
, source_role: ["admin"]
, target_type: ["@source_type"]
, target_role: ["admin", "user", "obscurantist"]
}
]
}
}
В начало