Матрица доступа
Матрица доступа — это формальная модель управления доступом, реализованная в виде двумерной таблицы (матрицы), строки которой соответствуют субъектам доступа (пользователям, процессам, группам), а столбцы — объектам доступа (файлам, каталогам, устройствам, сетевым ресурсам). В ячейках на пересечении строки и столбца указываются права доступа, которые субъект имеет к данному объекту. Матрица доступа является фундаментальной концепцией в области информационной безопасности и операционных систем, лежащей в основе дискреционного (избирательного) управления доступом.
История возникновения и развития
Концепция матрицы доступа была впервые формально описана в 1971 году американскими учёными Батлером Лэмпсоном (Butler Lampson) и Дэвидом Беллом (David Bell) в контексте разработки модели безопасности для операционной системы Multics. Идея заключалась в создании универсального и наглядного способа описания всех возможных взаимодействий между субъектами и объектами в вычислительной системе. В 1972 году Лэмпсон опубликовал работу «Protection», где детально изложил математическую основу матрицы доступа.
Дальнейшее развитие модель получила в работах Грэма (Graham) и Деннинга (Denning), которые в 1972 году предложили расширенную версию с учётом динамического изменения прав и аудита. В 1974 году Дороти Деннинг (Dorothy Denning) и Питер Деннинг (Peter Denning) применили матричную модель к защите баз данных. В 1980-х годах матрица доступа стала основой для разработки систем мандатного управления доступом (MAC) и ролевого управления доступом (RBAC), хотя в чистом виде она чаще используется именно для дискреционного управления.
Математическая модель
Формально матрица доступа определяется как тройка: M = (S, O, A), где:
- S — множество субъектов (пользователи, процессы, потоки).
- O — множество объектов (файлы, каталоги, устройства, семафоры, сегменты памяти).
- A — множество прав доступа (операций), которые субъект может выполнять над объектом.
Матрица M имеет размерность |S| × |O|. Элемент M[s, o] представляет собой подмножество прав из множества A, разрешённых субъекту s для объекта o. Если элемент пуст (∅), субъект не имеет никаких прав на данный объект.
Типовые права доступа
В большинстве реализаций матрицы доступа используются следующие базовые права:
- read (r) — чтение данных из объекта.
- write (w) — запись данных в объект.
- execute (x) — выполнение объекта (для исполняемых файлов или программ).
- delete (d) — удаление объекта.
- own (o) — право владения, позволяющее изменять права доступа других субъектов к объекту.
- append (a) — добавление данных в конец объекта (без возможности чтения или перезаписи).
Реализация в операционных системах
Дискреционное управление доступом (DAC)
Матрица доступа является теоретической основой дискреционного управления доступом, где владелец объекта может произвольно назначать права другим субъектам. На практике матрица редко хранится в виде двумерной таблицы из-за её разреженности (большинство ячеек пусты). Вместо этого используются два основных подхода:
- Списки управления доступом (ACL) — каждому объекту ставится в соответствие список субъектов с их правами. Это столбцы матрицы. ACL широко применяются в файловых системах Windows (NTFS), Linux (ext4, XFS) и в сетевых устройствах.
- Капабилити (capabilities) — каждому субъекту ставится в соответствие список объектов с правами. Это строки матрицы. Капабилити используются в некоторых микроядерных ОС (например, в Amoeba, EROS, seL4) и в системах с мандатной защитой.
Пример реализации в Linux
В файловых системах Linux матрица доступа реализуется через битовые маски прав для трёх категорий субъектов: владелец (owner), группа (group) и остальные (others). Каждый объект (файл или каталог) хранит 12 бит: 9 бит для прав rwx (read, write, execute) для каждой категории и 3 дополнительных бита (setuid, setgid, sticky bit). Это можно рассматривать как компактную форму матрицы, где столбцы — файлы, а строки — категории субъектов.
Применение в системах управления базами данных (СУБД)
В реляционных СУБД матрица доступа используется для разграничения прав пользователей на таблицы, представления, хранимые процедуры и другие объекты. Например, в PostgreSQL права задаются командами GRANT и REVOKE, формирующими ACL для каждого объекта. Матрица доступа позволяет гибко настраивать, кто может выполнять SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER и другие операции.
Ролевое управление доступом (RBAC) как развитие модели
Матрица доступа стала основой для более сложных моделей, в частности RBAC (Role-Based Access Control). В RBAC вместо прямого назначения прав каждому субъекту вводятся роли, которые объединяют наборы прав. Матрица в этом случае становится трёхмерной: субъект — роль — объект. Это упрощает администрирование в крупных организациях, где количество пользователей может достигать десятков тысяч.
Критика и ограничения
Несмотря на теоретическую прозрачность, матрица доступа имеет ряд практических недостатков:
- Разреженность — в реальных системах большинство субъектов не имеют прав к большинству объектов, что делает хранение полной матрицы неэффективным.
- Сложность администрирования — при большом количестве субъектов и объектов ручное управление правами становится трудоёмким и подверженным ошибкам.
- Отсутствие учёта контекста — классическая матрица не учитывает временные ограничения, местоположение субъекта, тип соединения или другие динамические факторы.
- Проблема «злонамеренного владельца» — владелец объекта может предоставить себе неограниченные права, что делает модель уязвимой для внутренних угроз.
Современное состояние и альтернативы
В современных операционных системах и приложениях матрица доступа в чистом виде используется редко. На смену ей пришли более совершенные модели:
- Мандатное управление доступом (MAC) — права назначаются централизованно на основе меток безопасности (например, в SELinux, AppArmor, Windows Mandatory Integrity Control).
- Атрибутное управление доступом (ABAC) — права вычисляются динамически на основе атрибутов субъекта, объекта, среды и действия.
- Политики на основе правил — доступ определяется набором условий и правил, а не статической таблицей.
Тем не менее, матрица доступа остаётся важным педагогическим инструментом для обучения основам безопасности и используется как формальная модель при анализе и проектировании систем защиты информации.
Источники
- Lampson, B. W. (1971). «Protection». Proceedings of the 5th Princeton Conference on Information Sciences and Systems.
- Graham, G. S., & Denning, P. J. (1972). «Protection — Principles and Practice». AFIPS '72 (Spring).
- Denning, D. E. (1982). «Cryptography and Data Security». Addison-Wesley.
- Sandhu, R., Coyne, E. J., Feinstein, H. L., & Youman, C. E. (1996). «Role-Based Access Control Models». IEEE Computer, 29(2).
- Bishop, M. (2003). «Computer Security: Art and Science». Addison-Wesley.
- Tanenbaum, A. S., & Woodhull, A. S. (2006). «Operating Systems: Design and Implementation» (3rd ed.). Pearson.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →