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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування прав доступу до медіафайлів 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування прав доступу до медіафайлів 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
  • Налаштування логу звернень до захищених файлів