Управление конфиденциальными данными
В DC CMS существует несколько способов управления конфиденциальными данными.
По возможности прибегайте к хранению конфиденциальных данных по минимуму. Например, при развертывании приложений на облачных платформах, таких как AWS, рекомендуется использовать механизмы аутентификации и авторизации на основе ролей на уровне сервиса. Таким образом, становится возможным избежать необходимости хранения конфиденциальной информации. Этот подход повышает безопасность и снижает потенциальные риски, связанные с управлением конфиденциальной информации.
Конфиденциальные данные, хранимые внешне
DC CMS поддерживает использование конфиденциальных данных, которые хранятся внешне. Таким образом, вы можете хранить секретную информацию в отдельном месте и использовать ее в ваших конфигурационных файлах. Такой подход рекомендуется использовать при любой возможности.
Например, вы можете использовать AWS Secrets или сервер Vault для безопасного управления своими конфиденциальными данными. Таким образом, данные остаются вне DC CMS, обеспечивая дополнительный уровень защиты.
Конфиденциальные данные, хранимые внутри
Когда использование конфиденциальных данных, хранимых внешне, недоступно, DС CMS позволяет использовать зашифрованные данные, которые хранятся внутри системы. Это значит, что конфиденциальные данные будут храниться непосредственно в конфигурационных файлах и, таким образом, будут зашифрованы.
Ключи шифрования можно настраивать, что позволяет использовать различные ключи в различных окружениях, таких как development, testing и production.
DC CMS предоставляет несколько способов шифрования конфиденциальных данных:
- автоматическое шифрование данных в конфигурационных файлах
- инструмент шифрования CMS Studio UI
- инструмент шифрования на уровне проекта
- инструмент шифрования на уровне администратора
Шифрование
Автоматизированное шифрование конфиденциальной информации может быть легко выполнено с использованием конфигурационных файлов 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"}
Автоматическое шифрование данных в конфигурационных файлах
В этом разделе вы узнаете о шифровании паролей, ключей доступа или других конфиденциальных данных через файлы конфигурации в 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)
Как шифровать текст в файле конфигурации
Для обеспечения безопасности паролей, ключей доступа или любой конфиденциальной информации в файле конфигурации, выполните следующие шаги:
- Откройте файл конфигурации, содержащий текст или информацию, которую вы хотите зашифровать.
- Найдите конкретную запись, которую вы собираетесь зашифровать, и добавьте атрибут
encrypted=""
. - Нажмите на кнопку Отмечено шифрованием, чтобы применить шифрование к указанному тексту.
- Ваша секретная информация теперь зашифрована и будет отображаться с атрибутом
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>
3. Чтобы зашифровать accessKey
и secretKey
, добавим им атрибут encrypted=""
.
<accessKey encrypted="">YOUR_ACCESS_KEY</accessKey>
<secretKey encrypted="">YOUR_ACCESS_KEY</secretKey>
4. Теперь нажмите на кнопку Отмечено шифрованием. Это действие зашифрует выделенные элементы, и атрибут для них изменится на encrypted="true"
. Следовательно, accessKey
и secretKey
теперь зашифрованы и будут дешифрованы CMS Studio по необходимости.
Инструмент шифрования CMS Studio UI
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
Для этого:
- Зашифруйте пароль:
- Нажмите на значок меню навигации, а затем кликните на Шифрование.
- Введите пароль в поле Незашифрованный текст и нажмите на Зашифровать текст. Зашифрованный текст отобразится на экране и будет скопирован в буфер обмена.
- Используйте зашифрованный пароль:
4.1. В меню навигации выберите Глобальная конфигурация и проскрольте страницу вниз до раздела SMTP Configuration (Email).
4.2. Вставьте скопированный ранее зашифрованный пароль.
# SMTP password for authenticated access when sending emails.
studio.mail.password: ${enc:q2gqrm8R6Z0Xg77J6wzHH4i4qqMSlrcFcSkshS+RZ9s=}