В некоторых UNIX-системах (не в поздних версиях Solaris) для делегирования части прав администратора использовалась и используется программа sudo, с помощью которой любой пользователь может выполнить команду от имени другого пользователя, но для ее использования нужно заранее отредактировать файл /etc/sudoers. Также возможно установить в правах доступа к программе бит SUID и доверенный пользователь при этом сможет запустить ее от имени владельца, т.е. пользователя root, но далеко не все операции в системе можно выполнить, имея лишь право запуска отдельных программ.
При использовании RBAC права доступа на объекты системы группируются с учетом специфики их применения, образуя роли. Смысл ролей в том, что любому пользователю может быть назначена роль. Право выполнения определенных функций привилегии не назначается пользователю непосредственно, а приобретается им только через роль, и управление индивидуальными правами пользователя сводится к назначению ему ролей. В Solaris RBAC впервые появилась в 8-й версии.
Правила разграничения доступа, реализуемые в такой модели, могут изменяться в процессе функционирования системы.
Пользователь не может зайти в систему, указав имя роли, но может переключиться в роль, дав команду
su имя роли
Компоненты RBAC
Пользователи
Пользователи имеют обычные учетные записи, а также право играть ту или иную роль согласно записям в файле /etc/user_attr.
Роли
Предопределенных ролей не существует, но можно создать новые роли, назначив им один из трех предопределенных профилей. Соответствие ролей и пользователей описывается файлом /etc/user_attr:
root::::auths=solaris.*,solaris.grant;profiles=All
В файле всего 2 поля: имя пользователя (или роли) и атрибуты. Атрибут type имеет значение role для записи о роли и normal – о пользователе. По умолчанию подразумевается запись о пользователе.
Формат записей в /etc/user_attr следующий:
user:qualifier:res1:res2:attr
где:
- user – имя пользователя, такое же, как в /etc/passwd;
- qualifier – зарезервировано на будущее;
- res1 – зарезервировано на будущее;
- res2 – зарезервировано на будущее;
- attr – атрибуты, разделенные точкой с запятой, вида имя=значение; допустимые атрибуты –auths, profiles, roles, type и project.
Атрибут auths предназначен для перечисления предопределенных прав (authorizations), где значение "все возможные" представляется символом "*". Атрибут roles позволяет разрешить пользователю играть различные роли, перечисленные через запятую. Если в строке, описывающей пользователя, не указан атрибут roles, пользователю запрещается играть любые роли. Аналогичным образом может быть назначен проект (project) и профиль прав (profiles) для пользователя или роли.
Профили прав
Профиль в данном контексте – набор свойств, который может быть назначен роли. Профиль прав объединяет различные полномочия, чтобы можно было назначить той или иной роли логически связанный набор полномочий. Информация о профилях хранится в файле /etc/security/prof_attr, поля в котором имеют следующие значения:
profname:res1:res2:desc:attr
- profname – это имя профиля; регистр букв в имени имеет значение;
- res1, res2 – зарезервированные поля;
- desc – описание профиля, в котором указывается значение данного профиля;
- attr – атрибуты, допустимыми являются auths и help. Атрибут auths предполагает указание в качестве его значения списка наборов прав (полномочий или авторизаций, в зависимости от перевода) из числа определенных в файле /etc/security/auth_attr. Атрибут help требует указания страницы в формате HTML, содержащей справку по данному профилю.
Полномочия
Полномочие представляет собой право (включенное в профиль или данное пользователю) выполнять определенные действия в системе. В Solaris доступны для использования только предопределенные полномочия и добавить новое нельзя. Список полномочий хранится в файле /etc/security/auth_attr.
Значения полей в этом файле:
name:res1:res2:short_desc:long_desc:attr
- name – обязательное поле, имя набора прав (полномочия). Оно получается из комбинации префикса и суффикса, где префикс – это часть имени до самой правой точки.
Префикс наборов прав, созданных Sun, начинается со слова solaris. Все остальные разработчики должны указывать в качестве начала префикса имя своего домена в обратном порядке (например, com.oracle.) После имени компании идет дополнительная часть префикса, содержание которой зависит от значения набора прав. Компоненты дополнительной части разделяются точкой.
Суффикс – слово, определяющее смысл авторизации. Слово grant предполагает право пользователя делегировать свои наборы прав другим.
Команды
Файл /etc/security/exec_attr содержит атрибуты запуска программ, ассоциированных с тем или иным профилем из prof_attr.
Формат записей в файле /etc/security/exec_attr предполагает обязательное указание имени профиля прав, установленных значений полей policy и type, идентификатора и атрибутов (последнее не обязательно):
name:policy:type:res1:res2:id:attr
- name – имя профиля прав.
- policy – политика, ассоциированная с профилем прав; единственное допустимое значение этого поля – suser.
- type – тип объекта, определенного в данной записи; единственное допустимое значение этого поля – cmd.
- id – строка, являющаяся уникальным идентификатором объекта, описанного в данной записи; для типа cmd этот идентификатор является полным именем файла выполняемой программы. Символ "*" разрешает запустить любую команду. Можно указывать звездочку в конце полного имени файла, что будет означать любую программу в соответствующем каталоге.
- аttr – атрибуты вида имя=значение, разделенные точкой с запятой; допустимые варианты атрибутов: euid, uid, egid и gid.
Все компоненты RBAC могут быть использованы как в виде файлов, так и в виде карт NIS или таблиц NIS+. Следовательно, в файле /etc/nsswitch.conf потребуется указать порядок обращения к различным источникам.
Программы, поддерживающие роли:
- все программы, запускаемые внутри Solaris Management Console;
- программы-планировщики - at, atq, batch, crontab;
- команды, связанные с работой физических устройств – allocate, deallocate, cdrw, list_devices.
Команды управления ролями
Управление ролями производится путем редактирования файлов в каталоге /etc/security или посредством программ roleadd, rolemod и roledel, а также с помощью Solaris Management Console.
С помощью команды roleadd –D после добавления роли можно увидеть ее права по умолчанию.
Для выполнения команд, предполагающих использование ролей, нужны командные процессоры, в которых реализована работа с ролями: /bin/pfsh, /bin/pfcsh и /bin/pfksh (эквивалентны своим «обычным» аналогам). Их требуется указать в качестве login shell для ролей.