Понимаем RBAC

23 Июль 2010

Перевод статьи «Understanding RBAC«.

Role Based Access Control (RBAC) – функциональность OpenSolaris (Прим. переводчика. И просто Solaris, начиная с версии Solaris 8), предоставляющая большие возможности. Однако, ее трудно понять из-за обилия раздельных компонентов, связанных между собой. В этой записи я попытаюсь написать, что понял я.

Сначала несколько определений:

Термин Описание Связанные файлы Команды
user
(пользователь)
Пользователь системы /etc/passwd
/etc/user_attr
useradd
usermod
role
(роль)
Именованное множество полномочий, которые могут быть активированы /etc/passwd
/etc/user_attr
roleadd
rolemod
roles
profile
(профиль)
Именованное множество полномочий, которые могут быть выполнены /etc/security/exec_attr
/etc/security/prof_attr
profiles
pfexec
authorization
(полномочия)
Привилегии на выполнение некоторых операций в системе /etc/security/auth_attr auths

Пользователь

Пользователь в системе. Основная информация об учетных записях пользователей определяется в /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:

Установка ролей пользователя в Solaris

Дополнительные материалы:

Похожие записи:

  1. pfexec – удобная утилита Solaris
  2. Конвертируем пользователя root в роль
  3. Как определить сервис по номеру PID
  4. Аудит

Рубрики: Безопасность, Полезные команды

Оставить комментарий

Лента комментариевКомментарии (4)

  1. m0ps

    удобная система, жаль в линуксе подобного нет ((

  2. admin

    Я не большой специалист по Linux, но там RBAC тоже вроде есть. Например: http://www.ibm.com/developerworks/ru/library/l-rbac-selinux/

  3. щцук

    ага, настолько удобная, что практически никто ее в соляре не использует. если бы роли были изначально активированы – тогда да. а так – sudo аналогичная функциональность + меньше гемора с настройкой и потдержкой.

  4. admin

    Согласен, реализация RBAC в Solaris не слишком удобна. Все запутано из-за большого количества связанных компонентов – роли, профили, привилегии. Но RBAC используют, хотя и не очень часто. В моем опыте RBAC встречался чаще, чем sudo в Solaris :) . Функциональность у них действительно похожая, а что использовать – зависит от ваших предпочтений.

Оставить комментарий

Feed

http://solarisblog.ru / Понимаем RBAC