Открыть сервис

Права доступа

Права доступа — это совокупность правил, регламентирующих порядок и условия получения субъектом (пользователем, процессом, устройством) возможности совершать определённые действия над объектом (файлом, каталогом, устройством, базой данных, сетевым ресурсом) в компьютерной системе или информационной среде. Права доступа являются фундаментальным механизмом разграничения доступа, обеспечивающим защиту информации от несанкционированного просмотра, модификации, копирования или уничтожения, а также реализующим принцип минимальных привилегий, согласно которому субъекту предоставляется только тот минимум прав, необходимый для выполнения его функций.

История развития

Концепция прав доступа возникла вместе с первыми многопользовательскими операционными системами. В 1960-х годах в системе CTSS (Compatible Time-Sharing System) была впервые реализована простая модель защиты, основанная на паролях для каждого файла. Однако настоящий прорыв произошёл в 1970-х годах с разработкой операционной системы UNIX в Bell Labs. Кен Томпсон и Деннис Ритчи предложили модель дискреционного управления доступом (DAC), основанную на трёх категориях субъектов (владелец, группа, прочие) и трёх базовых операциях (чтение, запись, выполнение). Эта модель, закреплённая в стандарте POSIX, стала основой для большинства современных Unix-подобных систем.

В 1980-х годах, с развитием сетевых технологий и появлением персональных компьютеров, возникла необходимость в более гибких механизмах. Компания Microsoft в операционной системе Windows NT (1993 год) внедрила модель мандатного управления доступом (MAC) на основе списков контроля доступа (ACL), что позволило более тонко настраивать права для большого числа пользователей и групп в корпоративной среде.

В 1990-х годах, с ростом популярности веб-приложений, появилась модель управления доступом на основе ролей (RBAC), которая стала стандартом для корпоративных информационных систем и баз данных. В 2000-х годах, с развитием облачных вычислений и распределённых систем, возникли более сложные модели, такие как атрибутивное управление доступом (ABAC), учитывающее множество контекстных параметров (время, местоположение, тип устройства, уровень доверия).

Классификация моделей управления доступом

Существует несколько основных моделей управления доступом, различающихся по принципам назначения и проверки прав.

Дискреционное управление доступом (DAC)

В модели DAC владелец объекта (например, файла или каталога) самостоятельно определяет, какие субъекты и какие права на этот объект имеют. Права передаются по усмотрению владельца. Основные реализации:

  • Матрица доступа — таблица, где строки соответствуют субъектам, столбцы — объектам, а в ячейках указаны права (чтение, запись, выполнение).
  • Списки контроля доступа (ACL) — для каждого объекта хранится список субъектов с их правами. Используется в файловых системах NTFS, ext4 (с поддержкой ACL), в сетевых протоколах (например, ACL на маршрутизаторах).
  • Биты прав в UNIX — компактная реализация для трёх категорий (владелец, группа, остальные) с тремя правами (r — чтение, w — запись, x — выполнение). Дополнительно существуют специальные биты: SUID, SGID, Sticky bit.

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

В модели MAC доступ к объектам регулируется на основе меток безопасности, присваиваемых как субъектам, так и объектам. Метки представляют собой уровни конфиденциальности (например, «несекретно», «секретно», «совершенно секретно») и категории (например, «ядерная физика», «военная разведка»). Правила доступа устанавливаются централизованно администратором и не могут быть изменены владельцем объекта. Эта модель широко применяется в системах, обрабатывающих информацию ограниченного доступа (государственные тайны, военные системы). Реализации: SELinux, AppArmor, FreeBSD Jail, системы с метками безопасности (например, в ОС Astra Linux Special Edition).

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

В модели RBAC доступ предоставляется не отдельным пользователям, а ролям, которые они выполняют в организации. Роль — это набор полномочий (прав доступа). Пользователь получает права, будучи назначенным на одну или несколько ролей. Это упрощает администрирование, особенно в крупных организациях с частыми кадровыми изменениями. Стандарт RBAC описан в документе ANSI INCITS 359-2004. Модель широко применяется в корпоративных информационных системах (ERP, CRM), базах данных (Oracle, PostgreSQL), веб-приложениях.

Атрибутивное управление доступом (ABAC)

В модели ABAC решение о предоставлении доступа принимается на основе набора атрибутов, связанных с субъектом, объектом, действием и окружением. Атрибутами могут быть: должность, отдел, уровень допуска, время суток, IP-адрес, тип устройства, геолокация, уровень риска. ABAC обеспечивает максимальную гибкость и точность, но требует сложной инфраструктуры для управления атрибутами и политиками. Используется в облачных платформах (AWS IAM, Azure RBAC), системах управления идентификацией (IdM), в высоконагруженных распределённых системах.

Реализация в операционных системах

Unix-подобные системы (Linux, macOS, FreeBSD)

Традиционная модель прав доступа в UNIX основана на битах прав для каждого файла и каталога. Права делятся на три группы:

  • Владелец (user) — создатель файла.
  • Группа (group) — группа пользователей, к которой принадлежит владелец.
  • Остальные (others) — все остальные пользователи.

Для каждой группы определены три права:

  • r (read) — чтение (для файлов — просмотр содержимого; для каталогов — просмотр списка файлов).
  • w (write) — запись (для файлов — изменение содержимого; для каталогов — создание, удаление, переименование файлов).
  • x (execute) — выполнение (для файлов — запуск на исполнение; для каталогов — возможность входа в каталог и доступа к файлам внутри).

Права отображаются в виде строки из 10 символов (например, -rwxr-xr--), где первый символ — тип файла (- — обычный файл, d — каталог, l — символьная ссылка), а следующие девять — права для трёх групп.

Для более тонкого управления используются расширенные атрибуты (ACL), поддерживаемые в файловых системах ext4, XFS, ZFS, Btrfs. ACL позволяют задавать права для отдельных пользователей и групп, а также наследовать права от родительского каталога.

Windows

В операционной системе Windows права доступа реализуются через систему безопасности NTFS (New Technology File System). Каждый объект (файл, каталог, раздел реестра, принтер) имеет дескриптор безопасности, который содержит:

  • SID (Security Identifier) владельца.
  • SID группы (опционально).
  • DACL (Discretionary Access Control List) — список разрешений для субъектов.
  • SACL (System Access Control List) — список аудита (какие события доступа нужно регистрировать).

Каждая запись в ACL (ACE — Access Control Entry) содержит SID субъекта, тип доступа (разрешить или запретить) и маску прав (например, чтение, запись, выполнение, удаление, изменение разрешений, полный доступ). Права могут быть явными (заданными для объекта) или наследованными (переданными от родительского каталога). Наследование является ключевой особенностью Windows ACL.

Права доступа в сетевых и веб-технологиях

Веб-серверы (Apache, Nginx)

Права доступа к веб-ресурсам регулируются на уровне файловой системы (права на файлы и каталоги) и на уровне конфигурации веб-сервера. В конфигурационных файлах (.htaccess для Apache, блоки location для Nginx) задаются правила доступа на основе IP-адресов, HTTP-заголовков, методов запроса, аутентификации (Basic, Digest, OAuth). Также используются файлы .htpasswd для хранения хешей паролей.

Базы данных (SQL)

В реляционных базах данных (MySQL, PostgreSQL, Oracle) права доступа управляются на уровне сервера, базы данных, схемы, таблицы, столбца и даже строки (RLS — Row-Level Security). Основные привилегии: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, GRANT. Пользователи и роли назначаются администратором базы данных (DBA). В PostgreSQL, например, используется система ролей, где роли могут быть как пользователями, так и группами, и могут наследовать права друг от друга.

Облачные платформы (AWS, Azure, Google Cloud)

В облачных средах права доступа реализуются через сервисы управления идентификацией и доступом (IAM — Identity and Access Management). Основные концепции:

  • Пользователи — учётные записи людей.
  • Группы — наборы пользователей.
  • Роли — наборы прав, которые могут быть назначены пользователям, сервисам или приложениям.
  • Политики — документы в формате JSON, описывающие разрешения (Effect: Allow/Deny, Action: список операций, Resource: список объектов, Condition: дополнительные условия).
  • Сервисные аккаунты — учётные записи для приложений и сервисов (например, для работы виртуальной машины с облачным хранилищем).

Проблемы и уязвимости

Некорректная настройка прав доступа является одной из наиболее распространённых причин утечек данных и компрометации систем. Основные проблемы:

  • Избыточные права — предоставление пользователям или сервисам прав, превышающих необходимый минимум (например, администраторские права для обычного пользователя).
  • Отсутствие наследования — в системах с ACL, где наследование не настроено, права могут быть потеряны при перемещении объектов.
  • Конфликты прав — в Windows ACL, если явное разрешение и явный запрет конфликтуют, запрет имеет приоритет. В UNIX приоритет имеет владелец, затем группа, затем остальные.
  • Уязвимости SUID/SGID — в Unix-подобных системах биты SUID и SGID позволяют исполняемому файлу запускаться с правами владельца (или группы) файла, что может быть использовано для повышения привилегий (например, уязвимость CVE-2021-3493 в ядре Linux).
  • Небезопасные ACL — в веб-приложениях, если ACL на каталог uploads разрешает выполнение скриптов, злоумышленник может загрузить вредоносный код.

Интересные факты

  • В системе UNIX права доступа к файлам хранятся в виде 12-битного числа (три бита на каждую группу прав + три специальных бита). Например, 755 означает: владелец — чтение, запись, выполнение (4+2+1=7); группа — чтение, выполнение (4+1=5); остальные — чтение, выполнение (4+1=5).
  • В операционной системе Windows права доступа могут быть унаследованы от родительского каталога, но при перемещении файла в другой каталог наследование может быть сброшено, если файл не поддерживает наследование.
  • В модели RBAC существует понятие «сессия» — пользователь может активировать только те роли, которые ему назначены, и только в рамках одной сессии. Это позволяет ограничивать права на время выполнения конкретной задачи.
  • В 2023 году в результате неправильной настройки прав доступа к облачному хранилищу AWS S3 произошла утечка данных более 100 миллионов пользователей одного из крупных сервисов.

Источники

  1. «Операционные системы: проектирование и реализация» — Эндрю Таненбаум, Альберт Вудхалл.
  2. «Безопасность компьютерных систем» — Уильям Столлингс.
  3. «UNIX. Профессиональное программирование» — У. Ричард Стивенс, Стивен А. Раго.
  4. «Windows Internals» — Марк Руссинович, Дэвид Соломон, Алекс Ионеску.
  5. «Управление доступом в информационных системах» — В. А. Галатенко.
  6. «Стандарт ANSI INCITS 359-2004: Role-Based Access Control».
  7. «Документация по безопасности Linux» — The Linux Kernel Archives.
  8. «Документация по безопасности Windows» — Microsoft Docs.
  9. «Документация по AWS IAM» — Amazon Web Services.
  10. «Документация по PostgreSQL: Управление доступом» — PostgreSQL Global Development Group.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →