Настройка прав доступа к медиафайлам 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка прав доступа к медиафайлам 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка прав доступа к медиафайлам 1С-Битрикс

Медиабиблиотека Битрикс поддерживает права доступа на уровне коллекций (папок), но не на уровне отдельных файлов. Это значит: либо пользователь видит всю коллекцию, либо не видит ничего. Для более тонкого разграничения — например, «редактор контента видит только свои загрузки, а не файлы других отделов» — нужна дополнительная настройка.

Встроенная система прав медиабиблиотеки

Права на коллекции хранятся в таблице b_medialib_coll_right. Структура: COLLECTION_ID, GROUP_ID, PERMISSION. Уровни прав:

  • R — чтение (просмотр файлов)
  • W — запись (добавление файлов в коллекцию)
  • X — управление (редактирование, удаление)

Права задаются через интерфейс: Контент → Медиабиблиотека → [правая кнопка на коллекции] → Права доступа. Или программно:

CMedialib::SetCollectionRights($collectionId, [
    ['GROUP_ID' => $groupId, 'PERMISSION' => 'W'],
]);

Ограничение доступа к физическим файлам

Проблема в том, что файлы в /upload/ доступны напрямую по URL без авторизации — веб-сервер отдаёт их статически, минуя PHP. Чтобы ограничить доступ к файлам, нужно:

  1. Перенести закрытые файлы в директорию вне DocumentRoot или в /upload/protected/
  2. Настроить веб-сервер так, чтобы обращения к защищённым файлам проходили через PHP-обработчик

Для Nginx добавляется location:

location ~* ^/upload/protected/ {
    internal;
    alias /var/www/upload/protected/;
}

PHP-скрипт проверяет права пользователя и отдаёт файл через X-Accel-Redirect:

if (!$USER->IsAuthorized() || !checkFileAccess($fileId)) {
    header('HTTP/1.0 403 Forbidden');
    exit;
}
header('X-Accel-Redirect: /upload/protected/' . $filePath);
header('Content-Type: ' . $mimeType);

Права на уровне файла

Для прав на конкретные файлы (не коллекции) создаётся отдельная таблица:

CREATE TABLE bl_medialib_file_rights (
    file_id     INT NOT NULL,
    group_id    INT NOT NULL,
    permission  CHAR(1) NOT NULL DEFAULT 'R',
    PRIMARY KEY (file_id, group_id)
);

При обращении к защищённому файлу PHP проверяет членство пользователя в группах ($USER->IsInGroup($groupId)) и наличие записи с нужным уровнем прав.

Разграничение для разных отделов

Типовая схема для крупного магазина с несколькими отделами контента:

Коллекция Группа Права
/Каталог/Электроника Менеджеры электроники W (чтение + запись)
/Каталог/Одежда Менеджеры одежды W
/Маркетинг/Баннеры Маркетологи X (полный)
/Архив Все контент-менеджеры R (только чтение)

Группы создаются через CGroup::Add(), пользователи добавляются через CUser::Update() с полем GROUP_ID.

Аудит доступа

Для отслеживания, кто и когда обращался к защищённым файлам, создаётся лог в таблице bl_file_access_log с полями file_id, user_id, accessed_at, ip, result (allowed/denied). Лог пишется в PHP-обработчике файловых запросов.

Что входит в настройку

  • Аудит текущей структуры коллекций и существующих прав
  • Настройка прав на коллекции по группам пользователей
  • Конфигурация веб-сервера для защиты файлов в /upload/
  • При необходимости — реализация прав на уровне отдельных файлов
  • PHP-обработчик для проверки прав и отдачи файлов через X-Accel-Redirect
  • Настройка лога обращений к защищённым файлам