Понимаем RBAC
23 Июль 2010
Перевод статьи «Understanding RBAC«.
Role Based Access Control (RBAC) – функциональность OpenSolaris (Прим. переводчика. И просто Solaris, начиная с версии Solaris 8), предоставляющая большие возможности. Однако, ее трудно понять из-за обилия раздельных компонентов, связанных между собой. В этой записи я попытаюсь написать, что понял я.
Сначала несколько определений:
Пользователь
Пользователь в системе. Основная информация об учетных записях пользователей определяется в /etc/passwd:
bleonard@opensolaris:~$ grep "bleonard" /etc/passwd bleonard:x:101:10:Brian Leonard:/export/home/bleonard:/bin/bash
Информация включает имя пользователя, пароль, id, id группы, полное имя, домашний каталог и командный интерпретатор по-умолчанию.
Дополнительная информация о пользователях для RBAC определяется в /etc/user_attr:
bleonard@opensolaris:~$ grep "bleonard" /etc/user_attr bleonard::::profiles=Primary Administrator;roles=root
Для пользователя bleonard определен один профиль, Primary administrator, и одна роль, root.
Роль
Роль – это именованное множество полномочий, которые могут быть активированы. Роли, как и пользователи, определяются в файле /etc/passwd:
bleonard@opensolaris:~$ grep "root" /etc/passwd root:x:0:0:Super-User:/root:/usr/bin/bash
Однако, по-умолчанию в OpenSolaris root определен как роль, а не как пользователь.
bleonard@opensolaris:~$ grep "root:" /etc/user_attr root::::type=role;auths=solaris.*,solaris.grant;profiles=All;lock_after_retries=no;min_label=admin_low;clearance=admin_high
Пользователь может активировать роль. Это похоже на надевание костюма. Однако, Вы на самом деле становитесь тем, что одеваете. Роль активируется командой su. Необходимо ввести пароль root, который Вы назначили при установке:
bleonard@opensolaris:~$ su root Password: bleonard@opensolaris:~#
Профиль
Профиль - это именованное множество полномочий, которые могут быть выполнены. По этой причине они еще называются выполняемые профили. Запуск производится с помощью команды pfexec, сокращение от «profile execution». Многие сравнивают pfexec с sudo, и они часто могут использоваться заменяя друг друга. Но когда Вы на самом деле поймете pfexec, Вы осознаете, насколько более мощной она может быть.
Команды, которые позволяет запускать данный профиль, определяются в файле /etc/security/exec_attr.
bleonard@opensolaris:~$ grep "Primary Administrator" /etc/security/exec_attr Primary Administrator:suser:cmd:::*:uid=0;gid=0
Звездочка »*» означает, что Primary Administrator может запускать любые команды, и они будут работать от имени пользователя root (uid=0).
Полномочия, связанные с профилем, задаются в файле /etc/security/prof_attr:
bleonard@opensolaris:~$ grep "Primary Administrator" /etc/security/prof_attr Primary Administrator:::Can perform all administrative tasks:auths=solaris.*,solaris.grant;help=RtPriAdmin.html
Полномочия
Полномочия дают Вам привилегию на выполнение некоторой операции. Привилегия со звездочкой solaris.* дает Primary Administrator право выполнять любую операцию. Полный список привилегий можно посмотреть в /etc/security/auth_attr.
RBAC в действии
Чтобы понять, как все это работает, давайте поэкспериментируем с ролями и профилями.
Действия с ролями
Давайте уберем роль root у пользователя bleonard:
bleonard@opensolaris:~$ pfexec usermod -R "" bleonard UX: usermod: bleonard is currently logged in, some changes may not take effect until next login. bleonard@opensolaris:~$ grep "bleonard" /etc/user_attr bleonard::::type=normal;profiles=Primary Administrator
Теперь не получится активировать роль root:
bleonard@opensolaris:~$ su root Password: Roles can only be assumed by authorized users su: Sorry
Но так как bleonard все еще Primary Administrator, он может получить привилегии root используя pfexec:
bleonard@opensolaris:~$ pfexec su root bleonard@opensolaris:~#
Возвращаем роль root обратно:
bleonard@opensolaris:~# usermod -R root bleonard UX: usermod: bleonard is currently logged in, some changes may not take effect until next login.
Действия с профилями
Давайте удалим профиль Primary Administrator у пользователя bleonard (если Вы пытаетесь сделать это на своей системе, убедитесь, что Вы вернули роль root, иначе можете совсем потерять доступ root).
bleonard@opensolaris:~$ pfexec usermod -P "" bleonard UX: usermod: bleonard is currently logged in, some changes may not take effect until next login.
Теперь давайте попробуем вернуть профиль:
bleonard@opensolaris:~$ pfexec usermod -P "Primary Administrator" bleonard UX: usermod: ERROR: Permission denied.
К счастью, Вы все еще можете активировать роль root:
bleonard@opensolaris:~$ su Password: bleonard@opensolaris:~# usermod -P "Primary Administrator" bleonard UX: usermod: bleonard is currently logged in, some changes may not take effect until next login.
Простой пользовательский интерфейс
Наконец, есть простой пользовательский интерфейс для управления пользователями и ролями. Вы найдете его в System > Administration > Users and Groups:
Дополнительные материалы:
Похожие записи:
- pfexec – удобная утилита Solaris
- Конвертируем пользователя root в роль
- Как определить сервис по номеру PID
- Аудит
Рубрики: Безопасность, Полезные команды




удобная система, жаль в линуксе подобного нет ((
Я не большой специалист по Linux, но там RBAC тоже вроде есть. Например: http://www.ibm.com/developerworks/ru/library/l-rbac-selinux/
ага, настолько удобная, что практически никто ее в соляре не использует. если бы роли были изначально активированы – тогда да. а так – sudo аналогичная функциональность + меньше гемора с настройкой и потдержкой.
Согласен, реализация RBAC в Solaris не слишком удобна. Все запутано из-за большого количества связанных компонентов – роли, профили, привилегии. Но RBAC используют, хотя и не очень часто. В моем опыте RBAC встречался чаще, чем sudo в Solaris
. Функциональность у них действительно похожая, а что использовать – зависит от ваших предпочтений.