Представим работу разных прав доступа применительно к базовым объектам безопасности системы:
ДЕЙСТВИЯ \ ПРАВА |
Нет доступа |
Чтение / Проведение |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Просмотр объекта |
Запрещен |
Разрешен |
Разрешен |
Разрешен |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Редактирование объекта |
Запрещен |
Запрещен |
Запрещен |
Если для пользователя указано право на папку Нет доступа , а на элемент в этой папке доступ разрешён (права Чтение и проведение или Чтение и запись ), то доступ к элементу всё равно будет запрещён. При попытке открыть объект системы, доступный только Администратору , обычному пользователю будет выдано сообщение о нарушении прав доступа. ЗАМЕЧАНИЕ О РАБОТЕ БЕЗОПАСНОСТИ ПРИ РАСЧЕТЕ ФОРМУЛ В ДОКУМЕНТАХ.
См. также: Когда пользователи подключаются к SQL-сервер, действия, которые они могут выполнять, определяются правами, выданными их учетной записи, группе или роли, в которой они состоят. Для выполнения тех или иных действий пользователь должен иметь соответствующие права. Выполнение некоторых действий не требует явного разрешения и доступно по умолчанию. Для предоставления пользователям определенного набора прав можно использовать роли. Создав несколько ролей и предоставив им необходимые права доступа, администратор может просто включать пользователей в соответствующие роли. В этом случае пользователь автоматически получает все права, определенные для роли. Права в SQL-сервер можно разделить на 3 категории: Разрешение для объектов. Работа с данными и выполнение хранимых процедур требует наличие класса доступа, называемого «разрешением для объектов». Разрешение для объектов контролирует возможность выполнения команд Select, Insert, Update и Delete для таблицы представлений. Действия с хранимыми процедурами контролируются разрешением либо запрещением их выполнения, т.е. предоставлением или запрещением команды EXECUTE. Разрешение для команд Transact SQL. Этот класс разрешений контролирует возможность создания объекта в БД, а также создание самой БД и выполнение процедур резервного копирования (Create view, create table и т.д.). Неявное разрешение. Этот класс разрешений контролирует действия, которые могут быть выполнены только членами ролей сервера или владельцами объектов в БД. Неявные разрешения не предоставляются пользователям напрямую, он получает их только при определенных обстоятельствах. Например, пользователь может стать владельцем объекта БД, только если он сам создаст этот объект, либо если другой владелец объекта передаст ему права владения своим объектом. Владелец объекта имеет все права для выполнения любых действий с объектом, при чем эти права нигде явно не указываются. Для конкретного действия, контролируемого разрешением, возможны три варианта состояния доступа: предоставления, запрещения, неявного отклонения. После создания пользователь не имеет никаких прав доступа кроме тех, которые разрешены для специальной роли БД Public. В SQL-сервер существует возможность контролировать права доступа не только на уровне таблиц, но и на уровне колонок. Для предоставления прав доступа используется команда GRANT. {ALL/permissions [..n]} {[(column [..n])] ON | ON {stored_procedure} TO security_account Для разрешения выполнения команд SQL используется следующая инструкция: GRANT {ALL/Statement [..n]} TO security_account [...n] Запрещение доступа При запрещении доступа к данным или командам Transact SQL аннулируются все разрешения на доступ пользователя на любом уровне иерархии. При этом гарантируется, что доступ останется запрещенным независимо от разрешений, предоставленных на более высоком уровне. Но иногда необходимо временно ограничивать доступ определенным пользователям к таблице. Вместо того чтобы убирать разрешение на доступ, в этом случае можно создать роль, в которой будет запрещен доступ к этой таблице, и включить пользователей в эту роль. Для запрещения пользователям доступа к объектам БД используется команда DENY. {ALL/permissions [..n]} {[(column [..n])] ON | ON {table/view} [(column[..n])] | ON {stored_procedure} TO security_account [..n] Для запрещения выполнения команд Transact SQL: DENY {ALL/Statement [..n]} TO security_account [...n] Неявное отклонение доступа Неявное отклонение доступа подобно запрещению доступа с тем отличием, что оно действует только на том уровне, на котором определено. Если пользователю на определенном уровне неявно отклонен доступ, он может получить его на другом уровне иерархии через членство в роли, имеющей право просмотра. Для неявного отклонения доступа к объектам БД используется команда REVOKE. {ALL/permissions [..n]} {[(column [..n])] ON | ON {table/view} [(column[..n])] | ON {stored_procedure} TO security_account [..n] Для неявного отклонения разрешений на использование команд Transact SQL: REVOKE {ALL/Statement [..n]} TO security_account [...n] Значения параметров команд: ALL – означает, что пользователю будут предоставлены все возможные разрешения. Permissions – список доступных операций, которые предоставляются пользователю. Можно предоставлять одновременно несколько разрешений. Statement – предоставление разрешений на выполнение команд Transact SQL. Security_account – указывается имя объекта системы безопасности, которую необходимо включить в роль. Это могут быть как учетные записи SQL-сервер, так и группы пользователей Windows. With Grant Option – использование данного параметра позволяет пользователю, которому предоставляются права, назначать права на доступ к объекту для других пользователей. As role/group – этот параметр позволяет указать участие пользователя в роли, которому предоставляется возможность предоставлять права другим пользователям. Cascade – позволяет отзывать права не только у данного пользователя, но и у всех пользователей, которым он предоставил данные права. SLIC . Упомянутые компоненты управляют использованием объектов, ресурсов, некоторых команд и атрибутов машины.Профиль пользователя определяет следующие параметры:
Назначение большинства приведенных атрибутов очевидно, но первые четыре требуют некоторых пояснений. Класс пользователяКакой именно уровень доступа к системе разрешен пользователю, определяют пять классов пользователей. От класса зависит, какие функции пользователь может выполнять, какие пункты меню и привилегированные команды ему доступны. Перечислим все пять классов, начиная с максимального уровня доступа:
В новой AS/400 для каждого класса пользователей имеется по одному профилю. Заказчик сам решает, кто в его организации будет отвечать за каждой из участков работы. Очевидно, что один и тот же человек может совмещать несколько обязанностей. Объекты, принадлежащие и доступныеПрофиль пользователя содержит два списка. Первый - список всех объектов, которыми владеет данный пользователь, а второй - список объектов, к которым он имеет доступ. Владелец объекта - это пользователь, создавший его. Если профиль пользователя - член профиля группы (подробно будет обсуждаться далее), то в профиле может быть задано, что все созданные пользователем объекты принадлежат группе. Право владения объектом может передаваться. Владелец объекта или любой пользователь, имеющий права на управление этим объектом, может назначать явные (private) права доступа к объекту, а также установить общие (public) права на объект. В профиле пользователя перечислены только принадлежащие ему объекты и объекты со специальными правами. Права доступа к объектамК каждому объекту AS/400 может быть предоставлено восемь видов доступа, а именно:
Эти восемь прав объединены OS/400 в четыре комбинации, чтобы их было легче применять. Конечные пользователи могут использовать и другие сочетания, но большинство все же предпочитает следующие стандартные комбинации:
Привилегированные команды и специальные праваКаждый профиль пользователя содержит информацию о привилегированных командах и специальных правах пользователя. Некоторые привилегированные команды MI могут выполняться только теми пользователями, профили которых разрешают это делать. Например, профиль для начальника защиты создается с возможностью исполнять команду "PWRDWNSYS" (Power Down System), останавливающую работу машины. По очевидным причинам эта привилегированная команда не доступна обычным пользователям. Также есть набор специальных прав, которые могут быть предоставлены лишь избранным пользователям. Эти специальные права связаны с такими операциями, как подвешивание объектов, управление процессами, выполнение операций загрузки/ дампа и использование низкоуровневых сервисных средств. Хотя все привилегированные команды и специальные атрибуты могут быть заданы в профиле пользователя по отдельности, OS/400 объединяет команды и права в шесть групп специальных прав:
Профиль пользователя - это сердце системы защиты AS/400. Он управляет доступом практически ко всем ресурсам системы. Но даже если профиль пользователя не дает последнему прав на некоторый объект или ресурс системы, такие права можно получить иными способами. Далее мы рассмотрим два способа получения дополнительных прав: заимствование прав программой и права группы. Заимствование прав программойВо время исполнения программы профиль пользователя - владельца программы может служить дополнительным источником прав. Возможность заимствования прав позволяет программе выполнять операции , требующие полномочий, которыми пользователь непосредственно не обладает. Вместо того, чтобы предоставлять дополнительные права пользователю, пользовательская прикладная программа вызывает другую программу, владелец которой имеет соответствующие права . Таким образом, заимствование прав программой требует использования концепции стека вызовов . Такое заимствование всегда аддитивно и никогда не уменьшает прав доступа. Заимствование - атрибут программы, задаваемый при ее создании. Если вызываемая программа допускает заимствование прав, то любая вызывающая программа может использовать права владельца во время выполнения вызываемой программы. Программы, работающие в системном состоянии, могут сами задать запрет на заимствование. Программа может также запретить дальнейшее распространение прав. Это означает, что вызывающая программа будет заимствовать права , но эти права не сохранятся для программ, расположенных дальше по цепи вызовов. Ранее мы рассматривали только случаи, когда один пользователь имеет права на один объект . Однако, иногда нужно предоставить одинаковые права группе пользователей, или права на группу объектов. Группирование правНа AS/400 есть три метода группирования прав. Списки прав и профили групп упрощают администрирование защиты, устраняют необходимость индивидуального подхода к пользователям или объектам. Держатели прав ( authority holders ) были введены IBM еще в среде System/36. BC/NW 2009; №2 (15):11BC / NW 2009; №2 (15): 11 . 4 АНАЛИЗ СРЕДСТВ РАЗГРАНИЧЕНИЯ ДОСТУПА К ОБЪЕКТАМ В ОПЕРАЦИОННЫХ СИСТЕМАХ MICROSOFT WINDOWS И LINUX Хорев П.Б. (ГОУВПО «Московский энергетический институт (технический университет)», Россия) Основу политики безопасности для компьютерной системы любой организации составляют правила разграничения доступа к объектам компьютерной системы. Разграничение доступа к компьютерным ресурсам базируется на различных моделях управления доступом. В данном докладе будут представлены результаты сравнительного анализа средств разграничения доступа к объектам операционных систем Microsoft Windows и Linux . Дискреционная модель разграничения доступа предполагает назначение каждому объекту списка контроля доступа, элементы которого определяют права доступа к объекту конкретного субъекта. Правом редактирования дискреционного списка контроля доступа обычно обладают владелец объекта и администратор безопасности. Эта модель отличается простотой реализации, но возможна утечка конфиденциальной информации даже в результате санкционированных действий пользователей. Мандатная модель разграничения доступа предполагает назначение объекту метки (грифа) секретности, а субъекту – уровня допуска. Доступ субъектов к объектам в мандатной модели определяется на основании правил «не читать выше» и «не записывать ниже». Использование мандатной модели, в отличие от дискреционного управления доступом,предотвращает утечку конфиденциальной информации, но снижает производительность компьютерной системы. Ролевая модель разграничения доступа основана на конструировании ролей и назначении их пользователям на основании выполняемых ими конкретных должностных обязанностей. При назначении и использовании ролей возможно наложение динамических и статических ограничений на совмещение разных ролей одним субъектом, одновременное использование одной роли разными субъектами и т.п. Подобный подход к разграничению доступа к объектам позволяет разделить обязанности между конструктором ролей и диспетчером ролей, а также более точно связать права доступа пользователей к объектам компьютерной системы с их обязанностями в организации, исключить избыточность полномочий. В операционных системах Microsoft Windows и операционных системах клона Unix обычно применяется дискреционное управление доступом к объектам. Объекты разграничения доступа в Windows имеют дескриптор безопасности, содержащий информацию о владельце объекта (его идентификаторе безопасности SID , Security Identifier ) и дискреционном списке управления доступом к объекту (Discretionary Access Control List , DACL ), правом редактирования которого обладают владелец объекта и администратор. Владелец файла может лишить администратора права изменения разрешений на доступ к объекту. Администратор обладает специальной привилегией смены владельца на другого пользователя, обладающего такой же специальной привилегией (например, на самого себя). Разграничение доступа к файлам и папкам возможно с помощью Проводника Windows (вкладки Безопасность функций Свойства контекстного меню выделенного объекта), принтеру – с помощью функции Принтеры и факсы Панели управления (вкладки Безопасность функции Свойства выделенного принтера), реестру Windows – с помощью Редактора реестра regedit .exe (функции Разрешения контекстного меню выделенного раздела). Права доступа к объектам в операционной системе Windows делятся на специальные, стандартные (общие) и родовые (generic ). Специальные права зависят от типа объекта разграничения доступа. Например, к файлам и папкам могут применяться следующие специальные права: - обзор папок (выполнение файлов); - содержание папки (чтение данных из файла); - чтение атрибутов; - чтение дополнительных атрибутов; - создание файлов (запись данных в файл); - создание папок (дозапись данных в файл); - запись атрибутов; - запись дополнительных атрибутов; - удаление подпапок и файлов (только для папок). Стандартные права доступа к объектам операционной системы Windows не зависят от типа объекта. Определены следующие стандартные права доступа; - удаление; - чтение разрешений; - смена разрешений (для реестра это право названо Запись DAC ); - смена владельца; - синхронизация (для реестра это право названо Уведомление). Каждое из родовых разрешений представляет собой логическую группу специальных и стандартных разрешений. Например, для файлов и папок родовое право доступа «Изменение» включает все разрешения кроме «Удаление подпапок и файлов», «Смена разрешений» и «Смена владельца». Существующий в Windows механизм наследования облегчает администраторам задачи назначения разрешений и управления ими. Благодаря этому механизму разрешения, установленные для контейнера, автоматически распространяются на все объекты этого контейнера. Например, файлы, создаваемые в папке, наследуют разрешения этой папки. Если требуется предотвратить наследование разрешений, при настройке особых (отличающихся от родовых) разрешений на доступ к родительской папке (разделу реестра) можно выбрать режим «Применять эти разрешения к объектам и контейнерам только внутри этого контейнера» . В случаях, когда необходимо отменить наследование разрешений только для некоторых файлов или подпапок (подразделов реестра), можно отменить режим «Наследовать от родительского объекта применимые к дочерним объектам разрешения, добавляя их к явно заданным в этом окне». Запрещение права доступа имеет более высокий приоритет, чем его разрешение, если только объект не наследует от различных папок противоречащие друг другу значения этих параметров. В таких случаях в силу вступает значение, унаследованное от родительского контейнера, ближайшего к объекту в иерархической структуре. Дочерние объекты наследуют только наследуемые разрешения. К вновь созданным в сеансе пользователя объектам права доступа в Windows назначаются одним из следующих способов: 1. На основе явно заданного субъектом (управляемой пользователем программой) и корректного по форме дескриптора безопасности (например, при вызове системных функций CreateFile или CreateDirectory при создании файлов или папок); 2. На основе механизма наследования (если при создании объекта дескриптор безопасности не задается); 3. Из полученного при начале сеанса маркера доступа субъекта, создающего объект (если наследование невозможно). Индекс файла в Linux содержит информацию о владельце файла (его идентификаторе, User Identifier , UID ), его первичной группе (идентификаторе группы, Group Identifier , GID )и векторе доступа к файлу. В отличие от Windows вектор доступа в Linux состоит всегда из трех элементов, определяющих права доступа к объекту трех категорий субъектов (владельца, членов его группы и всех остальных). Суперпользователь в Linux имеет полные, никем не ограничиваемые права доступа к любому объекту. В Linux существуют только три права доступа – чтение, запись и выполнение. Для каталогов право чтения означает разрешение на просмотр содержания каталога, право записи – разрешение создания, добавления и удаления файлов в каталоге, право выполнения – разрешение на поиск файла в каталоге по его имени. Ограниченность прав доступа к объектам в ОС Linux вынуждает использовать так называемые дополнительные биты доступа в каждой из его частей: - SUID (дополнительный бит доступа в подвекторе прав владельца). Обеспечивает выполнение файла с правами не пользователя, а владельца файла (необходимо, например, для предоставления права записи в файл учетных записей /etc /passwd непривилегированному пользователю при смене им своего пароля). - SGID (дополнительный бит в подвекторе прав членов группы владельца файла). Обеспечивает выполнение файла с правами не пользователя, а членов группы владельца файла. - Sticky (дополнительный бит в подвекторе прав всех остальных пользователей). Запрещает удаление и переименование в общем каталоге файлов, созданных другими пользователям. Управлять значением вектора доступа к вновь созданным в сеансе пользователя файлам в ОС Linux администратор может с помощью системной переменной umask , значение которой может устанавливаться в файлах пользователей.login , .cshrc или.profile либо в системном файле / etc / profile . Значение umask определяет сбрасываемые биты в элементах вектора доступа к создаваемому объекту. Сравнивая реализацию дискреционного разграничения доступа к объектам в операционных системах Microsoft Windows и Linux , можно отметить следующее: - Использование привилегии администратора Windows «Овладение файлами или иными объектами» более безопасно, чем работа в Linux с правами суперпользователя , но менее удобна с точки зрения простоты администрирования. - Большое количество разнообразных прав доступа к объектам в Windows увеличивает гибкость механизма управлении доступом, но повышает риск ошибочного наделения пользователя или группы избыточными правами доступа. - В Linux администратору проще управлять правами доступа к объектам, создаваемым пользователем в ходе своей работы в системе. - В Windows возможно назначение индивидуальных прав доступа к объекту для любого отдельно взятого пользователя или группы. В расширении подсистемы разграничения доступа к файлам для операционной системы Linux − Linux ACLs – реализована возможность настроить индивидуальные права доступа к файлам «с точностью» до отдельного пользователя. В расширении базовой модели безопасности операционной системы Linux (Security-Enhanced Linux − Linux с улучшенной безопасностью, SELinux ) реализовано мандатное разграничение доступа к объектам в рамках модели домен-тип . В этой модели каждый процесс запускается в определённом домене безопасности (с определенным уровнем допуска), а всем объектам ставится в соответствие определённый тип (метка секретности). Список правил, ограничивающих возможности доступа доменов к типам, называется политикой и задаётся один раз в момент установки системы. Описание политики в SELinux − это набор текстовых файлов, которые могут быть скомпилированы и загружены в память ядра Linux при запуске системы. Возможности SELinux по управлению доступом значительно превосходят возможности базовых прав Unix . Например, можно строго ограничить номер сетевого порта, с которым будет связан сетевой сервер или разрешить создание и запись в файл, но не его удаление. Это позволяет ограничить системные службы с помощью явно заданного набора существующих прав. Поддержка ролевого разграничения доступа включена в серверные операционные системы Windows и в серверную операционную систему ALT Linux Castle . Программисты и администраторы Windows -систем могут использовать преимущества ролевого разграничения доступа к объектам с помощью оснастки Диспетчер авторизации (Authorization Manager ) . В соответствии с реализованной в ОС ALT Linux Castle ролевой моделью управления доступом определяются роли и типы, а затем определяется, что может делать та или иная роль с тем или иным типом . Таким образом, создается некоторая абстрактная модель, которая затем связывается к реальным пользователям, программам и файлам. Независимость модели от реальных субъектов и объектов позволяет производить мгновенную перенастройку политики безопасности быстрым изменением связей ролей и (или) типов. Кроме того, это очень удобно для создания готовых решений, например, распределения ролей и типов для защиты содержимого страниц Web-узла. Интересной особенностью является возможность запуска программ с ролью, отличной от роли пользователя, производящего запуск. В результате можно, например, произвести такие настройки, что прямой доступ к диску будут иметь только разрешенные программы, а все остальные пользователи системы (включая администратора) будут лишены такой возможности. В докладе представлены результаты сравнительного анализа средств разграничения доступа к объектам ОС Windows и Linux . Показаны достоинства и недостатки реализаций дискреционного разграничения доступа в этих ОС, возможности ролевого управления доступом, появившиеся в их серверных версиях. Литература 1. SELinux : теория и практика безопасности. http://www.interface.ru/ home.asp?artId=2699. 2. Хорев П.Б. Ролевое управление доступом к ресурсам в операционной системе Microsoft Windows Server 2003. Труды XVI международной научно-технической конференции «Информационные средства и технологии». В 3 томах. Т. 2. М.: Издательский дом МЭИ, 2008. С. 80-88. 3. ALTLinux Castle . Общиесведения. http://www.linuxcenter.ru/ lib/articles/distrib/altlinux/castle.phtml . |