Безопасность

Этот документ содержит сведения о паролях, аутентификации, конфигурации SSL, разделении сетей, зашифрованной связи, заголовках HTTP и протоколе веб-серверов TLS в контексте клиента API WhatsApp Business.

Пароли и аутентификация

См. раздел Вход и аутентификация для получения подробной информации о маркерах аутентификации и рекомендациях по использованию паролей.

Конфигурация SSL

Для доступа к клиенту API WhatsApp Business необходим протокол HTTPS.

По умолчанию при создании клиента API WhatsApp Business он генерирует самозаверяющий сертификат. Для подтверждения конечной точки клиента API WhatsApp Business и для того, чтобы избежать выдачи предупреждения о доверии сертификату, может потребоваться сертификат центра сертификации (ЦС), который использовался для генерации самозаверяющего сертификата. Вместо самозаверяющего сертификата можно загрузить сертификат ЦС. Подробнее см. в документации по центрам сертификации.

Поскольку протокол HTTPS также требуется Webhooks для обратных вызовов, вы можете использовать собственные сертификаты ЦС, чтобы при выполнении запроса POST к настроенному Webhook в приложении не возникали ошибки SSL. Подробнее см. в документации по центрам сертификации Webhooks.

Разделение сетей

Узлы Webapp и Coreapp рекомендуется размещать в разделенных сетях и предоставлять к ним доступ только тем службам, которым они требуются.

Узел Webapp должен предоставлять доступ к конечным точкам API и веб-администрирования только тем сетям, в которых находятся клиенты API WhatsApp Business и рабочие станции администраторов.

Узлы Coreapp должны предоставлять доступ к службе связи только узлам Webapp, а в конфигурации с распределением нагрузки — предоставлять доступ к службе управления только другим узлам Coreapp.

Зашифрованная связь

Связь между Webapp и Coreapp

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

Примечание. Чтобы избежать проблем с шифрованием, необходимо синхронизировать время между узлами Coreapp и Webapp. В случае рассогласования времени может произойти ошибка из-за защиты от повторного просмотра (проверки метки времени с допуском в 10 секунд).

Связь с базой данных

Чтобы зашифровать подключение к базе данных и защитить передаваемые данные, можно настроить параметры SSL.

Раньше к базе данных мог обращаться только контейнер Coreapp, и шифровать можно было только это подключение, для чего использовалась переменная среды WA_DB_CONNECTION_OPTION. Однако теперь контейнер Webapp также обращается к базе данных, и это подключение тоже требует шифрования. По этой причине конфигурация SSL была сделана нейтральной для всех контейнеров. Шифрование можно настроить с помощью следующих переменных среды:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

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

WA_DB_SSL_VERIFY=0

Примечание. Переменная WA_DB_SSL_VERIFY относится только к Webapp.

Для обеспечения обратной совместимости WA_DB_CONNECTION_OPTION будет по-прежнему поддерживаться в устаревшем режиме для шифрования подключения Coreapp к базе данных. Однако мы настоятельно рекомендуем использовать новые параметры.

Все файлы, указанные в переменных среды KEY, CERT и CA, должны быть доступны внутри контейнера. Для этого на томе данных можно создать каталог certs с соответствующими разрешениями. Том данных обычно монтируется с использованием пути /usr/local/waent/data, и в этом случае путь к каталогу сертификатов в контейнере имеет вид /usr/local/waent/data/certs.

Веб-сервер (TLS)

Протокол TLS и шифрование настроены согласно рекомендациям Mozilla. Webapp поддерживает 3 профиля: MODERN (по умолчанию), INTERMEDIATE и OLD.

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

Заголовки HTTP

Перечисленные ниже заголовки HTTP поддерживаются для конечных точек веб-администрирования, но не для API (поддержка зависит от используемого браузера).

ИмяОписание

X-Content-Security-policy

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

X-Frame-Options

Запрещает всем доменам включать страницу веб-администрирования как iframe.

X-XSS

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

X-Content-Type-Options

Подтверждает, что полученный сервером контент имеет именно тот тип, который он запросил.

Strict-Transport-Security

Разрешает доступ к странице веб-администрирования только по протоколу HTTPS.