Postgresql error obtaining mac configuration for user

В руководстве сказано: При обращении пользователя к БД определяются его допустимый диапазон меток и набор специальных мандатных атрибутов. Если пользователю не присвоена метка, то он получает по умолчанию нулевую метку, соответствующую минимальному уровню доступа. И ещё: 1) после прохождения...

18.04.2019

В руководстве сказано:

При обращении пользователя к БД определяются его допустимый диапазон меток и набор специальных мандатных атрибутов. Если пользователю не присвоена метка, то он получает по умолчанию нулевую метку, соответствующую минимальному уровню доступа.

И ещё:

1) после прохождения пользователем стандартной процедуры аутентификации сервер считывает из ОС значения максимальной и минимальной меток пользователя и принимает их как максимальную и минимальную метки сессии. При этом, если запись о метках для пользователя не найдена, то максимальная и минимальная метки принимаются равными нулю. Следовательно, пользователи, зарегистрированные 72 РУСБ.10015-01 97 01-1 только в сервере СУБД PostgreSQL и не имеющие учетной записи в ОС сервера, всегда имеют минимальный уровень доступа к информации;

И ещё:

В случае, если пользователь СУБД не зарегистрирован в ОС на стороне сервера СУБД, все его мандатные атрибуты имеют нулевое значение.

По факту же создаётся пользователь в БД:

Код:

create user test with password 'test';

При попытке подключения получаю:

Код:

psql test -h localhost
Пароль пользователя test:
psql: СБОЙ: error obtaining MAC configuration for user "test"

В логах постгреса пишет:

Код:

 error obtaining MAC configuration for user "test", error 2 - Нет такого файла или каталога

Эти манипуляции не помогли:

Код:

usermod -a -G shadow postgres
setfacl -d -m u:postgres:r /etc/parsec/macdb
setfacl -R -m u:postgres:r /etc/parsec/macdb
setfacl -m u:postgres:rx /etc/parsec/macdb
setfacl -d -m u:postgres:r /etc/parsec/capdb
setfacl -R -m u:postgres:r /etc/parsec/capdb
setfacl -m u:postgres:rx /etc/parsec/capdb

Что я делаю не так? Цель — подключиться пользователем СУБД, не зарегистрированным в ОС, получив при этом минимальную метку ‘{0,0}’, как и сказано в документации. Вариант с отключением мандатного доступа (как для apache AstraMode off) для СУБД целиком тоже подойдёт, но я не нашёл, как это сделать.

18.04.2019

Ради эксперимента создал пользователя test в ОС, через pdpl-user выдал ему метку 0. В PostgreSQL ничего не поменялось, ошибка осталась.
UPD
Если добавить пользователя в ОС и вызвать pdpl-user -z test, то соединение проходит успешно. Но это не объясняет, почему отвергается соединение, если пользователь ОС отсутствует…

Последнее редактирование: 18.04.2019

19.04.2019

Проблему удалось решить. Файл /etc/parsec/mswitch.conf, параметр zero_if_notfound установить в yes.

Предложение к разработчикам: не могли бы вы добавить этот момент в официальную документацию (Ruk_KSZ_1.pdf). Ну или хотя бы в вики (https://wiki.astralinux.ru/display/doc/PostgreSQL). Эта информация может кому-нибудь ещё пригодиться.

11.12.2019

Для кучи добавлю. Не забудьте так же проверить, синхронизировано ли время с контроллером домена. Если большая разница во времени, то выдаёт такую же ошибку.

6 / 6 / 0

Регистрация: 04.01.2012

Сообщений: 182

Записей в блоге: 44

1

02.08.2017, 13:18. Показов 17957. Ответов 4


Добрый день,
создала базу, пользователя, подправила pg_hba.conf

Код

host all all 192.168.0.0/24 trust

на подключение всех и вся с «trust», сделала владельцем базы данных нового пользователя с таким же паролем, как в системе

Код

create user user with password 'user';

и передала ему все привилегии.

Код

grant all privileges on database user to userdb;

Но при попытке

Код

psql -h localhost -U user -d userdb

выдает ошибку:

Код

psql: FATAL:  error obtaining MAC configuration for user "bacula"

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



1187 / 917 / 367

Регистрация: 02.09.2012

Сообщений: 2,793

02.08.2017, 14:57

2

что у вас за система стоит?? почему пользователь bacula вылезает?? вы от его имени запускаете psql что ли??

Добавлено через 2 минуты
Попахивает MAC = Mandatory Access Control => SELinux/AppArmor/… что там еще из этой оперы..
В общем смотрите настройки безопасности вашей ОС



1



6 / 6 / 0

Регистрация: 04.01.2012

Сообщений: 182

Записей в блоге: 44

02.08.2017, 16:22

 [ТС]

3

система стоит astra
bacula вылезает, потому что в части команд я заменила юзера на обезличенное юзер, а в той оставила.
Да, запускаю от него psql, создала его и в бдушечке и в системе

в системе все мандатные метки оставила по нулям, а в бд не нашла, где ставить мандатные метки



0



1187 / 917 / 367

Регистрация: 02.09.2012

Сообщений: 2,793

03.08.2017, 04:48

4

я к сожалению не силен в PG, который доработанный под AstraLinux.
Вот здесь есть какое-то руководство, которое может быть поможет.



0



6 / 6 / 0

Регистрация: 04.01.2012

Сообщений: 182

Записей в блоге: 44

03.08.2017, 11:24

 [ТС]

5

Спасибо!
помогло вот это — надо было дать разрешение системной учетной записи на чтение мандатных меток

Код

usermod -a -G shadow postgres
setfacl -d -m u:postgres:r /etc/parsec/macdb
setfacl -R -m u:postgres:r /etc/parsec/macdb
setfacl -m u:postgres:rx /etc/parsec/macdb
setfacl -d -m u:postgres:r /etc/parsec/capdb
setfacl -R -m u:postgres:r /etc/parsec/capdb
setfacl -m u:postgres:rx /etc/parsec/capdb



0



Содержание

  1. Операционные системы Astra Linux
  2. Установка Zabbix на Astra Linux
  3. Введение
  4. Установка Zabbix 4.4 на Astra Linux
  5. Обновление php 7.0 до 7.4 в Astra Linux
  6. Установка Zabbix 5 на Astra Linux
  7. Заключение
  8. PostgreSQL: ошибка получения мандатных атрибутов
  9. 5 ответов
  10. Astra Linux. Установка PostgreSQL.
  11. Аренда серверов.
  12. 1С:Предприятие “в облаке”.
  13. IP-телефония в офис.
  14. Мандатная модель управления доступом (MAC): обзор и применение в прикладных системах
  15. Модель MAC
  16. Основная идея
  17. Ограничения и уязвимости
  18. Проектирование приложения с поддержкой MAC
  19. Как избежать MAC, когда его уже не избежать
  20. Разделяй и властвуй
  21. Классификация модулей по режимам обработки MAC
  22. «BRING IT ON»: работа модуля в режиме минимальной мандатной метки
  23. «HURT ME PLENTY»: работа модуля в режиме одной мандатной метки
  24. «NIGHTMARE!»: работа модуля в режиме нескольких мандатных меток
  25. Взаимодействие приложения с окружающей средой
  26. Взаимодействие MAC-совместимого приложения с операционной системой
  27. Взаимодействие MAC-совместимого приложения со сторонним ПО без поддержки MAC
  28. Взаимодействие MAC-совместимого приложения со сторонним ПО с поддержкой MAC
  29. Взаимодействие MAC-совместимого приложения с пользователем
  30. Выводы

Операционные системы Astra Linux

Оперативные обновления и методические указания

Операционные системы Astra Linux предназначены для применения в составе информационных (автоматизированных) систем в целях обработки и защиты 1) информации любой категории доступа 2) : общедоступной информации, а также информации, доступ к которой ограничен федеральными законами (информации ограниченного доступа).

1) от несанкционированного доступа;
2) в соответствии с Федеральным законом от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации» (статья 5, пункт 2).

Операционные системы Astra Linux Common Edition и Astra Linux Special Edition разработаны коллективом открытого акционерного общества «Научно-производственное объединение Русские базовые информационные технологии» и основаны на свободном программном обеспечении. С 17 декабря 2019 года правообладателем, разработчиком и производителем операционной системы специального назначения «Astra Linux Special Edition» является ООО «РусБИТех-Астра».

На web-сайтах https://astralinux.ru/ и https://wiki.astralinux.ru представлена подробная информация о разработанных операционных системах семейства Astra Linux, а также техническая документация для пользователей операционных систем и разработчиков программного обеспечения.

Мы будем признательны Вам за вопросы и предложения, которые позволят совершенствовать наши изделия в Ваших интересах и адаптировать их под решаемые Вами задачи!

Репозитория открытого доступа в сети Интернет для операционной системы Astra Linux Special Edition нет. Операционная система распространяется посредством DVD-дисков.

Информацию о сетевых репозиториях операционной системы Astra Linux Common Edition Вы можете получить в статье Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов.

В целях обеспечения соответствия сертифицированных операционных систем Astra Linux Special Edition требованиям, предъявляемым к безопасности информации, ООО «РусБИтех-Астра» осуществляет выпуск очередных и оперативных обновлений.

Очередные обновления (версии) предназначены для:

Оперативные обновления предназначены для оперативного устранения уязвимостей в экземплярах, находящихся в эксплуатации, и представляют собой бюллетень безопасности, который доступен в виде:

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

Источник

Установка Zabbix на Astra Linux

Я участвовал в большом проекте по настройке системы мониторинга на базе отечественных ОС. В качестве системы использовалась Astra Linux, так что у меня сохранилось некоторое количество заметок по этому поводу. Одну из таких заметок я и хочу организовать в статью по установке сервера мониторинг Zabbix на Astra Linux. Там есть некоторое количество нюансов, связанных с особенностью отечественной ОС.

Введение

Для тех, кто не в курсе, напомню, что Astra Linux существует в двух редакциях:

Я все работы выполнял на Смоленске, но так как его нельзя свободно скачать, то в статье будет использоваться система Орел. В контексте данной задачи каких-то серьезных отличий нет, но в общем и целом они существуют. Для Орла есть публичный репозиторий, из которого можно ставить необходимые пакеты. Для Смоленска его нет. Надо либо локально с диска все устанавливать, либо где-то в сети разворачивать свой репозиторий.

Установка Zabbix 4.4 на Astra Linux

Я выполню установку Zabbix Server на Astra Linux на базе веб сервера Apache и базы данных PostgreSQL. Версии возьму те, что есть в стандартном репозитории дистрибутива.

Обновляем систему и устанавливаем необходимые пакеты.

astra linux zabbix install 01

В файл /etc/hosts добавьте запись с вашим ip адресом. У меня она вот такая получилась:

Если делаете установку на редакции Смоленск и не используете авторизацию в apache, то отключите ее в конфиге /etc/apache2/apache2.conf.

Теперь можно перезапустить apache и проверить работу веб сервера.

Перейдя в браузере по ip адресу сервера, должны увидеть стандартную страницу заглушку apache в Debian.

astra linux zabbix install 02

Теперь настроим postgresql. Добавляем в ее конфиг /etc/postgresql/9.6/main/pg_hba.conf следующие строки.

Перезапускаем сервер баз данных.

Дальше надо подключиться к postgresql и создать пользователя с базой данных для zabbix.

astra linux zabbix install 03

Не забудьте указать свой пароль. Мой копировать не надо.

Устанавливаем в Astra Linux сам Zabbix Server.

astra linux zabbix install 04

Импортируем шаблон базы данных в саму базу, которую сделали ранее.

Если получите ошибку:

То сделайте следующее:

Добавим параметры подключения к БД в конфигурацию Zabbix Server /etc/zabbix/zabbix_server.conf.

После всех этих действий перезапускаем apache и запускаем zabbix-server.

Далее идем в браузер по адресу http://10.20.1.31/zabbix/ и выполняем установку сервера. Не буду на этом подробно останавливаться, там все тривиально. Можно подсмотреть в любой инструкции по установке. Например, в моей же для этой версии. Там все будет идентично, 1 в 1, так как и версия zabbix, и версия debian 9 совпадают.

astra linux zabbix install 05

Вручную устанавливаем скачанные пакеты.

astra linux zabbix install 06

Так как мы перезаписал прошлый конфиг сервера новой версией, надо сходить и еще раз прописать доступ к базе данных. После этого перезапускаем сервер.

Идем в веб интерфейс и проверяем версию сервера.

astra linux zabbix install 07

На этом установка Zabbix 4 на Astra Linux завершена. Если вас устраивает эта версия, то настраивайте дальше сервер и используйте. Если же вы хотите получить 5-ю версию, то продолжаем настройку.

Обновление php 7.0 до 7.4 в Astra Linux

Для обновления до 5-й версии Zabbix в Astra Linux нам надо сначала обновить php 7.0 до 7.4. Для этого надо либо вручную скачать все необходимые пакеты и обновить их, либо воспользоваться сторонним репозиторием.

Очевидно, что второй способ быстрее и проще, хотя и вызывает вопросы безопасности и происхождения пакетов. Но в рамках данной статьи, я не буду это рассматривать. Очевидно, что для максимальной безопасности, вам надо взять исходники, самим собрать пакеты и положить в свой репозиторий, либо установить локально.

Подключаем сторонний репозиторий для php пакетов.

И отключаем родной репозиторий Астры в /etc/apt/sources.list.

Обновляем список пакетов и устанавливаем обновления php.

Ставим php 7.4 основных пакетов:

astra linux zabbix install 08

Проверяем версию php в консоли.

Теперь сразу же подключите обратно отключенный репозиторий астры и еще раз обновите все пакеты. На всякий случай убедитесь, что у вас установлен пакет php7.4-mbstring. Без него веб интерфейс Zabbix работать не будет.

Дальше вам нужно отключить в настройках веб сервера модуль php7.0 и подключить 7.4. Для этого надо заменить символьные ссылки в /etc/apache2/mods-enabled с

После этого осталось только перезапустить apache.

Все готово, мы установили версию php 7.4 в Astra Linux. Можно приступать к обновлению Zabbix Server до версии 5.

Установка Zabbix 5 на Astra Linux

Для обновления Zabbix Server до 5-й версии, делаем все то же самое, что и ранее для 4-й. Скачиваем пакеты нужной нам версии и устанавливаем их вручную.

Обращаю внимание на ссылку для zabbix-frontend-php. Хоть в названии и присутствует имя релиза buster, данный пакет подходит для всех версий Debian, а все остальные пакеты объявлены deprecated.

Устанавливаем Zabbix 5 на Astra Linux:

Если будет заменен дефолтный конфиг сервера, не забудьте его актуализировать. В целом по обновлению zabbix все. Перезапускаем сервер и идем в веб интерфейс.

astra linux zabbix install 09

Не забудьте почистить кэш браузера после обновления web интерфейса. Иначе в новой версии все будет криво отображаться, как-будто что-то сломано.

Заключение

На этом у меня все. Я показал, как на Astra Linux установить самую свежую версию Zabbix Server. Предлагаю далее проследовать в статью по базовой настройке zabbix.

А вам доводилось работать с Astra Linux? Поделитесь впечатлением. По сути тот же Debian, а вот графическое окружение уникальное и мне оно очень понравилось. Уж точно лучше Gnome.

Источник

PostgreSQL: ошибка получения мандатных атрибутов

Проблема возникает с PostgreSQL 9.4 в Astra Linux Special Edition 1.5 при попытке подключения созданным пользователем:

«СБОЙ: ошибка получения мандатных атрибутов на сервере для пользователя»

114133 original 1

5 ответов

Ошибка возникает при использовании локальных пользователей, без настроенного ALD.

Нужно добавить права на чтение к БД мандатных атрибутов для Postgre:

114133 original 1

Для версии 1.6 это выглядит так.

Если возникает ошибка:

ошибка получения мандатных атрибутов на сервере для пользователя «replicator», ошибка 13 — Отказано в доступе

Значит не хватает прав доступа к каталогам. Нужно:

Если возникает ошибка:

ошибка получения мандатных атрибутов на сервере для пользователя «replicator», ошибка 2 — Нет такого файла или каталога

Нужно инициализировать мандатные права у вашего пользователя:

6773 21a6bb577b40206139cc44c17740e0f4

6773 21a6bb577b40206139cc44c17740e0f4

И тем не менее. Господа, а, видимо, кто-то уже сталкивался со всем этим делом на Astra Linux 1.6 Smolensk?

На Astra Linux 1.5 при желании назначить пользователя, ассоциированного с ролью входа для PostgreSQL работало вот так:

Проблему удалось решить. Файл /etc/parsec/mswitch.conf, параметр zero_if_notfound установить в yes.

В этом случае все пользователи БД, для которых не удалось получить мандатные атрибуты, получат нулевую метку.

6773 21a6bb577b40206139cc44c17740e0f4

Настройка «установить в файле /etc/parsec/mswitch.conf, параметр zero_if_notfound в yes» работает только для астры без домена ald. Если на астре настроена авторизаиця через домен, то после parsec запрашивается ald, если там одноименного пользователя тоже нет — то запрашивается kerberos, а поскольку он не настроен — то в postgres возвращается ошибка, и пользователь не подключается. В логе постгреса ошибки:

2020−10−07 18:32:03 [2684] АУДИТ: ОТКАЗ, Подключение, [local], «my_user», SU = «неопределено» (0), CU = «неопределено» (0): ошибка получения мандатных атрибутов на сервере для пользователя «my_user», ошибка 25 — Неприменимый к данному устройству ioctl

2020−10−07 18:32:03 MSK [3665−2] my_user@my_user СБОЙ: ошибка получения мандатных атрибутов на сервере для пользователя «my_user»

Как в таком случае заставить постгрес вести себя согласно доке и разрешить подключать пользователей, которые есть только в самом постгресе?

Источник

Astra Linux. Установка PostgreSQL.

Мы планируем использовать наш сервер с Astra Linux для работы с , поэтому установим на него версию PostgreSQL для , которую разрабатывает фирма Postgres Professional.

Полный репозиторий всех версий PostgreSQL, поддерживаемых фирмой, расположен тут – https://repo.postgrespro.ru/

Репозиторий PostgreSQL для Astra Linux “Смоленск” расположен тут – https://repo.postgrespro.ru/pg1c-11/astra-smolensk/1.6/

Итак, создадим локальную папку для репозитория и скачаем в неё все необходимые пакеты

Теперь скачаем GPG-ключ (подпись) репозитория

Осталось добавить скачанный репозиторий PostgreSQL в общий список репозиториев и зарегистрировать его подпись.

Самое время установить PostgreSQL

После установки требуется настроить переменные окружения пользователя от имени которого будет работать PostgreSQL.

И настроить автоматический запуск PostgreSQL при старте системы.

Теперь зададим пароль пользователя postgres для подключения к СУБД.

Ну, и осталось перезапустить службу

Настроим установленный ранее Webmin для работы с PostgrSQL, уж очень удобно с его помощью управлять базами данных. 🙂

Для этого открываем в браузере адрес https://127.0.0.1:10000 и обновляем установленные модули.

virtualbox astralinux for tests 32

Теперь идём на страницу управления PostgreSQL Server и вносим небольшие изменения в настройки, указав в качестве Paths to host access config file путь /var/lib/pgpro/1c-11/data/pg_hba.conf

virtualbox astralinux for tests 33

virtualbox astralinux for tests 34

virtualbox astralinux for tests 35

В результате вы получите возможность управлять PostgreSQL-сервером из WEB-интерфейса.

virtualbox astralinux for tests 36

Аренда серверов.

project thumb3

Надёжные сервера с Pro-бегом
У ВАС В ОФИСЕ
!

1С:Предприятие “в облаке”.

project thumb2

Безопасный доступ к своей 1С из офиса, командировки и т.п.!

IP-телефония в офис.

project thumb

Источник

Мандатная модель управления доступом (MAC): обзор и применение в прикладных системах

image loader

Модель MAC

MAC, несмотря на то, что содержится во множестве статей и материалов, чаще всего упоминается вскользь и в виде пряного соуса к чему-нибудь вроде краткого упоминания MLS в SELinux. Так как многие ограничивают свою дружбу с SELinux применением рецепта «как отключить SELinux», то и MAC часто удостаивается той же чести. Поэтому сперва коротко о MAC.

Если вы хорошо знакомы с моделью, можете сразу перейти к следующему разделу.

Основная идея

Абстрактная модель безопасности, реализуемая в классическом MAC (каким его знают сотрудники силовых ведомств), выглядит следующим образом (классическая картинка, иллюстрирующая модель Белла — Лападулы):

image loader

Модель MAC по своей сути является «электронной» реализацией бумажного «секретного» документооборота. В MAC имеются следующие «действующие лица»:

Проверка полномочий осуществляется при каждом факте доступа субъекта к объекту, защищаемому MAC. При этом мандатная модель управления доступом обычно используется совместно с другими механизмами контроля доступа, например, DAC (UNIX-моделью и POSIX ACL). При этом MAC проверяется в последнюю очередь. Сперва проверяется доступ по DAC (как наименее защищенный), а затем уже MAC.

При проверке правомочности доступа субъекта к объекту согласно мандатной модели возможны следующие комбинации:

Ограничения и уязвимости

MAC обладает своими ограничениями и особенностями:

Проектирование приложения с поддержкой MAC

Несмотря на все ограничения модели, для тех, кто работает с госсектором, а в особенности с силовыми ведомствами, вопрос построения приложений с поддержкой мандатной модели управления доступом актуален как никогда. Вдруг завтра именно вам придется поддерживать MAC в своем продукте?

На первый взгляд кажется, что модель примитивна и ее реализация проста как пять копеек, но существует один нюанс: заказчик, который выставляет требование к использованию мандатной модели, имеет ввиду, в первую очередь, сертифицированное средство защиты информации. Обрабатываться в такой ИС будет действительно секретная информация, вплоть до государственной тайны, и сертифицировать на нужный уровень собственную разработку будет очень сложно. Выходом из данной ситуации является использование сертифицированной инфраструктуры, поддерживающей MAC.

Итак, что у нас есть в наборе:

Системное ПО Описание
ОС Astra Linux Special Edition / SELinux ОС с поддержкой MAC. Предоставляет хранилище информации о мандатных разрешениях пользователей, связанное с хранилищем пользователей операционной системы. Предоставляет механизмы контроля доступа к объектам, защищаемым MAC (объектам файловой системы, запуску приложений в режиме мандатной метки и т.д.).
СУБД PostgreSQL (PostgresPro) Имеет интеграцию с хранилищем учетных записей и мандатных меток ОС. СУБД предоставляет функциональность присваивания мандатной метки к таким объектам, как кластер, база данных, таблица, столбец и запись.
Веб-сервер с поддержкой MAC (Apache Http Server) Ретранслирует мандатную метку от запроса клиента с поддержкой MAC и запускает обработчик приложения (скрипт/службу) с идентичной меткой и передачей данных аутентификации пользователя.
Браузер с поддержкой MAC (Mozilla Firefox) Считывает мандатную метку сеанса пользователя (графической оболочки пользователя) и добавляет ее в запросы к веб-приложениям.

Теперь рассмотрим, каким образом можно воспользоваться этой инфраструктурой при разработке приложения для сохранения функций управления доступом на уровне инфраструктуры.

Для того чтобы приложение могло воспользоваться механизмом мандатных меток операционной системы, должны быть выполнены следующие условия:

Разумеется, для разработки простых приложений (утилит либо приложений, ввиду своей специфики нейтральных к MAC) многие советы попросту не пригодятся. Если же приложение является чем-то более сложным, чем однопользовательское локальное приложение, считывающее файл и записывающее результат своей работы также в файл, то желательно четко осознавать «подводные камни».

Мы собрали рецепты по проектированию приложения с поддержкой MAC, сформулированные на основе собственного опыта. За ними стоят бессонные ночи, непрерывный поток тикетов от тестирования, тысячи часов отладки приложения, которое по всем здравым смыслам должно работать правильно, но почему-то работает не так. Рецепты описаны в максимально простой и нейтральной к технологиям и инструментам форме, и по возможности снабжены схемами для улучшения воспринимаемости. Поехали!

Как избежать MAC, когда его уже не избежать

rvodsfy279palaopincmwnjz3pa

При проектировании приложения с MAC можно использовать одно очень простое архитектурное решение, которое в итоге сэкономит много нервов и времени. В конфигурацию приложения следует добавить параметр, который сообщает приложению, включена ли мандатная модель управления доступом для данной инсталляции, или нет. Во всех местах приложения, где происходит взаимодействие с инфраструктурой MAC, либо бизнес-функция приложения требует проверки метки, следует сперва проверять значение этого параметра. Если MAC согласно ему отключена, то приложение игнорирует все правила бизнес-логики, предназначенные для проверки MAC-совместимых функций.

С точки зрения трудозатрат придется потратить дополнительное время на реализацию каждой функцию приложения с поддержкой MAC. Потребуется отладить и протестировать одну и ту же функциональность в режиме без мандатной метки, поэтому возрастут расходы на тестирование.

За счет данного решения можно обеспечить приложению (и всей команде разработки), которое вынуждено функционировать в среде MAC, следующие преимущества:

Рекомендации:

Добавить параметр включения/отключения поддержки мандатных меток в приложении.

Во всех местах, требующих взаимодействия с MAC, прежде всего проверять значение параметра.

При отладке и тестировании необходимо отлаживать (на стороне команды разработки) и тестировать (на стороне команды тестирования) оба режима работы приложения.

Разделяй и властвуй

Другой важный шаг при проектировании, который обязательно должен быть выполнен до начала разработки — разделение модулей, в которых требуется поддержка MAC, от модулей, в которых данный механизм управления доступом не требуется. Использование мандатной модели управления доступом почти всегда усложняет бизнес-логику приложения.

Это та самая инфраструктура, абстрагироваться от которой очень сложно, а порой невозможно. Поэтому приложение следует разбить на модули, а уже по каждому модулю произвести анализ потребности в поддержке MAC. Возможно, именно в вашем случае достаточно поддержать MAC только в одном модуле, и нет смысла из-за данного модуля усложнять все приложение?

Рекомендация: Следует разделить приложение на модули и классифицировать их по режимам обработки мандатных меток.

В случае, если мы рассматриваем некий абстрактный модуль (или все приложение, если деление приложения на модули не требуется) возможны следующие парадигмы:

Рекомендация: При проектировании следует обеспечивать минимальную связность (cohesion) модулей, работающих в различных парадигмах обработки мандатных меток.

Далее рассмотрим подробнее особенности проектирования при трех парадигмах обработки мандатных меток. Для этого мы набросали классификацию от простого случая к сложному. Данная классификация несет сугубо практический и прикладной характер. Она исходит из интуитивно ощутимых различий при разработке тех или иных модулей, а на практике показала свою действенность.

Классификация модулей по режимам обработки MAC

«BRING IT ON»: работа модуля в режиме минимальной мандатной метки

image loader

Мотивация для реализации данного механизма в модуле:

Примеры практических кейсов, для которых подходит использование режима минимальной мандатной метки:

«HURT ME PLENTY»: работа модуля в режиме одной мандатной метки

image loader

Этот кейс чуть сложнее, но во многом похож на случай с минимальной мандатной меткой. С точки зрения пользователя работа с приложением меняется не сильно: все те же привычные списки записей, карточки и операции «Просмотр», «Редактировать» и «Сохранить». С той лишь разницей, что в данном режиме пользователь видит только те записи, которые соответствуют мандатной метке его текущего сеанса.

Также может быть разработан ограниченный вариант: в модуле фиксируется значение параметра «мандатной метки по умолчанию». В этом случае эксплуатация модуля возможна только с указанной мандатной меткой, но данный вариант проще в реализации.

Данный кейс может быть полезен в следующих случаях:

Рекомендация: В модуле, работающем только в режиме одной мандатной метки, отличной от минимальной мандатной метки ОС, следует добавить параметр, хранящий допустимые режимы мандатных меток для данного модуля. Попытка выполнения операции в режиме мандатной метки за пределами указанного перечня должна быть отклонена приложением.

При выполнении операций в модуле рекомендуется сверять мандатную метку текущего процесса приложения с мандатной меткой по умолчанию. Если мандатная метка модуля не соответствует мандатной метке сеанса, то пользователь не должен быть допущен к выполнению операции.

Примеры практических кейсов, для которых подходит использование режима одной мандатной метки:

«NIGHTMARE!»: работа модуля в режиме нескольких мандатных меток

image loader

Данный режим работы полезен только в том случае, когда в одном сеансе работы с модулем нам необходимо отображать информацию по всем мандатным меткам, расположенным ниже мандатной метки текущего сеанса по иерархии.

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

С точки зрения реализации пользовательского интерфейса обычно используются следующие шаблоны:

Простор комбинаций огромнейший, как и пространство для появления ошибок. Поэтому не рекомендуется обрабатывать в рамках одного юзкейса записи с различной мандатной меткой при наличии какой-либо бизнес-логики. Любые операции с коллекцией записей должны производиться с явным указанием мандатной метки, общей для всей коллекции. Обработали третью метку, затем вторую, и т.д.

Для реализации такого режима необходимо заложить следующие функции:

Взаимодействие приложения с окружающей средой

Приложение в среде с MAC взаимодействует с определенным перечнем окружающих его компонентов. Схематично по особенностям взаимодействия их можно классифицировать так:

image loader

Взаимодействие MAC-совместимого приложения с операционной системой

nswwkyiglwv0uvp7s98vq6qpv8g

MAC очень «радует» своими трудностями по настройке правил доступа в файловой системе. Например, львиная доля ошибок в приложениях с MAC связана именно с тем, что приложение в режиме текущей мандатной метки не видит файл, но файл при этом существует в режиме другой мандатной метки (уровнем выше).

Чего мы ожидаем от операционной системы в части MAC?

Если наше приложение работает в многопользовательском режиме, то ему наверняка потребуется запрашивать информацию об учетных записях пользователей, данные которых оно обрабатывает. Это необходимо для поддержки разграничения доступа пользователей. Поэтому приложению потребуется запрашивать у ОС информацию о мандатных разрешениях пользователей. Если УЗ пользователя в ОС управляется нашим приложением, тогда нам потребуется не только читать информацию об УЗ, но и управлять атрибутами УЗ.

Наиболее вероятные потоки взаимодействий ОС и приложения изображены на схеме:

image loader

Взаимодействие MAC-совместимого приложения со сторонним ПО без поддержки MAC

Большая часть приложений, которые могут использоваться в ОС с MAC, не умеют обрабатывать MAC.

Поэтому при организации такого взаимодействия требуется эмулировать мандатную метку при передаче данных или запроса процессу такого приложения. Реализуется это путем «расслоения» потока данных на отдельные каналы, каждый из которых логически предназначен для данных с определенной мандатной меткой. Смешивать такие данные категорически запрещается, они должны идти по отдельным очередям, каналам и чуть ли не по отдельным жилам витых пар сетевым интерфейсам. Правомерность «логической» реализации разделения данных по MAC тоже является неоднозначным вопросом, поэтому чаще всего лежит на совести заказчика и разработчика приложения.

Возможность использования приложения без MAC приложением, работающим в режиме MAC, зависит от выбранного способа взаимодействия, его специфики, и особенностей реализации обработки поступающих данных внутри приложения.

Взаимодействие MAC-совместимого приложения со сторонним ПО с поддержкой MAC

В случае взаимодействия с ПО с поддержкой MAC наше приложение должно явно уметь считывать метку процесса, который осуществляет запрос, и выполнять операцию в соответствии с мандатной моделью управления доступом. От приложения, взаимодействующего с таким ПО, требуется только лишь выполнение запросов к стороннему приложению/процессу из процесса с корректной мандатной меткой.

Пример популярного приложения с полноценной поддержкой мандатных меток — СУБД PostgresSQL. В определенных вариантах поставки данной СУБД реализована полная поддержка MAC под некоторые ОС с механизмами MAC, например:

Взаимодействие MAC-совместимого приложения с пользователем

Каким бы странным ни выглядел данный аспект взаимодействия по сравнению с рассмотренными ранее, но не остановиться на нем нельзя. Ведь именно для пользователя чаще всего строятся приложения с поддержкой MAC, не так ли?

Приложение с поддержкой MAC практически ничем не отличается от такового без MAC в части пользовательского интерфейса во всех режимах, за исключением режима одновременной работы с несколькими мандатными метками.

На примере распространенных сегодня веб-приложений чаще всего встречаются следующие кейсы:

Кейс Что требуется предусмотреть
Аутентификация и работа пользователя с сессией Пользователь должен в каждый момент времени понимать, под какой мандатной меткой его видит приложение. Для этих целей приложение должно отображать простой и понятный индикатор мандатной метки сеанса пользователя, который будет доступен на каждом экране приложения.

Также данная функция очень сильно облегчит жизнь тестировщикам приложения. Отображение списка записей (грида записей) в режиме одновременной обработки нескольких мандатных меток с элементами управления Стандартный для современных веб-приложений кейс. Нюансы:

Здесь возможны следующие варианты:

Выводы

Мы рассмотрели несколько аспектов разработки приложения с поддержкой MAC. Все случаи предусмотреть, разумеется, сложно. Большая часть особенностей мандатной модели зависит от реализации, доступной для применения в выбранной ОС.

Поддержка MAC приложением — это не дополнительная «фича» приложения. Это серьезное архитектурное решение, требующее планирования и проектирования. Наибольшая «боль» для проектировщика MAC-совместимого приложения:

Источник



  1. Кстати, а куда прописывать тот факт, что программа зарегистрирована? В реестр, в секретный файл? Или есть более удобные варианты?

  2. Это пока они неуклюжи и беспомощны.

    Про роботов было много шума в 60х
    Сама Алла Пугачева тогда спела песенку «Робот», бо это было в тренде.
    Что-то «пока» сильно затянулось :)

  3. Победить не проблема — надо просто меньше жрать и больше сеять — а для этого уже были идеи сократить население на порядок, а число автоматизированных рабочих мест увеличить на два порядка (от исходной величины населения). Но, сами, понимаете, тут свои недостатки…

  4. Это пока они неуклюжи и беспомощны. Впрочем застрять могут и люди — и периодически застревают- тут нет какой-то принципиальной разницы. Разве что робототехника может подтолкнуть и развитие средств передвижения, как писал тут уже. На заре зарождения автотранспорта он тоже был неуклюжим и имел кучу проблем; да и в те времена люди и на гужевых повозках вполне неплохо себе застревали — дороги ещё те были — но потом прошло более 100 лет прогресса — и стало всё куда лучше! Я же не говорю, что роботы вытеснят людей завтра — я думаю они и до конца следующего века не вытеснят — хотя в XXII веке людям придётся существенно подвинутся, но в целом, не ранее второй половины XXI века этот процесс хоть сколько-нибудь будет заметен, а в ряде отраслей на это могут уйти как столетия, так и тысячелетия. А футурологи в своих прогнозах нынче ну очень уже смелы

  5. Это все конечно здорово но лучше бы мы победили бедность и голод. Лучше бы люди подумали о себе подобных которым воды не хватает а не строили безумные теории о том как мы будем жить в 2050)

  6. Добрый день! Вообще в разработке такой задачи не стояло, так как не очень ясна цель. Клиентское приложение, которое будет только лишь эмулировать браузер, отбрасываем, а задач оператора и администратора системы, которые можно было бы решить исключительно через API, в системе нет. Плюс браузеры это и независимость от OS на клиентском ПК, достаточно лишь более менее современного браузера (Google Chrome 95 и выше, Mozilla Firefox 95 и выше, да хоть бы и Microsoft Edge 93 и выше) и, для редких администраторских задач — SSH-клиента. Сегодня под это требование подходит подавляющее большинство тех ПК, которые используются сотрудниками отделов ИБ.

    А какие недостатки управления через веб-интерфейс Вы видите?

  7. Будущее будет когда вместо 20 серий сериала за n лет будет выдаваться за пол года.

  8. А вот ответ ChatGPT на ваш вопрос:

    «Это действительно хороший вопрос. Оба типа провайдеров — провайдеры облака и провайдеры серверов — имеют доступ к вашим данным и информации. Однако, существует несколько различий, которые могут влиять на выбор провайдера.

    Провайдеры облака обычно имеют большее количество клиентов и могут иметь больше ресурсов, чем провайдеры серверов, что может увеличивать риск взлома или кражи данных. Однако, провайдеры облака также имеют более строгие меры безопасности и контроля доступа, что может уменьшать риск.

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

    В итоге, выбор зависит от индивидуальных потребностей и предпочтений компании или организации. Важно учитывать факторы, такие как степень контроля, удобство, стоимость и меры безопасности, прежде чем принимать решение о выборе провайдера. Важно также выбрать провайдера, который может предоставить необходимые гарантии безопасности и конфиденциальности данных.»

  9. А не думали ли вы к самому комплексу добавить клиент управления им, не через web интерфейс? Примерно так, как это реализовали в компании Microtik?



Понравилась статья? Поделить с друзьями:
  • Postgresql error invalid memory alloc request size
  • Power fan 0 error code 0x100000
  • Power fan 0 error code 0x00100000
  • Postgresql error invalid byte sequence for encoding utf8 postgresql
  • Power error status check power failure code перевод