include/CalendarSync/migrations/.google_sync_migrated_checked
Раздел содержит справочные материалы по расширенной настройке синхронизации календаря и миграции с устаревшей системы Google Sync.
Для первоначальной настройки синхронизации ознакомьтесь с разделами Руководство администратора и Руководство пользователя.
Если вы ранее использовали устаревшую синхронизацию календаря Google (доступную в SuiteCRM 7.11+), новая платформа синхронизации календаря предоставляет расширенные возможности, включая поддержку нескольких поставщиков, настраиваемое разрешение конфликтов и улучшенную архитектуру.
Понимание различий между устаревшей и обновлённой системами поможет вам при переходе на новую версию:
| Функция | Устаревшая синхронизация | Новая синхронизация |
|---|---|---|
Поддержка провайдера |
Только Google Календарь |
Google Календарь, серверы CalDAV, расширяемая архитектура |
Расположение настроек |
Только в панели администратора |
В панели администратора (глобальные настройки) + настройка учётной записи календаря для каждого пользователя |
Авторизация пользователей |
На вкладке Дополнительно в профиле пользователя |
В отдельном модуле Учётные записи календаря |
Разрешение конфликтов |
Фиксированное поведение (побеждает последнее изменение) |
Настраиваемые стратегии (настройка временного интервала, настройка приоритета) |
Задание планировщика |
Задание Синхронизировать с календарём Google |
Задание Синхронизировать учётные записи календаря |
Поведение при удалении записи |
Фиксированная двусторонняя синхронизация |
Настраиваемое удаление |
Синхронизация в реальном времени |
Недоступно |
Дополнительные логические хуки для немедленной синхронизации при сохранении/удалении записи |
Модель данных |
Устаревшие таблицы и связи |
Обновлённая структура данных с сущностью Учётная запись календаря |
При обновлении до версии 7.15+, где используется обновлённая версия синхронизации календаря, миграция выполняется автоматически. Система обнаруживает существующие устаревшие настройки синхронизации с календарём Google и преобразует их для использования в обновлённой версии.
При автоматической миграции выполняются следующие операции:
Создание внешнего поставщика OAuth
Создается внешний поставщика OAuth на основе существующих учётных данных Google API (идентификатор клиента и секретный ключ клиента)
Настройки OAuth переносятся из config.php или config_override.php
Для внешнего провайдера OAuth устанавливается связь со службой календаря Google
Миграция задания планировщика
Находится устаревшее задание планировщика Синхронизировать с календарём Google
На основе старого задания создается новое задание планировщика Синхронизировать учётные записи календаря
Из старого задания в новое переносятся настройки статуса и периодичность выполнения задания
Создание учётной записи календаря
Сканируются данные всех пользователей с настроенной устаревшей синхронизацией Google (настройки вкладки Дополнительно в профиле пользователя)
Создаются учётные записей календаря для каждого пользователя с включённой синхронизацией Google
Переносятся настройки пользователя (выбор календаря, параметры синхронизации)
Учётные записи календаря связываются с вновь созданным внешним провайдером OAuth
Миграция токенов OAuth
Токены доступа OAuth и токены обновления переносятся в новую структуру данных
Сохраняется время истечения срока действия токенов
Токены шифруются для обеспечения необходимого уровня безопасности
Токены связываются с учётными записями календаря
Миграция синхронизаций встреч
Переносятся из устаревших таблиц существующие сопоставления встреч и событий
Заполняются поля идентификаторов внешнего календаря в записях встреч
Сохраняется история синхронизации и даты последней синхронизации
Обновляются связи данных для работы с новой структурой учётной записи календаря
После успешной миграции система создает файл маркера для предотвращения повторного запуска автоматической миграции:
include/CalendarSync/migrations/.google_sync_migrated_checked
Этот файл проверяется при каждом запуске системы. Если он присутствует, автоматическая миграция пропускается.
Автоматическая миграция сохраняет все существующие токены OAuth и подключения к календарю. Не нужно повторно авторизовывать учётную запись Google после обновления. Если миграция обнаружит ошибки, проверьте файл suitecrm.log на наличие записей с префиксом [CalendarSyncMigration].
После завершения автоматической миграции убедитесь в её успешном завершении:
Проверка внешнего поставщика OAuth
В панели администратора откройте раздел Внешние провайдеры OAuth
Убедитесь, что существует провайдер Google OAuth с необходимыми учётными данными
Проверка учётных записей календаря
Перейдите в модуль Учётные записи календаря
Убедитесь, что существуют учётные записи календаря для пользователей, у которых была настроена синхронизация устаревших версий
Убедитесь, что поле Подключение OAuth заполнено
Убедитесь, что поле Дата последней синхронизации обновляется после первой запланированной синхронизации
Проверка синхронизации
Откройте учётную запись календаря для редактирования и нажмите на кнопку Проверить подключение
Убедитесь, что проверка успешно завершена
В меню Действия Формы просмотра учётной записи нажмите на кнопку Синхронизировать для запуска синхронизации вручную
Убедитесь, что синхронизация между SuiteCRM и Google Calendar прошла успешно
Проверка планировщика
В панели администратора откройте раздел Планировщик
Убедитесь, что задание Синхронизировать учётные записи календаря существует и активно
Убедитесь, что задание успешно выполнено (проверьте время последнего успешного выполнения задания)
При необходимости отключите устаревшее задание Синхронизировать с календарём Google, если оно все ещё существует
Если автоматическая миграция не выполнилась или вам необходимо выполнить чистую установку без переноса устаревших данных, выполните следующие шаги вручную:
Создание внешнего поставщика OAuth
В панели администратора откройте раздел Внешние провайдеры OAuth
В меню выберите Создать персонального провайдера OAuth
Настройте поставщика:
Название: "Google Calendar OAuth" или аналогичное
Подключение: Google
ID клиента: из консоли разработчика Google
Секрет клиента: из консоли разработчика Google
Нажмите на кнопку Сохранить
Детальнее настройки внешнего провайдера OAuth описаны в разделе Описание настроек внешнего провайдера OAuth.
Создание учётных записей календарей пользователей
Каждый пользователь должен создать свою собственную учётную запись календаря:
Откройте модуль Учётные записи календаря
В боковом меню выберите Создать персональную учётную запись календаря
Заполняет обязательные поля:
Название: Описательное имя (например, «Мой календарь Google»)
Источник: Google Calendar
Подключение OAuth: Выберите ранее созданное внешнее подключение OAuth
Пользователь календаря: Выберите необходимого пользователя
Нажмите на кнопку Проверить подключение для завершения авторизации OAuth
Нажмите на кнопку Сохранить для создания учётной записи
Детально создание учётной записи календаря описано в разделе Руководство пользователя.
Проверка настроек планировщика
В панели администратора откройте раздел Планировщик
Откройте для редактирования задание Синхронизировать учётные записи календаря
Убедитесь, что задание находится в статусе Активно
Настройте периодичность синхронизации (по умолчанию: каждые 15 минут)
Нажмите на кнопку Сохранить
Детально настройка планировщика описана в разделе link:./admin-setup/#_настройка_задания_планировщика
Проверка синхронизации
Откройте учётную запись календаря для редактирования и нажмите на кнопку Проверить подключение
Убедитесь, что проверка успешно завершена
В меню Действия Формы просмотра учётной записи нажмите на кнопку Синхронизировать для запуска синхронизации вручную
Убедитесь, что синхронизация между SuiteCRM и Google Calendar прошла успешно
В разделе представлены все доступные параметры синхронизации. Параметры прописываются в файле config_override.php и обеспечивают детальный контроль над поведением синхронизации. Не все указанные ниже параметры могут быть настроены через графический интерфейс.
Включайте только те параметры, которые вы хотите переопределить — все параметры имеют значения по умолчанию.
<?php
// Добавить в config_override.php
$sugar_config['calendar_sync'] = [
// ===================================
// Временной диапазон (окно синхронизации)
// ====================================
// Количество прошедших дней для включения в синхронизацию
'sync_window_past_days' => 30,
// Количество будущих дней для включения в синхронизацию
'sync_window_future_days' => 90,
// ===================================
// Разрешение конфликтов
// ===================================
// Стратегия разрешения конфликтов при изменении одного и того же события в обеих системах
// Допустимые значения: 'timestamp', 'external_based', 'internal_based'
'conflict_resolution' => 'timestamp',
// ===================================
// Поведение при удалении записей
// ===================================
// Разрешить удаление встреч в SuiteCRM при удалении событий во внешнем календаре
'allow_internal_event_deletion' => true,
// Разрешить удаление событий во внешнем календаре при удалении встреч в SuiteCRM
'allow_external_event_deletion' => true,
// ===================================
// Синхронизация в реальном времени
// ====================================
// Включить логические хуки для запуска немедленной синхронизации при сохранении/удалении встреч
'enable_calendar_sync_logic_hooks' => true,
// ===================================
// Настройки внешнего календаря
// ====================================
// Значение, отображаемое во внешнем календаре для событий SuiteCRM
'external_calendar_name' => 'SuiteCRM',
];
Всегда проверяйте изменения настроек в средах разработки или тестирования, прежде чем применять их в рабочей среде. Неправильные настройки могут привести к сбоям синхронизации или к потере данных.
В разделе представлено подробное описание вышеуказанных параметров, включая тип, значение по умолчанию, допустимый диапазон значений, влияние и рекомендации.
Количество прошедших дней, которые необходимо включить в синхронизацию. События, произошедшие раньше указанного количества дней, игнорируются.
Тип: Целое число
По умолчанию: 30
Допустимый диапазон: 0 до 365
Влияние: Большие значения увеличивают количество синхронизируемых событий, что влияет на производительность и продолжительность синхронизации. Меньшие значения улучшают производительность, но исключают из обработки давние события.
Рекомендации:
30 дней для стандартного использования (синхронизация недавних событий)
0 дней для синхронизации только сегодняшних и будущих событий (минимальное использование ресурсов)
90 дней и более для анализа более давних событий или составления отчетов
365 дней для синхронизации полной истории календаря (используйте только при наличии достаточных ресурсов)
Прошедшие события многочисленнее будущих, поэтому указание большого временного диапазона для таких событий оказывает существенное влияние на производительность системы.
Пример:
// Синхронизация только сегодняшних и будущих событий (минимальное использование ресурсов)
$sugar_config['calendar_sync']['sync_window_past_days'] = 0;
// Или синхронизация прошедших 90 дней истории для составления отчетов
$sugar_config['calendar_sync']['sync_window_past_days'] = 90;
Количество будущих дней, которые необходимо включить в синхронизацию. События, произошедшие вне указанных временных рамок, игнорируются.
Тип: Целое число
По умолчанию: 90
Допустимый диапазон: 1 до 730 (2 года)
Влияние: Параметр определяет, насколько далеко вперед синхронизируются встречи. Большие значения оказывают минимальное влияние на производительность, поскольку количество будущих событий меньше прошедших.
Рекомендации:
90 дней (3 месяца) для стандартных горизонтов планирования
180 дней (6 месяцев) для среднесрочного планирования
365 дней (1 год) для долгосрочного планирования и управления проектами
730 дней (2 года) для очень долгосрочного планирования (требуется редко)
Будущие события обычно происходят нечасто (относительно прошедших), поэтому указание большого временного диапазона для таких событий оказывает минимальное влияние на производительность системы.
Пример:
// Синхронизация на 1 год вперед для долгосрочного планирования
$sugar_config['calendar_sync']['sync_window_future_days'] = 365;
Стратегия разрешения конфликтов, когда одно и то же событие изменяется между запусками синхронизации как в SuiteCRM, так и во внешнем календаре.
Тип: Строка (перечисление)
По умолчанию: timestamp
Допустимые значения:
timestamp: Приоритет отдается последнему изменению (сравниваются даты изменений)
external_based: Изменения во внешнем календаре всегда имеют приоритет
internal_based: Изменения в SuiteCRM всегда имеют приоритет
Влияние: Параметр определяет, какая версия события сохраняется при возникновении конфликтов. Неправильная стратегия может вызвать путаницу у пользователя, когда его изменения будут перезаписаны.
Рекомендации:
Используйте timestamp для сбалансированного взаимодействия (рекомендуется для большинства установок)
Используйте external_based, если внешний календарь (мобильные приложения) является основным интерфейсом для большинства пользователей
Используйте internal_based, если SuiteCRM является основным источником информации, а внешний календарь используется только для просмотра событий
При выборе учитывайте рабочие процессы пользователей и модели коммуникации
Подробные сценарии разрешения конфликтов описаны в разделе Стратегия разрешения конфликтов.
Пример:
// Внешний календарь является основным (для мобильных пользователей)
$sugar_config['calendar_sync']['conflict_resolution'] = 'external_based';
// Или SuiteCRM является основным источником информации
$sugar_config['calendar_sync']['conflict_resolution'] = 'internal_based';
Параметр определяет, удаляются ли события из SuiteCRM при удалении их из внешнего календаря.
Тип: Логическое значение
По умолчанию: true
Допустимые значения: true или false
Влияние: Если значение равно false, удаление события во внешнем календаре НЕ приведет к удалению встречи в SuiteCRM. Встреча будет повторно синхронизирована с внешним календарем при следующей синхронизации.
Рекомендации:
Оставьте значение true для двусторонней синхронизации (рекомендуется для большинства установок)
Установите значение false, если необходимо сохранять записи о встречах SuiteCRM при удалении событий во внешнем календаре
Установите значение false, если SuiteCRM является системой учёта истории встреч
При настройке параметра учитывайте политику хранения и требования соответствия данных
Пример:
// Сохранять встречи SuiteCRM при удалении событий из внешнего календаря
$sugar_config['calendar_sync']['allow_internal_event_deletion'] = false;
Параметр определяет, удаляются ли события из внешнего календаря при удалении их из SuiteCRM.
Тип: Логическое значение
По умолчанию: true
Допустимые значения: true или false
Влияние: Если значение равно false, удаление встречи в SuiteCRM НЕ приведет к удалению события во внешнем календаре. Событие будет повторно синхронизировано с SuiteCRM при следующей синхронизации.
Рекомендации:
Оставьте значение true для двусторонней синхронизации (рекомендуется для большинства установок)
Установите значение в false, если необходимо сохранять события внешнего календаря при удалении встреч из SuiteCRM
Установите значение в false, если внешний календарь является системой учёта истории событий
Может быть полезно, если внешний календарь содержит события из нескольких источников
Пример:
// Сохранять события внешнего календаря при удалении встреч SuiteCRM
$sugar_config['calendar_sync']['allow_external_event_deletion'] = false;
Отключение любой из настроек удаления может привести к появлению 'осиротевших' событий, которые существуют в одной системе, но отсутствуют в другой. События будут воссозданы при следующем запуске синхронизации. Рассмотрите вариант ручного удаления подобных событий, если будет отключена синхронизация удаления.
Параметр включает синхронизацию в реальном времени с помощью логических хуков, запускаемых при сохранении/удалении встреч в SuiteCRM.
Тип: Логическое значение
По умолчанию: false
Допустимые значения: true или false
Влияние: При включённом параметре изменения во встречах в SuiteCRM запускают немедленную синхронизацию с внешним календарем (в дополнение к запланированной синхронизации). Это обеспечивает синхронизацию практически в реальном времени, но увеличивает нагрузку на систему при операциях сохранения/удаления встреч.
Рекомендации:
Включить, если необходима синхронизация практически в реальном времени
Включить, если пользователи ожидают немедленного отображения изменений во внешнем календаре
Отключить, если вы предпочитаете только пакетную обработку (синхронизацию по расписанию)
Отключить, если есть проблемы с производительностью системы
Отключить во время массового импорта или миграции данных, чтобы избежать запуска синхронизации для каждой встречи
Пример:
// Включить синхронизацию в реальном времени
$sugar_config['calendar_sync']['enable_calendar_sync_logic_hooks'] = true;
Логические хуки влияют только на синхронизацию SuiteCRM с внешним календарем. Изменения во внешнем календаре всегда обнаруживаются во время выполнения синхронизации по расписанию, независимо от этой настройки.
Название, отображаемое во внешнем календаре для событий, созданных или синхронизированных в SuiteCRM. Это помогает понять, какая календарная система создала событие.
Тип: Строка
По умолчанию: SuiteCRM
Допустимые значения: Любая строка (обычно от 3 до 50 символов)
Влияние: Название может отображаться в описаниях событий, метаданных или информации об источнике календаря во внешней календарной системе. Оно не влияет на логику синхронизации.
Рекомендации:
Используйте название вашей компании для брендинга (например, "Acme Corp CRM")
Используйте описательный идентификатор, например, "CRM Calendar" или "Company Calendar"
Создавайте краткие названия для лучшего отображения в мобильных и настольных приложениях-календарях
Избегайте специальных символов, которые могут отображаться некорректно в системах календарей
Пример:
// Добавить брендинг с названием компании
$sugar_config['calendar_sync']['external_calendar_name'] = 'Acme Corp CRM';
// Или использовать описательный идентификатор
$sugar_config['calendar_sync']['external_calendar_name'] = 'Business Calendar';
Эти примеры демонстрируют готовые настройки для распространенных сценариев. Используйте их в качестве отправной точки и адаптируйте в соответствии с конкретными требованиями.
SuiteCRM является приоритетным источником информации, внешний календарь предназначен в основном для просмотра.
<?php
// Приоритетная настройка CRM
// Лучше всего подходит для: отделов продаж, рабочих процессов, ориентированных на CRM, контролируемого планирования
$sugar_config['calendar_sync'] = [
// Изменения в SuiteCRM всегда выигрывают в конфликтах
'conflict_resolution' => 'internal_based',
// Сохранять встречи SuiteCRM при удалении внешних событий
'allow_internal_event_deletion' => false,
// Включить логические хуки для немедленной синхронизации с внешним календарём
'enable_calendar_sync_logic_hooks' => true,
// Стандартный временной диапазон синхронизации
'sync_window_past_days' => 30,
'sync_window_future_days' => 90,
];
Приоритет SuiteCRM гарантирует, что данные CRM никогда не будут перезаписаны.
Удаление внешних событий не приведет к удалению встреч в SuiteCRM (сохранение данных).
Логические хуки обеспечивают немедленное обновление внешнего календаря после изменений в CRM.
Пользователи используют CRM для планирования, внешний календарь — только для просмотра.
Отделы продаж, планирующие все встречи в SuiteCRM.
Организации, где CRM является основной системой учёта истории встреч.
Среды, где изменения внешнего календаря не должны влиять на данные CRM.
Внешний календарь (в мобильных приложениях) является основным интерфейсом, SuiteCRM используется для хранения данных.
<?php
// Приоритетная настройка внешнего календаря
// Лучше всего подходит для: ориентированных на мобильные устройства пользователей, выездных команд, использования внешнего календаря в качестве источника данных
$sugar_config['calendar_sync'] = [
// Изменения во внешнем календаре всегда выигрывают в конфликтах
'conflict_resolution' => 'external_based',
// Сохранять внешние события при удалении встреч в SuiteCRM
'allow_external_event_deletion' => false,
// Отключить логические хуки (только пакетная синхронизация)
'enable_calendar_sync_logic_hooks' => false,
// Более длительный временной диапазон синхронизации для получения полной истории мероприятий
'sync_window_past_days' => 60,
'sync_window_future_days' => 180,
];
Внешний приоритет гарантирует, что изменения, внесённые с мобильных устройств, никогда не будут перезаписаны
Удаление встреч в SuiteCRM не приведёт к удалению внешних событий (сохранение данных)
Логические хуки отключены - пользователи редактируют данные во внешнем календаре, а не в CRM
Более длительный временной диапазон синхронизации позволяет получить больше данных для отчётности
Выездные команды, использующие в основном мобильные приложения календаря
Организации, где Google Calendar или Outlook являются основным инструментом планирования
Пользователи, которые редко редактируют встречи непосредственно в SuiteCRM
Оптимизировано для сред с ограниченными ресурсами или с небольшим количеством пользователей.
<?php
// Настройка минимального использования ресурсов
// Лучше всего подходит для: систем с небольшим количеством пользователей, ограниченных ресурсов сервера, небольшого количества мероприятий
$sugar_config['calendar_sync'] = [
// Минимальный временной диапазон для уменьшения количества синхронизируемых событий
'sync_window_past_days' => 0, // Только сегодня и в будущем
'sync_window_future_days' => 30, // Только на 1 месяц вперед
// Отключить логические хуки во избежание накладных расходов
'enable_calendar_sync_logic_hooks' => false,
// Стандартное разрешение конфликтов
'conflict_resolution' => 'timestamp',
];
Нет необходимости в синхронизации событий за прошедшие дни
Короткий временной интервал (30 дней) сокращает количество вызовов API и время обработки
Выключение логических хуков означает отсутствие накладных расходов во время записи встреч
Малые предприятия с 5-20 пользователями
Среды общего хостинга с ограничениями ресурсов
Системы, где скорость синхронизации не критична
Возможно, вам потребуется временно или навсегда отключить синхронизацию календаря для технического обслуживания, устранения неполадок или если вы её больше не используете.
Чтобы полностью отключить синхронизацию календаря для всех пользователей, выполните следующее:
Отключите задание планировщика
В панели администрирования перейдите в раздел Планировщик
Отредактируйте задание Синхронизировать учётные записи календаря, установив Статус в значение Не активно
Нажмите на кнопку Сохранить
В этом случае автоматическая синхронизация выполниться не будет. Ручная синхронизация с помощью кнопки Синхронизировать по-прежнему остаётся доступна через меню в Форме просмотра учётной записи календаря.
Отключите логические хуки (необязательно)
Для прекращения синхронизации в реальном времени, отключите логические хуки.
Для этого в настройках синхронизации календаря отключите параметр
Включить логические хуки синхронизации календаря,
либо пропишите в файле config_override.php следующее:
$sugar_config['calendar_sync']['enable_calendar_sync_logic_hooks'] = false;
Убедитесь в остановке синхронизации
Дождитесь следующего запланированного времени синхронизации
Проверьте страницу состояния настроек синхронизации календаря
Убедитесь, что метка времени в параметре Последний запуск планировщика не обновляется
Просмотрите suitecrm.log, чтобы убедиться, что синхронизация не выполняется
Отключение планировщика и логических хуков предотвращает новые операции синхронизации, но не удаляет существующие учётные записи календаря или синхронизированные данные встреч. Учётные записи календаря могут быть вновь активированы при повторном включении задания планировщика.
Чтобы отключить синхронизацию для конкретного пользователя без влияния на других пользователей, удалите его учётную запись календаря:
Перейдите в модуль Учётные записи календаря
Откройте необходимую учётную запись календаря
Нажмите на кнопку Удалить
Подтвердите удаление
При удалении учётной записи календаря удаляется всю история настроек синхронизации и сопоставлений для указанного пользователя. Чтобы возобновить синхронизацию, пользователю необходимо заново создать учётную запись календаря и повторно авторизоваться. Записи встреч сохраняются, но сопоставления внешних событий календаря теряются. При следующей синхронизации встречи будут повторно сопоставлены с внешними событиями календаря.
Чтобы временно отключить синхронизацию во время технического обслуживания системы выполните следующее:
Перед техническим обслуживанием:
Отключите задание планировщика Синхронизировать учётные записи календаря
Дождитесь завершения всех запущенных операций синхронизации (проверьте состояние планировщика)
При необходимости уведомите пользователей о том, что синхронизация временно недоступна
Во время технического обслуживания:
Выполните обновление системы, миграцию данных или другие задачи технического обслуживания
Операции синхронизации не будут мешать техническому обслуживанию
После технического обслуживания
Повторно включите задание планировщика Синхронизировать учётные записи календаря
При необходимости запустите немедленную синхронизацию для всех пользователей в настройках синхронизации календаря
Проконтролируйте первый запуск синхронизации, чтобы убедиться в отсутствии ошибок
Чтобы повторно включить ранее отключенную синхронизацию:
Включите задание планировщика
В панели администрарора откройте раздел Планировщик
Откройте задание Синхронизировать учётные записи календаря
Измените статус задания на Активно
Нажмите на кнопку Сохранить
Повторно включите логические хуки (при необходимости)
В настройках синхронизации календаря включите параметр
Включить логические хуки синхронизации календаря,
либо пропишите в файле config_override.php следующее:
$sugar_config['calendar_sync']['enable_calendar_sync_logic_hooks'] = true;
Убедитесь в возобновлении синхронизации
Дождитесь следующего запланированного времени синхронизации
Проверьте страницу состояния настроек синхронизации календаря
Убедитесь, что обновляется метка времени в параметре Последний запуск планировщика
Проверьте синхронизацию в Форме редактирования учётной записи календаря, используя кнопку Проверить подключение и через меню Формы просмотра учётной записи календаря
Понимание аспектов безопасности поможет обеспечить надежную синхронизацию календаря и защитить ваши данные.
Данные передаются напрямую между экземпляром SuiteCRM и серверами поставщика календаря
Не используются промежуточные сервисы или серверы третьих сторон
SuiteCRM выступает в качестве клиента для API внешнего календаря
Сетевой трафик шифруется при использовании HTTPS
По сети передаются следующие данные о встречах:
Названия и темы встреч
Даты/время начала и окончания встреч
Описания встреч
Информация о местоположении
Идентификаторы внешнего календаря (для сопоставления)
Пароли пользователей SuiteCRM
Информация о назначенных ответственных
Подробная информация о родительских записях (связанные Контрагенты, Контакты, Сделки)
Пользовательские поля (метаданные SuiteCRM)
Данные о приглашённых участниках встреч
Статус встреч (В планах, Состоялась, Не состоялась)
Внешние поставщики календарей имеют свои собственные политики хранения данных и конфиденциальности:
Google Calendar: Данные хранятся на серверах Google и регулируются политикой конфиденциальности и правилами хранения данных Google
Собственный сервер CalDAV: Полный контроль над хранением и политикой конфиденциальности данных
Облачные поставщики CalDAV: Зависит от политики конфиденциальности конкретного поставщика
Убедитесь, что политика конфиденциальности поставщика календаря соответствует требованиям вашей организации (GDPR, HIPAA, CCPA и т.д.).
Каждый пользователь авторизует только свое собственное подключение к календарю через модуль Учётные записи календаря
Пользователи не могут получить доступ к внешним календарям других пользователей, используя функционал SuiteCRM
Учётные записи календаря принадлежат конкретным пользователям
Администраторы системы могут просматривать учётные записи календаря, но не могут авторизовываться от имени пользователей
OAuth-токены доступа и обновления хранятся в зашифрованном виде в базе данных SuiteCRM
Токены шифруются с использованием ключа шифрования SuiteCRM (см. файл config.php)
Токены во время авторизации передаются по HTTPS
Обновление токенов происходит автоматически без участия пользователя
При использовании просроченных токенов требуется повторная авторизация пользователя
Имя пользователя и пароль хранятся в базе данных SuiteCRM
Пароли перед хранением шифруются с помощью алгоритма Blowfish (db_encrypted ⇒ true); имена пользователей хранятся в открытом виде
Для дополнительной безопасности рекомендуется использовать пароли приложений вместо паролей учётных записей
Администраторы системы могут:
Настраивать глобальные параметры синхронизации (диапазон синхронизации, стратегия разрешения конфликтов, поведение при удалении записей)
Запускать немедленную синхронизацию для всех пользователей, используя немедленную синхронизацию
Просматривать все учётные записи календаря (но без возможности OAuth-авторизации от имени пользователей)
Получать доступ к журналам синхронизации и диагностической информации
Изменять расширенные параметры синхронизации в файле config_override.php (при доступе к консоли)
Администраторы НЕ МОГУТ:
Получать прямой доступ к содержимому внешних календарей пользователей
Повторно авторизовывать подключения OAuth от имени пользователей без использования их учётных данных
Просматривать зашифрованные токены в открытом виде
Расшифровывать сохраненные пароли CalDAV
Убедитесь, что подключение к SuiteCRM происходит с использованием HTTPS:
В рабочей среде: HTTPS обязателен для защиты токенов и учётных данных
При разработке/тестировании: Используйте HTTPS даже в средах разработки, когда это возможно
Конфигурация SSL: Используйте действительные SSL-сертификаты (не самоподписанные - в рабочей среде)
HTTP Strict Transport Security: Включите HSTS для принудительного использования HTTPS-соединений
По возможности для подключений к CalDAV используйте пароли приложений, преимущества такого подхода:
Ограниченная область действия (доступ только к календарю)
Простое аннулирование пароля без изменения пароля основной учётной записи
Улучшенный аудит безопасности
Соответствие политикам многофакторной аутентификации (MFA)
Дополнительный пароль, используемый независимо от основных учётных данных
Поддерживайте необходимый уровень безопасности посредством периодических аудитов:
Ежемесячный аудит: проверяйте активные учётные записи календаря на наличие неиспользуемых или 'осиротевших' подключений
Ежеквартальный аудит: проверяйте актуальность токенов OAuth для обеспечения доступа пользователей к календарям
Мониторинг журналов: проводите анализ журналов синхронизации на предмет подозрительной активности или повторяющихся сбоев аутентификации
Проверка доступа: проверяйте, что только у авторизованных пользователей есть активные учётные записи календаря
❏ Проверка всех активных учётных записей календаря
❏ Проверка актуальности Даты последней синхронизации для всех учётных записей
❏ Проверка учётных записей с неудачными попытками подключения
❏ Удаление учётных записей календаря для уволившихся или неактивных пользователей
❏ Анализ журналов синхронизации на предмет сбоев аутентификации или повторяющихся ошибок
❏ Проверка прав доступа к внешнему календарю
❏ Проверка актуальности учётных данных у провайдеров OAuth
Храните резервные копии базы данных в зашифрованном хранилище
В БД при возможности включите шифрование полей, содержащих конфиденциальную информацию (сторонние решения)
Используйте надежные пароли для учётных записей CalDAV (минимум 16 символов)
Регулярно меняйте пароли CalDAV и пароли приложений (ежеквартально или ежегодно)
Внедрите при возможности ограничения по IP-адресам для доступа к внешнему календарю (при использовании CalDAV на собственном сервере)
Используйте VPN для подключения к CalDAV при размещении календаря на собственном сервере (повышенная безопасность)
Задокументируйте, у каких пользователей включена синхронизация календаря, и проверьте их права доступа
При необходимости ознакомьтесь с другими разделами документации:
Руководство пользователя, если необходимо оказать помощь пользователям с подключением календаря.
Руководство администратора, если необходимо изменить глобальные параметры синхронизации.
Руководство для провайдеров CalDAV для получения информации о настройке CalDAV.
Детали синхронизации и устранение неполадок для детальной диагностики синхронизации.
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.