Администрирование ОС Solaris 9

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

Разбить на страницы
Показывать лекцию целиком

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

Слабым местом систем 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 ) для пользователя или роли.

Профили прав

Профиль в данном контексте - это набор свойств, который можно назначить той или иной роли . В англоязычной литературе профиль, используемый в RBAC, называется профилем прав (Rights Profile). Профиль прав объединяет различные авторизации с тем, чтобы можно было назначить той или иной роли логически связанный набор авторизаций (например, профиль Operator может быть назначен роли, которая нужна для выполнения простых задач администрирования: выполнения резервных копий, управления доступом к принтеру и свойствами принтера). Информация о профилях хранится в файле /etc/security/prof_attr, поля в котором имеют следующие значения:

profname:res1:res2:desc:attr

profname - это имя профиля ; регистр букв в имени имеет значение;

res1, res2 - зарезервированные поля;

desc - описание профиля, в котором указывается смысл данного профиля ; это описание должно быть пригодно в качестве пояснения назначения профиля для пользователей приложений высокого уровня (типа Solaris Management Console);

attr - атрибуты в таком же виде, как и в других файлах RBAC, допустимые атрибуты - это auths и help. Значением атрибута auths является список наборов прав ( авторизаций ) из числа определенных в файле /etc/security/auth_attr. Атрибут help требует указания страницы в формате HTML, содержащей справку по данному профилю.

В нижеследующем примере файла /etc/security/prof_attr опущены некоторые строки, каждый профиль прав описан отдельным абзацем, поскольку в реальном файле он описывается одной длинной строкой, которая не умещается на книжной странице:

#
# Copyright (c) 1999-2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# /etc/security/prof_attr
#
# profiles attributes. see prof_attr(4)
#
#ident "@(#)prof_attr 1.1 01/10/23 SMI"
#
iPlanet Directory Management:::Manage the iPlanet directory
server:help=RtiDSMngmnt.html

Media Restore:::Restore files and file systems from
backups:help=RtMediaRestore.html

Name Service Security:::Security related name service
scripts/commands:help=RtNameServiceSecure.html

Device Management:::Control Access to Removable
Media:auths=solaris.device.*,solaris.admin.serialmgr.*;
help=RtDeviceMngmnt.html

Media Backup:::Backup files and file
systems:help=RtMediaBkup.html

User Security:::Manage passwords,
clearances:auths=solaris.role.*,solaris.profmgr.*,
solaris.admin.usermgr.*;help=RtUserSecurity.html

Audit Control:::Configure BSM
auditing:auths=solaris.audit.config,solaris.jobs.admin,
solaris.admin.logsvc.purge,solaris.admin.logsvc.read;
help=RtAuditCtrl.html

User Management:::Manage users, groups, home
directory:auths=solaris.profmgr.read,
solaris.admin.usermgr.write,solaris.admin.usermgr.read;
help=RtUserMngmnt.html

Mail Management:::Manage sendmail 
queues:help=RtMailMngmnt.html
Printer Management:::Manage printers, daemons,
spooling:help=RtPrntAdmin.html;auths=solaris.admin.printer.read,
solaris.admin.printer.modify,solaris.admin.printer.delete

Log Management:::Manage log files:help=RtLogMngmnt.html
Audit Review:::Review BSM auditing
logs:auths=solaris.audit.read;help=RtAuditReview.html

Software Installation:::Add application software to the
system:help=RtSoftwareInstall.html;auths=solaris.admin.
prodreg.read,solaris.admin.prodreg.modify,solaris.admin.
prodreg.delete,solaris.admin.dcmgr.admin,solaris.admin.
dcmgr.read,solaris.admin.patchmgr.*

Network Security:::Manage network and host
security:help=RtNetSecure.html;auths=solaris.network.*

Operator:::Can perform simple administrative tasks:
profiles=Printer Management,Media Backup,All;
help=RtOperator.html

FTP Management:::Manage the FTP
server:help=RtFTPMngmnt.html

Project Management:::Manage Solaris
projects:auths=solaris.project.read,solaris.project.write;
help=RtProjManagement.html

DHCP Management:::Manage the DHCP
service:auths=solaris.dhcpmgr.*;help=RtDHCPMngmnt.html

System Administrator:::Can perform most non-security
administrative tasks:profiles=Audit Review,Printer
Management,Cron Management,Device Management,File System
Management,Mail Management,Maintenance and Repair,Media
Backup,Media Restore,Name Service Management,Network
Management,Object Access Management,Process
Management,Software Installation,User
Management,All;help=RtSysAdmin.html

Basic Solaris User:::Automatically assigned
rights:auths=solaris.profmgr.read,solaris.jobs.users,solaris.
mail.mailq,solaris.admin.usermgr.read,solaris.admin.logsvc.read,
solaris.admin.fsmgr.read,solaris.admin.serialmgr.read,
solaris.admin.diskmgr.read,solaris.admin.procmgr.user,
solaris.compsys.read,solaris.admin.printer.read,solaris.admin.
prodreg.read,solaris.admin.dcmgr.read,solaris.snmp.read,
solaris.project.read,solaris.admin.patchmgr.read,,solaris.
network.hosts.read,solaris.admin.volmgr.read;profiles=All;
help=RtDefault.html

Авторизации

Авторизация представляет собой право, включенное в профиль или данное пользователю, выполнять определенные действия в системе. В Solaris доступны только предопределенные авторизации, добавить новую нельзя. Список авторизаций хранится в файле /etc/security/auth_attr:

#
# Copyright (c) 2001 by Sun Microsystems, Inc. All rights
reserved.
#
# /etc/security/auth_attr
#
# authorization attributes. see auth_attr(4)
#
#pragma ident "@(#)auth_attr 1.101/03/19 SMI"
#
solaris.admin.volmgr.:::Logical Volume Manager::
solaris.admin.volmgr.write:::Manage Logical
   Volumes::help=AuthVolmgrWrite.html
solaris.admin.volmgr.read:::View Logical
   Volumes::help=AuthVolmgrRead.html
solaris.admin.printer.modify:::Update Printer
   Information::help=AuthPrinterModify.html
solaris.admin.serialmgr.read:::View Serial
   Ports::help=AuthSerialmgrRead.html
solaris.admin.logsvc.:::Log
   Viewer::help=AuthLogsvcHeader.html
solaris.admin.procmgr.user:::Manage Owned
   Processes::help=AuthProcmgrUser.html
solaris.admin.usermgr.read:::View Users and
   Roles::help=AuthUsermgrRead.html
solaris.profmgr.:::Rights::help=ProfmgrHeader.html
solaris.admin.procmgr.admin:::Manage All
   Processes::help=AuthProcmgrAdmin.html
solaris.admin.logsvc.write:::Manage Log
   Settings::help=AuthLogsvcWrite.html
solaris.admin.serialmgr.:::Serial Port
   Manager::help=AuthSerialmgrHeader.html
solaris.admin.fsmgr.write:::Mount and Share
   Files::help=AuthFsmgrWrite.html
solaris.admin.dcmgr.read:::View OS Services, Patches and
   Diskless Clients::help=AuthDcmgrRead.html
solaris.device.cdrw:::CD-R/RW Recording
   Authorizations::help=DevCDRW.html
solaris.admin.usermgr.:::User
   Accounts::help=AuthUsermgrHeader.html
solaris.role.delegate:::Assign Owned
   Roles::help=AuthRoleDelegate.html
solaris.admin.patchmgr.read:::View
   Patches::help=AuthPatchmgrRead.html
solaris.project.read:::View
   Projects::help=AuthProjmgrRead.html
solaris.profmgr.write:::Manage
   Rights::help=AuthProfmgrWrite.html
solaris.system.shutdown:::Shutdown the
   System::help=SysShutdown.html
solaris.device.grant:::Delegate Device
   Administration::help=DevGrant.html
solaris.:::All Solaris
   Authorizations::help=AllSolAuthsHeader.html
solaris.project.write:::Manage
   Projects::help=AuthProjmgrWrite.html
solaris.admin.serialmgr.modify:::Manage Serial
   Ports::help=AuthSerialmgrModify.html
solaris.admin.patchmgr.:::Patch Manager::
solaris.admin.diskmgr.write:::Manage
   Disks::help=AuthDiskmgrWrite.html
solaris.device.revoke:::Revoke or Reclaim
Device::help=DevRevoke.html
solaris.jobs.grant:::Delegate Cron  At
   Administration::help=JobsGrant.html
solaris.dhcpmgr.write:::Modify DHCP Service
   Configuration::help=DhcpmgrWrite.html
solaris.network.hosts.write:::Manage Computers and
   Networks::help=NetworkHostsWrite.html
solaris.mail.mailq:::Mail Queue::help=MailQueue.html
solaris.admin.dcmgr.clients:::Manage Diskless
   Clients::help=AuthDcmgrClients.html
solaris.project.:::Solaris Projects::
solaris.admin.logsvc.read:::View Log
   Files::help=AuthLogsvcRead.html
solaris.admin.fsmgr.read:::View Mounts and
   Shares::help=AuthFsmgrRead.html
solaris.admin.fsmgr.:::Mounts and
   Shares::help=AuthFsmgrHeader.html
solaris.jobs.user:::Manage Owned
   Jobs::help=AuthJobsUser.html
solaris.role.assign:::Assign All
   Roles::help=AuthRoleAssign.html
solaris.network.hosts.:::Computers and
   Networks::help=NetworkHostsHeader.html
solaris.admin.usermgr.write:::Manage
   Users::help=AuthUsermgrWrite.html
solaris.compsys.read:::View Computer System
   Information::help=AuthCompSysRead.html
solaris.audit.:::Audit Management::help=AuditHeader.html
solaris.profmgr.read:::View
   Rights::help=AuthProfmgrRead.html
solaris.device.config:::Configure Device
   Attributes::help=DevConfig.html
solaris.profmgr.delegate:::Assign Owned
   Rights::help=AuthProfmgrDelegate.html
solaris.admin.printer.delete:::Delete Printer
   Information::help=AuthPrinterDelete.html
solaris.admin.dcmgr.admin:::Manage OS Services and
   Patches::help=AuthDcmgrAdmin.html
solaris.admin.printer.:::Printer
   Information::help=AuthPrinterHeader.html
solaris.admin.diskmgr.:::Disk
   Manager::help=AuthDiskmgrHeader.html
solaris.role.write:::Manage Roles::help=AuthRoleWrite.html
   solaris.role.:::Roles::help=RoleHeader.html
solaris.admin.patchmgr.write:::Add and Remove
   Patches::help=AuthPatchmgrWrite.html
solaris.mail.:::Mail::help=MailHeader.html
solaris.admin.procmgr.:::Process
   Manager::help=AuthProcmgrHeader.html
solaris.device.allocate:::Allocate
   Device::help=DevAllocate.html
solaris.system.:::Machine
   Administration::help=SysHeader.html
solaris.compsys.write:::Manage Computer System
   Information::help=AuthCompSysWrite.html
solaris.compsys.:::Computer System
Information::help=AuthCompSysHeader.html
solaris.network.hosts.read:::View Computers and
   Networks::help=NetworkHostsRead.html
solaris.device.:::Device
   Allocation::help=DevAllocHeader.html
solaris.snmp.:::SNMP Management::help=AuthSnmpHeader.html
solaris.admin.dcmgr.:::OS Server
   Manager::help=AuthDcmgrHeader.html
solaris.dhcpmgr.:::DHCP Service
   Management::help=DhcpmgrHeader.html
solaris.login.enable:::Enable
   Logins::help=LoginEnable.html
solaris.admin.logsvc.purge:::Remove Log
   Files::help=AuthLogsvcPurge.html
solaris.audit.read:::Read Audit Trail::help=AuditRead.html
solaris.login.remote:::Remote Login::help=LoginRemote.html
solaris.system.date:::Set Date  Time::help=SysDate.html
solaris.admin.serialmgr.delete:::Delete Serial
   Ports::help=AuthSerialmgrDelete.html
solaris.audit.config:::Configure
   Auditing::help=AuditConfig.html
solaris.jobs.admin:::Manage All
   Jobs::help=AuthJobsAdmin.html
solaris.grant:::Grant All Solaris
   Authorizations::help=PriAdmin.html
solaris.jobs.:::Job Scheduler::help=JobHeader.html
solaris.profmgr.execattr.write:::Manage
   Commands::help=AuthProfmgrExecattrWrite.html
solaris.admin.usermgr.pswd:::Change
   Password::help=AuthUserMgrPswd.html
solaris.login.:::Login Control::help=LoginHeader.html
solaris.snmp.write:::Set SNMP
   Information::help=AuthSnmpWrite.html
solaris.admin.printer.read:::View Printer
   Information::help=AuthPrinterRead.html
solaris.profmgr.assign:::Assign All
   Rights::help=AuthProfmgrAssign.html
solaris.snmp.read:::Get SNMP
   Information::help=AuthSnmpRead.html
solaris.admin.diskmgr.read:::View
   Disks::help=AuthDiskmgrRead.html

Значения полей в этом файле таковы:

name:res1:res2:short_desc:long_desc:attr

name - обязательное поле, имя набора прав ( авторизации ). Это уникальное имя, которое получается из комбинации префикса и суффикса, где префикс - это часть имени до самой правой точки.

Префикс - наборов прав, придуманных компанией Sun, всегда начинается со слова .)

Суффикс - это слово, определяющее детальный смысл авторизации. Слово grant предполагает право обладающего этой авторизацией пользователя делегировать свои наборы прав ( авторизации ) другим.

Команды

Файл /etc/security/exec_attr представляет собой базу данных атрибутов запуска программ, ассоциированных с тем или иным профилем (из prof_attr);

# execution attributes for profiles. see exec_attr(4)
#
#pragma ident "@(#)exec_attr 1.1 01/10/23 SMI"
#
#
iPlanet Directory Management:suser:cmd:::
   /usr/sbin/directoryserver:uid=0
Software Installation:suser:cmd:::/usr/bin/pkgparam:uid=0
Network Management:suser:cmd:::/usr/sbin/in.named:uid=0
File System Management:suser:cmd:::/usr/sbin/mount:uid=0
FTP Management:suser:cmd:::/usr/sbin/ftprestart:euid=0
Software Installation:suser:cmd:::/usr/bin/pkgtrans:uid=0
Name Service Security:suser:cmd:::/usr/bin/nisaddcred:euid=0
Mail Management:suser:cmd:::/usr/sbin/makemap:euid=0
Software Installation:suser:cmd:::/usr/sbin/install:euid=0
Process Management:suser:cmd:::/usr/bin/crontab:euid=0
Audit Review:suser:cmd:::/usr/sbin/praudit:euid=0
Name Service Security:suser:cmd:::/usr/sbin/ldapclient:uid=0
Media Backup:suser:cmd:::/usr/bin/mt:euid=0

Формат записей в файле /etc/security/exec_attr предполагает обязательное указание имени профиля прав, жестко установленных значений полей policy и cmd, идентификатора и, при необходимости, атрибутов:

name:policy:type:res1:res2:id:attr

name - имя профиля прав (помните регистр букв в имени важен!);

policy - политика, ассоциированная с профилем прав, единственное допустимое значение этого поля в настоящее время - suser ;

type - тип объекта, определенного в данной записи, единственное допустимое значение этого поля в настоящее время - cmd ;

id - строка, являющаяся уникальным идентификатором объекта, описанного в данной записи; для типа cmd этот идентификатор, кроме того, является полным именем файла выполняемой программы или символом звездочка ( * ), который разрешает запустить любую команду. Можно указывать звездочку в конце полного имени файла, что будет означать любую программу в соответствующем каталоге;

attr - атрибуты вида имя=значение, разделенные точкой с запятой; допустимые варианты атрибутов: euid, uid, egid и gid.

Все компоненты RBAC могут быть использованы как в виде файлов, так и в виде карт NIS или таблиц NIS+. Соответственно, в файле /etc/nsswitch.conf понадобится указать порядок обращения к различным источникам.

Итак, схема назначений прав в системе ролей следующая: определенные программы могут быть запущены не только пользователем root, что традиционно, но и другими пользователями. Для этого существуют права ( авторизации, authorizations), которые могут быть назначены напрямую пользователям (что нежелательно с организационной точки зрения) или профилям прав. Профиль прав, представляющий собой набор определенных прав, назначается роли. Пользователь может претендовать на то, что он будет играть ту или иную роль, если он знает пароль этой роли и может "перевоплотиться" в нее с помощью команды su. Рис. 21.1 иллюстрирует взаимоотношения компонентов RBAC между собой.

Команды, поддерживающие роли

Следующие команды проверяют права (authorizations) пользователя, который пытается их выполнить, и поддерживают систему RBAC. Это значит, что выполнить эти команды может не только root, но и другие пользователи, которые начали играть определенную роль, "переключившись" в нее:

(рис 21.1) Отношения между компонентами RBAC
  • все программы, запускаемые внутри как приложения из Solaris Management Console;
  • программы запланированного запуска at, atq, batch, crontab ;
  • команды, связанные с работой физических устройств - allocate, deallocate, list_devices, cdrw.
  • Команды управления ролями

    Управление ролями производится путем редактирования файлов в каталоге /etc/security или посредством программ roleadd, rolemod и roledel. Кроме того, управлять ролями и назначением прав в RBAC можно с помощью Solaris Management Console.

    Можно, например, добавить роль printmgr с назначением прав по умолчанию:

    roleadd printmgr

    А с помощью команды

    roleadd -D

    эти самые установки по умолчанию можно увидеть воочию:

    roleadd -D
    group=other,1 project=default,3 basedir=/home
    skel=/etc/skel shell=/bin/pfsh inactive=0
    expire= auths= profiles=All

    Для выполнения команд, предполагающих применение ролей, следует воспользоваться специальными командными процессорами, в которых реализована работа с ролями. Имеется набор таких командных процессоров, функционально эквивалентных своим "безролевым" аналогам: /bin/pfsh, /bin/pfcsh, или /bin/pfksh. Эти командные процессоры следует назначать в качестве login shell для ролей.

    Управление ролями в Solaris Management Console

    В Solaris Management Console возможно управление ролями (пункт Administrative Roles) в графическом интерфейсе. Для этого потребуется ввести имя и пароль роли, которая имеет право на такое администрирование (часто это пользователь root).

    Рисунок 21.2 иллюстрирует сказанное: в главном меню Solaris Management Console следует выбрать Users, а для администрирования ролей в открывшемся окне справа - Administrative Roles.

    (рис 21.2) Главное меню Solaris Management Console
    Страницы:

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

    Слабым местом систем 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 ) для пользователя или роли.

    Профили прав

    Профиль в данном контексте - это набор свойств, который можно назначить той или иной роли . В англоязычной литературе профиль, используемый в RBAC, называется профилем прав (Rights Profile). Профиль прав объединяет различные авторизации с тем, чтобы можно было назначить той или иной роли логически связанный набор авторизаций (например, профиль Operator может быть назначен роли, которая нужна для выполнения простых задач администрирования: выполнения резервных копий, управления доступом к принтеру и свойствами принтера). Информация о профилях хранится в файле /etc/security/prof_attr, поля в котором имеют следующие значения:

    profname:res1:res2:desc:attr

    profname - это имя профиля ; регистр букв в имени имеет значение;

    res1, res2 - зарезервированные поля;

    desc - описание профиля, в котором указывается смысл данного профиля ; это описание должно быть пригодно в качестве пояснения назначения профиля для пользователей приложений высокого уровня (типа Solaris Management Console);

    attr - атрибуты в таком же виде, как и в других файлах RBAC, допустимые атрибуты - это auths и help. Значением атрибута auths является список наборов прав ( авторизаций ) из числа определенных в файле /etc/security/auth_attr. Атрибут help требует указания страницы в формате HTML, содержащей справку по данному профилю.

    В нижеследующем примере файла /etc/security/prof_attr опущены некоторые строки, каждый профиль прав описан отдельным абзацем, поскольку в реальном файле он описывается одной длинной строкой, которая не умещается на книжной странице:

    #
    # Copyright (c) 1999-2001 by Sun Microsystems, Inc.
    # All rights reserved.
    #
    # /etc/security/prof_attr
    #
    # profiles attributes. see prof_attr(4)
    #
    #ident "@(#)prof_attr 1.1 01/10/23 SMI"
    #
    iPlanet Directory Management:::Manage the iPlanet directory
    server:help=RtiDSMngmnt.html
    
    Media Restore:::Restore files and file systems from
    backups:help=RtMediaRestore.html
    
    Name Service Security:::Security related name service
    scripts/commands:help=RtNameServiceSecure.html
    
    Device Management:::Control Access to Removable
    Media:auths=solaris.device.*,solaris.admin.serialmgr.*;
    help=RtDeviceMngmnt.html
    
    Media Backup:::Backup files and file
    systems:help=RtMediaBkup.html
    
    User Security:::Manage passwords,
    clearances:auths=solaris.role.*,solaris.profmgr.*,
    solaris.admin.usermgr.*;help=RtUserSecurity.html
    
    Audit Control:::Configure BSM
    auditing:auths=solaris.audit.config,solaris.jobs.admin,
    solaris.admin.logsvc.purge,solaris.admin.logsvc.read;
    help=RtAuditCtrl.html
    
    User Management:::Manage users, groups, home
    directory:auths=solaris.profmgr.read,
    solaris.admin.usermgr.write,solaris.admin.usermgr.read;
    help=RtUserMngmnt.html
    
    Mail Management:::Manage sendmail 
    queues:help=RtMailMngmnt.html
    Printer Management:::Manage printers, daemons,
    spooling:help=RtPrntAdmin.html;auths=solaris.admin.printer.read,
    solaris.admin.printer.modify,solaris.admin.printer.delete
    
    Log Management:::Manage log files:help=RtLogMngmnt.html
    Audit Review:::Review BSM auditing
    logs:auths=solaris.audit.read;help=RtAuditReview.html
    
    Software Installation:::Add application software to the
    system:help=RtSoftwareInstall.html;auths=solaris.admin.
    prodreg.read,solaris.admin.prodreg.modify,solaris.admin.
    prodreg.delete,solaris.admin.dcmgr.admin,solaris.admin.
    dcmgr.read,solaris.admin.patchmgr.*
    
    Network Security:::Manage network and host
    security:help=RtNetSecure.html;auths=solaris.network.*
    
    Operator:::Can perform simple administrative tasks:
    profiles=Printer Management,Media Backup,All;
    help=RtOperator.html
    
    FTP Management:::Manage the FTP
    server:help=RtFTPMngmnt.html
    
    Project Management:::Manage Solaris
    projects:auths=solaris.project.read,solaris.project.write;
    help=RtProjManagement.html
    
    DHCP Management:::Manage the DHCP
    service:auths=solaris.dhcpmgr.*;help=RtDHCPMngmnt.html
    
    System Administrator:::Can perform most non-security
    administrative tasks:profiles=Audit Review,Printer
    Management,Cron Management,Device Management,File System
    Management,Mail Management,Maintenance and Repair,Media
    Backup,Media Restore,Name Service Management,Network
    Management,Object Access Management,Process
    Management,Software Installation,User
    Management,All;help=RtSysAdmin.html
    
    Basic Solaris User:::Automatically assigned
    rights:auths=solaris.profmgr.read,solaris.jobs.users,solaris.
    mail.mailq,solaris.admin.usermgr.read,solaris.admin.logsvc.read,
    solaris.admin.fsmgr.read,solaris.admin.serialmgr.read,
    solaris.admin.diskmgr.read,solaris.admin.procmgr.user,
    solaris.compsys.read,solaris.admin.printer.read,solaris.admin.
    prodreg.read,solaris.admin.dcmgr.read,solaris.snmp.read,
    solaris.project.read,solaris.admin.patchmgr.read,,solaris.
    network.hosts.read,solaris.admin.volmgr.read;profiles=All;
    help=RtDefault.html

    Авторизации

    Авторизация представляет собой право, включенное в профиль или данное пользователю, выполнять определенные действия в системе. В Solaris доступны только предопределенные авторизации, добавить новую нельзя. Список авторизаций хранится в файле /etc/security/auth_attr:

    #
    # Copyright (c) 2001 by Sun Microsystems, Inc. All rights
    reserved.
    #
    # /etc/security/auth_attr
    #
    # authorization attributes. see auth_attr(4)
    #
    #pragma ident "@(#)auth_attr 1.101/03/19 SMI"
    #
    solaris.admin.volmgr.:::Logical Volume Manager::
    solaris.admin.volmgr.write:::Manage Logical
       Volumes::help=AuthVolmgrWrite.html
    solaris.admin.volmgr.read:::View Logical
       Volumes::help=AuthVolmgrRead.html
    solaris.admin.printer.modify:::Update Printer
       Information::help=AuthPrinterModify.html
    solaris.admin.serialmgr.read:::View Serial
       Ports::help=AuthSerialmgrRead.html
    solaris.admin.logsvc.:::Log
       Viewer::help=AuthLogsvcHeader.html
    solaris.admin.procmgr.user:::Manage Owned
       Processes::help=AuthProcmgrUser.html
    solaris.admin.usermgr.read:::View Users and
       Roles::help=AuthUsermgrRead.html
    solaris.profmgr.:::Rights::help=ProfmgrHeader.html
    solaris.admin.procmgr.admin:::Manage All
       Processes::help=AuthProcmgrAdmin.html
    solaris.admin.logsvc.write:::Manage Log
       Settings::help=AuthLogsvcWrite.html
    solaris.admin.serialmgr.:::Serial Port
       Manager::help=AuthSerialmgrHeader.html
    solaris.admin.fsmgr.write:::Mount and Share
       Files::help=AuthFsmgrWrite.html
    solaris.admin.dcmgr.read:::View OS Services, Patches and
       Diskless Clients::help=AuthDcmgrRead.html
    solaris.device.cdrw:::CD-R/RW Recording
       Authorizations::help=DevCDRW.html
    solaris.admin.usermgr.:::User
       Accounts::help=AuthUsermgrHeader.html
    solaris.role.delegate:::Assign Owned
       Roles::help=AuthRoleDelegate.html
    solaris.admin.patchmgr.read:::View
       Patches::help=AuthPatchmgrRead.html
    solaris.project.read:::View
       Projects::help=AuthProjmgrRead.html
    solaris.profmgr.write:::Manage
       Rights::help=AuthProfmgrWrite.html
    solaris.system.shutdown:::Shutdown the
       System::help=SysShutdown.html
    solaris.device.grant:::Delegate Device
       Administration::help=DevGrant.html
    solaris.:::All Solaris
       Authorizations::help=AllSolAuthsHeader.html
    solaris.project.write:::Manage
       Projects::help=AuthProjmgrWrite.html
    solaris.admin.serialmgr.modify:::Manage Serial
       Ports::help=AuthSerialmgrModify.html
    solaris.admin.patchmgr.:::Patch Manager::
    solaris.admin.diskmgr.write:::Manage
       Disks::help=AuthDiskmgrWrite.html
    solaris.device.revoke:::Revoke or Reclaim
    Device::help=DevRevoke.html
    solaris.jobs.grant:::Delegate Cron  At
       Administration::help=JobsGrant.html
    solaris.dhcpmgr.write:::Modify DHCP Service
       Configuration::help=DhcpmgrWrite.html
    solaris.network.hosts.write:::Manage Computers and
       Networks::help=NetworkHostsWrite.html
    solaris.mail.mailq:::Mail Queue::help=MailQueue.html
    solaris.admin.dcmgr.clients:::Manage Diskless
       Clients::help=AuthDcmgrClients.html
    solaris.project.:::Solaris Projects::
    solaris.admin.logsvc.read:::View Log
       Files::help=AuthLogsvcRead.html
    solaris.admin.fsmgr.read:::View Mounts and
       Shares::help=AuthFsmgrRead.html
    solaris.admin.fsmgr.:::Mounts and
       Shares::help=AuthFsmgrHeader.html
    solaris.jobs.user:::Manage Owned
       Jobs::help=AuthJobsUser.html
    solaris.role.assign:::Assign All
       Roles::help=AuthRoleAssign.html
    solaris.network.hosts.:::Computers and
       Networks::help=NetworkHostsHeader.html
    solaris.admin.usermgr.write:::Manage
       Users::help=AuthUsermgrWrite.html
    solaris.compsys.read:::View Computer System
       Information::help=AuthCompSysRead.html
    solaris.audit.:::Audit Management::help=AuditHeader.html
    solaris.profmgr.read:::View
       Rights::help=AuthProfmgrRead.html
    solaris.device.config:::Configure Device
       Attributes::help=DevConfig.html
    solaris.profmgr.delegate:::Assign Owned
       Rights::help=AuthProfmgrDelegate.html
    solaris.admin.printer.delete:::Delete Printer
       Information::help=AuthPrinterDelete.html
    solaris.admin.dcmgr.admin:::Manage OS Services and
       Patches::help=AuthDcmgrAdmin.html
    solaris.admin.printer.:::Printer
       Information::help=AuthPrinterHeader.html
    solaris.admin.diskmgr.:::Disk
       Manager::help=AuthDiskmgrHeader.html
    solaris.role.write:::Manage Roles::help=AuthRoleWrite.html
       solaris.role.:::Roles::help=RoleHeader.html
    solaris.admin.patchmgr.write:::Add and Remove
       Patches::help=AuthPatchmgrWrite.html
    solaris.mail.:::Mail::help=MailHeader.html
    solaris.admin.procmgr.:::Process
       Manager::help=AuthProcmgrHeader.html
    solaris.device.allocate:::Allocate
       Device::help=DevAllocate.html
    solaris.system.:::Machine
       Administration::help=SysHeader.html
    solaris.compsys.write:::Manage Computer System
       Information::help=AuthCompSysWrite.html
    solaris.compsys.:::Computer System
    Information::help=AuthCompSysHeader.html
    solaris.network.hosts.read:::View Computers and
       Networks::help=NetworkHostsRead.html
    solaris.device.:::Device
       Allocation::help=DevAllocHeader.html
    solaris.snmp.:::SNMP Management::help=AuthSnmpHeader.html
    solaris.admin.dcmgr.:::OS Server
       Manager::help=AuthDcmgrHeader.html
    solaris.dhcpmgr.:::DHCP Service
       Management::help=DhcpmgrHeader.html
    solaris.login.enable:::Enable
       Logins::help=LoginEnable.html
    solaris.admin.logsvc.purge:::Remove Log
       Files::help=AuthLogsvcPurge.html
    solaris.audit.read:::Read Audit Trail::help=AuditRead.html
    solaris.login.remote:::Remote Login::help=LoginRemote.html
    solaris.system.date:::Set Date  Time::help=SysDate.html
    solaris.admin.serialmgr.delete:::Delete Serial
       Ports::help=AuthSerialmgrDelete.html
    solaris.audit.config:::Configure
       Auditing::help=AuditConfig.html
    solaris.jobs.admin:::Manage All
       Jobs::help=AuthJobsAdmin.html
    solaris.grant:::Grant All Solaris
       Authorizations::help=PriAdmin.html
    solaris.jobs.:::Job Scheduler::help=JobHeader.html
    solaris.profmgr.execattr.write:::Manage
       Commands::help=AuthProfmgrExecattrWrite.html
    solaris.admin.usermgr.pswd:::Change
       Password::help=AuthUserMgrPswd.html
    solaris.login.:::Login Control::help=LoginHeader.html
    solaris.snmp.write:::Set SNMP
       Information::help=AuthSnmpWrite.html
    solaris.admin.printer.read:::View Printer
       Information::help=AuthPrinterRead.html
    solaris.profmgr.assign:::Assign All
       Rights::help=AuthProfmgrAssign.html
    solaris.snmp.read:::Get SNMP
       Information::help=AuthSnmpRead.html
    solaris.admin.diskmgr.read:::View
       Disks::help=AuthDiskmgrRead.html

    Значения полей в этом файле таковы:

    name:res1:res2:short_desc:long_desc:attr

    name - обязательное поле, имя набора прав ( авторизации ). Это уникальное имя, которое получается из комбинации префикса и суффикса, где префикс - это часть имени до самой правой точки.

    Префикс - наборов прав, придуманных компанией Sun, всегда начинается со слова .)

    Суффикс - это слово, определяющее детальный смысл авторизации. Слово grant предполагает право обладающего этой авторизацией пользователя делегировать свои наборы прав ( авторизации ) другим.

    Команды

    Файл /etc/security/exec_attr представляет собой базу данных атрибутов запуска программ, ассоциированных с тем или иным профилем (из prof_attr);

    # execution attributes for profiles. see exec_attr(4)
    #
    #pragma ident "@(#)exec_attr 1.1 01/10/23 SMI"
    #
    #
    iPlanet Directory Management:suser:cmd:::
       /usr/sbin/directoryserver:uid=0
    Software Installation:suser:cmd:::/usr/bin/pkgparam:uid=0
    Network Management:suser:cmd:::/usr/sbin/in.named:uid=0
    File System Management:suser:cmd:::/usr/sbin/mount:uid=0
    FTP Management:suser:cmd:::/usr/sbin/ftprestart:euid=0
    Software Installation:suser:cmd:::/usr/bin/pkgtrans:uid=0
    Name Service Security:suser:cmd:::/usr/bin/nisaddcred:euid=0
    Mail Management:suser:cmd:::/usr/sbin/makemap:euid=0
    Software Installation:suser:cmd:::/usr/sbin/install:euid=0
    Process Management:suser:cmd:::/usr/bin/crontab:euid=0
    Audit Review:suser:cmd:::/usr/sbin/praudit:euid=0
    Name Service Security:suser:cmd:::/usr/sbin/ldapclient:uid=0
    Media Backup:suser:cmd:::/usr/bin/mt:euid=0

    Формат записей в файле /etc/security/exec_attr предполагает обязательное указание имени профиля прав, жестко установленных значений полей policy и cmd, идентификатора и, при необходимости, атрибутов:

    name:policy:type:res1:res2:id:attr

    name - имя профиля прав (помните регистр букв в имени важен!);

    policy - политика, ассоциированная с профилем прав, единственное допустимое значение этого поля в настоящее время - suser ;

    type - тип объекта, определенного в данной записи, единственное допустимое значение этого поля в настоящее время - cmd ;

    id - строка, являющаяся уникальным идентификатором объекта, описанного в данной записи; для типа cmd этот идентификатор, кроме того, является полным именем файла выполняемой программы или символом звездочка ( * ), который разрешает запустить любую команду. Можно указывать звездочку в конце полного имени файла, что будет означать любую программу в соответствующем каталоге;

    attr - атрибуты вида имя=значение, разделенные точкой с запятой; допустимые варианты атрибутов: euid, uid, egid и gid.

    Все компоненты RBAC могут быть использованы как в виде файлов, так и в виде карт NIS или таблиц NIS+. Соответственно, в файле /etc/nsswitch.conf понадобится указать порядок обращения к различным источникам.

    Итак, схема назначений прав в системе ролей следующая: определенные программы могут быть запущены не только пользователем root, что традиционно, но и другими пользователями. Для этого существуют права ( авторизации, authorizations), которые могут быть назначены напрямую пользователям (что нежелательно с организационной точки зрения) или профилям прав. Профиль прав, представляющий собой набор определенных прав, назначается роли. Пользователь может претендовать на то, что он будет играть ту или иную роль, если он знает пароль этой роли и может "перевоплотиться" в нее с помощью команды su. Рис. 21.1 иллюстрирует взаимоотношения компонентов RBAC между собой.

    Команды, поддерживающие роли

    Следующие команды проверяют права (authorizations) пользователя, который пытается их выполнить, и поддерживают систему RBAC. Это значит, что выполнить эти команды может не только root, но и другие пользователи, которые начали играть определенную роль, "переключившись" в нее:

    (рис 21.1) Отношения между компонентами RBAC
  • все программы, запускаемые внутри как приложения из Solaris Management Console;
  • программы запланированного запуска at, atq, batch, crontab ;
  • команды, связанные с работой физических устройств - allocate, deallocate, list_devices, cdrw.
  • Команды управления ролями

    Управление ролями производится путем редактирования файлов в каталоге /etc/security или посредством программ roleadd, rolemod и roledel. Кроме того, управлять ролями и назначением прав в RBAC можно с помощью Solaris Management Console.

    Можно, например, добавить роль printmgr с назначением прав по умолчанию:

    roleadd printmgr

    А с помощью команды

    roleadd -D

    эти самые установки по умолчанию можно увидеть воочию:

    roleadd -D
    group=other,1 project=default,3 basedir=/home
    skel=/etc/skel shell=/bin/pfsh inactive=0
    expire= auths= profiles=All

    Для выполнения команд, предполагающих применение ролей, следует воспользоваться специальными командными процессорами, в которых реализована работа с ролями. Имеется набор таких командных процессоров, функционально эквивалентных своим "безролевым" аналогам: /bin/pfsh, /bin/pfcsh, или /bin/pfksh. Эти командные процессоры следует назначать в качестве login shell для ролей.

    Управление ролями в Solaris Management Console

    В Solaris Management Console возможно управление ролями (пункт Administrative Roles) в графическом интерфейсе. Для этого потребуется ввести имя и пароль роли, которая имеет право на такое администрирование (часто это пользователь root).

    Рисунок 21.2 иллюстрирует сказанное: в главном меню Solaris Management Console следует выбрать Users, а для администрирования ролей в открывшемся окне справа - Administrative Roles.

    (рис 21.2) Главное меню Solaris Management Console
    Вернуться к учебному плану