Европейский Университет в Санкт-Петербурге
Опубликован: 19.10.2005 | Доступ: свободный | Студентов: 1763 / 169 | Оценка: 4.31 / 3.82 | Длительность: 18:28:00
Лекция 11:

Ролевое управление доступом (RBAC)

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Аннотация: Лекция рассматривает специфичную для Solaris возможность делегирования административных ролей от пользователя root обычным пользователям.

Зачем нужно ролевое управление доступом

Слабым местом систем UNIX с давних пор была невозможность делегировать часть полномочий системного администратора другим пользователям. Мы хорошо знаем, как передаются полномочия в системах Windows: существуют предопределенные группы, которым дано право выполнять некоторые определенные администраторские действия (Printer Operator, Backup Operator и т.п.). В UNIX для делегирования части администраторских прав в свое время использовалась программа sudo. Второй выход заключался в том, чтобы установить в правах доступа к некоей административной программе типа useradd бит SUID, чтобы доверенный пользователь мог запустить ее от имени владельца, т.е. пользователя root.

Оба этих решения не являются совершенными: некоторые виды операций трудно выполнить, имея право запуска отдельных программ. Например, управление учетными записями пользователей не ограничивается их добавлением, и разрешения запускать useradd недостаточно для доверенного пользователя, чтобы помогать системному администратору во всем, что связано с управлением пользователями.

В Solaris, начиная с версии 8, была введена новая для UNIX система управления доступом - RBAC (Role-Based Access Control). Основанное на ролях управление доступом имеет такую же функциональность, как разнообразие групп с некоторыми административными правами в Windows. Смысл его в том, что любому пользователю может быть назначена роль. Ответственность и право выполнения части администраторских функций делегированы роли, и пользователь имеет право ее играть.

Что такое роль

Физически роль представляет собой учетную запись специального типа, пользователь не может зайти в систему, указав имя роли, но может "переключиться в роль ", дав команду

su имя_роли

Можно сказать, что роль - это псевдопользователь, который обладает правами большими, чем обычный пользователь, но меньшими, чем root. Каждой роли могут быть делегированы те или иные права путем назначения ей профилей прав или авторизаций (наборов прав).

Компоненты RBAC

Рассмотрим все компоненты RBAC последовательно, начиная с пользователей и ролей.

Всего существует пять компонентов: пользователи, роли, профили, авторизации, команды.

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

Пользователи - это те самые обычные пользователи, о которых рассказывалось в лекциях 1, 2 и 4. Они имеют самые обычные учетные записи. Пользователям может быть дано право играть ту или иную роль, согласно записям в файле /etc/security/user_attr.

Роли

Роли могут быть назначены пользователям. Предопределенных ролей не существует, но можно легко создать новые роли, назначив им один из трех предопределенных профилей. Предполагается, что системный администратор будет самостоятельно создавать роли и назначать их, по мере необходимости, тем или иным пользователям. Соответствие ролей и пользователей (т.е. разрешение конкретному пользователю играть ту или иную роль ) описывается файлом /etc/user_attr:

# Copyright (c) 1999-2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# /etc/user_attr
#
# user attributes. see user_attr(4)
#
#pragma ident "@(#)user_attr 1.5 01/12/11 SMI"
#
root::::auths=solaris.*,solaris.grant;profiles=All
lp::::profiles=Printer Management
adm::::profiles=Log Management
printmgr::::type=role;profiles=All

Значащих полей в этом файле всего два: имя пользователя (или роли ) и атрибуты. Среди атрибутов выделяется атрибут type: он имеет значение role для записи о роли и normal - о пользователе. По умолчанию подразумевается запись о пользователе.

Формат записей в /etc/user_attr следующий:

user:qualifier:res1:res2:attr

где:

user - имя пользователя, такое как в /etc/passwd;

qualifier - зарезервировано;

res1 - зарезервировано;

res2 - зарезервировано;

attr - атрибуты, разделенные точкой с запятой, вида имя=значение ; допустимые атрибуты - это auths, profiles, roles, type and project.

Атрибут auths предназначен для перечисления предопределенных прав (authorizations), в том числе и групп прав, где значение "все возможные" представляется символом "звездочка" ( * ), например,

auths=solaris.printer.*

обозначает все возможные права набора прав solaris.printer.

Атрибут roles позволяет разрешить пользователю играть различные роли, здесь они перечисляются через запятую. Если в строке, описывающей пользователя, не указан атрибут roles, пользователю запрещается играть какие бы то ни было роли. Например, запись о ролях может быть такой:

roles=printmgrs, useradmin

Атрибут type служит для определения того, относится ли текущая запись к обычному пользователю или же описывает роль. Для обычного пользователя следует указывать атрибут

type=normal

и для роли -

type=role

Аналогичным образом может быть назначен проект ( project ) и профиль прав ( profiles ) для пользователя или роли.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >