учебники, программирование, основы, введение в,

 

Ролевое управление доступом (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/security/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, всегда начинается со слова solaris. Все остальные разработчики должны для соблюдения уникальности имени указывать в качестве начала префикса имя своего домена в Интернете в обратном порядке (например, com.intel.) После имени компании идет дополнительная часть префикса, содержание которой зависит от смысла набора прав. Компоненты дополнительной части разделяются символом "точка"(.)
Суффикс - это слово, определяющее детальный смысл авторизации. Слово 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. иллюстрирует взаимоотношения компонентов RBAC между собой.
Команды, поддерживающие роли
Следующие команды проверяют права (authorizations) пользователя, который пытается их выполнить, и поддерживают систему RBAC. Это значит, что выполнить эти команды может не только root, но и другие пользователи, которые начали играть определенную роль, "переключившись" в нее:
все программы, запускаемые внутри как приложения из 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).
иллюстрирует сказанное: в главном меню Solaris Management Console следует выбрать Users, а для администрирования ролей в открывшемся окне справа - Administrative Roles.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика