Управление конфиденциальными данными

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

В DC CMS существует несколько способов управления конфиденциальными данными.

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

Конфиденциальные данные, хранимые внешне

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

Например, вы можете использовать AWS Secrets или сервер Vault для безопасного управления своими конфиденциальными данными. Таким образом, данные остаются вне DC CMS, обеспечивая дополнительный уровень защиты.

Конфиденциальные данные, хранимые внутри

Когда использование конфиденциальных данных, хранимых внешне, недоступно, DС CMS позволяет использовать зашифрованные данные, которые хранятся внутри системы. Это значит, что конфиденциальные данные будут храниться непосредственно в конфигурационных файлах и, таким образом, будут зашифрованы.

Ключи шифрования можно настраивать, что позволяет использовать различные ключи в различных окружениях, таких как development, testing и production.

DC CMS предоставляет несколько способов шифрования конфиденциальных данных:

Шифрование

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

Применяемый алгоритм шифрования - это шифрование на основе пароля (Password Based Encryption) с использованием алгоритма симметричного шифрования (Advanced Encryption Standard), при этом определенные значения ключа и соли назначаются для генерации ключа, применяемого в процессах шифрования и дешифрования.

При шифровании с использованием конфигурационных файлов CMS Studio и пользовательского интерфейса используются дефолтовые значения KEY и SALT для шифратора. Значения задаются в переменных окружения посредством Hashicorp Vault:

export CMS_ENCRYPTION_KEY=${CMS_ENCRYPTION_KEY:="default_encryption_key"}
export CMS_ENCRYPTION_SALT=${CMS_ENCRYPTION_SALT:="default_encryption_salt"}

Copy-icon

Автоматическое шифрование данных в конфигурационных файлах Copy-icon

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

Файлы конфигурации на уровне проекта, подходящие для шифрования:

  • конфигурация ядра проекта (/config/engine/site-config.xml)
  • профили AWS (/config/studio/aws/aws.xml)
  • профили Box (/config/studio/box/box.xml)
  • профили WebDAV (/config/studio/webdav/webdav.xml)

Как шифровать текст в файле конфигурации

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

  1. Откройте файл конфигурации, содержащий текст или информацию, которую вы хотите зашифровать.
  2. Найдите конкретную запись, которую вы собираетесь зашифровать, и добавьте атрибут encrypted="".
  3. Нажмите на кнопку Отмечено шифрованием, чтобы применить шифрование к указанному тексту.
  4. Ваша секретная информация теперь зашифрована и будет отображаться с атрибутом encrypted="true". Не забудьте сохранить файл, чтобы применить изменения.

Пример

Для примера рассмотрим процесс шифрования accessKey и securityKey в конфигурации профилей AWS:

1. Для доступа к файлу конфигурации профилей AWS перейдите в Инструменты сайта > Конфигурация и выберите Профили AWS.

Изображение статьи
Изображение статьи

2. Добавим профиль AWS S3. Обратите внимание, что accessKey и secretKey находятся в открытом доступе.

<?xml version="1.0" encoding="UTF-8"?>
<aws>
  <s3>
  <!--
  AWS S3 Profile
  Additional properties:
  <bucketName/>
  <pathStyleAccess/>

  bucketName: name of the bucket where files will be uploaded
  pathStyleAccess: indicates if path style access should be used for all requests (defaults to false)
  -->

    <profile>
      <id>s3-default</id>
        <credentials>
        <accessKey>YOUR_ACCESS_KEY</accessKey>
        <secretKey>YOUR_ACCESS_KEY</secretKey>
      </credentials>
      <region>us-west-1</region>
      <bucketName>sample-input-bucket</bucketName>
      <pathStyleAccess>true</pathStyleAccess>
    </profile>
  </s3>
</aws>

Copy-icon

3. Чтобы зашифровать accessKey и secretKey, добавим им атрибут encrypted="".

<accessKey encrypted="">YOUR_ACCESS_KEY</accessKey>
<secretKey encrypted="">YOUR_ACCESS_KEY</secretKey>

Copy-icon
Изображение статьи

4. Теперь нажмите на кнопку Отмечено шифрованием. Это действие зашифрует выделенные элементы, и атрибут для них изменится на encrypted="true". Следовательно, accessKey и secretKey теперь зашифрованы и будут дешифрованы CMS Studio по необходимости.

Изображение статьи

Инструмент шифрования CMS Studio UI Copy-icon

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

Есть два метода доступа к инструментам шифрования в CMS Studio: через навигационное меню и через Инструменты сайта на уровне проекта.

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

Изображение статьи

В противном случае можно получить доступ к инструменту шифрования, перейдя в свой проект и открыв боковую панель, где далее нужно нажать на Инструменты сайта > Шифрование.

Изображение статьи
Изображение статьи

Чтобы зашифровать конфиденциальную информацию, такую как пароли или ключи доступа, введите соответствующие данные в поле Незашифрованный текст и нажмите на Зашифровать текст. Это действие создаст зашифрованную версию пароля или ключа доступа, которую затем можно вставить в файл конфигурации.

Изображение статьи

CMS Studio также предоставляет инструмент шифрования в файле конфигурации, по пути Инструменты сайта > Конфигурация. Подробнее можно узнать в резделе "Автоматическое шифрование данных в файлах конфигурации" выше.

Пример

Давайте рассмотрим пример использования инструмента шифрования CMS Studio для шифрования пароля. В меню навигации выберите Глобальная конфигурация и проскрольте страницу вниз до раздела SMTP Configuration (Email). Мы собираемся зашифровать значение для studio.mail.password:

##################################################
##        SMTP Configuration (Email)            ##
##################################################
# Default value for from header when sending emails.
# studio.mail.from.default: admin@example.com
# SMTP server name to send emails.
# studio.mail.host: ${env:MAIL_HOST}
# SMTP port number to send emails.
# studio.mail.port: ${env:MAIL_PORT}
# SMTP username for authenticated access when sending emails.
# studio.mail.username:
# SMTP password for authenticated access when sending emails.
# studio.mail.password:
# Turn on/off (value true/false) SMTP authenticated access protocol.
# studio.mail.smtp.auth: false
# Enable/disable (value true/false) SMTP TLS protocol when sending emails.
# studio.mail.smtp.starttls.enable: false
# Enable/disable (value true/false) SMTP EHLO protocol when sending emails.
# studio.mail.smtp.ehlo: true
# Enable/disable (value true/false) debug mode for email service. Enabling debug mode allows tracking/debugging communication between email service and SMTP server.
# studio.mail.debug: false

Copy-icon

Для этого:

  1. Зашифруйте пароль:
  2. Нажмите на значок меню навигации, а затем кликните на Шифрование.
  3. Введите пароль в поле Незашифрованный текст и нажмите на Зашифровать текст. Зашифрованный текст отобразится на экране и будет скопирован в буфер обмена.
  4. Используйте зашифрованный пароль:

4.1. В меню навигации выберите Глобальная конфигурация и проскрольте страницу вниз до раздела SMTP Configuration (Email).

4.2. Вставьте скопированный ранее зашифрованный пароль.

# SMTP password for authenticated access when sending emails.
studio.mail.password: ${enc:q2gqrm8R6Z0Xg77J6wzHH4i4qqMSlrcFcSkshS+RZ9s=}

Copy-icon