Обеспечение безопасности Drupal: хранение токенов API в Lockr
- Настройка сервиса
- зависимости
- конфигурация
- Результат
- Экспорт конфигурации MailChimp - раньше
- Экспорт конфигурации MailChimp - после
- Экспорт ключевого объекта
- Key Override Export
- Заключение
Как видно из недавнего взлома Uber, хранение таких секретов, как токены API, в вашем репозитории проекта может сделать вашу организацию уязвимой для взлома данных и вымогательства. В этом руководстве демонстрируется простой и эффективный способ уменьшения угрозы такого рода путем использования модуля Key для хранения токенов API в удаленном хранилище ключей.
Даже такие технологические гиганты, как Uber, укушены плохим секретным управлением в своих приложениях. Приведенный ниже фрагмент описывает, как хранение ключей AWS в их хранилище привело к утечке данных, затрагивающей 57 миллионов клиентов и драйверов.
Вот как взломались: два злоумышленника получили доступ к частному сайту кодирования GitHub, который использовался разработчиками программного обеспечения Uber, а затем использовали полученные там учетные данные для доступа к данным, хранящимся в учетной записи веб-служб Amazon, которая выполняла вычислительные задачи для компании. Оттуда хакеры обнаружили архив информации о гонщике и водителе. Позже они отправили Uber по электронной почте с просьбой о выплате денег, сообщает компания.
Uber мог бы избежать этого взлома, сохранив свои ключи API в секретной системе управления. В этом уроке я покажу вам, как сделать это с помощью модуля Key вместе со службой управления ключами Lockr.
В этом руководстве используется совершенно новая функция модуля Key (начиная с версии 8.x-1.5), которая позволяет переопределить любое значение конфигурации секретом. В этом случае мы настроим модуль MailChimp, используя возможность переопределения этой безопасной конфигурации.
Настройка сервиса
Прежде чем приступить к настройке Drupal, вам потребуется несколько учетных записей:
- Mailchimp предложить план «навсегда бесплатно».
- Lockr предложите свой первый ключ и 1500 запросов бесплатно.
Эти сторонние сервисы дают нам простой пример. Другие услуги доступны.
зависимости
Есть несколько модулей, которые вам нужно добавить в свою кодовую базу.
композитор требует \ "drupal / key: ^ 1.5" \ "drupal / lockr" \ "drupal / mailchimp"
конфигурация
- Перейдите в / admin / modules и включите модули MailChimp, Lockr и Key.
- Перейдите в / admin / config / system / lockr
- Используйте эту форму для создания сертификата TLS, который Lockr использует для аутентификации вашего сайта. Заполните форму и отправьте.
- Введите адрес электронной почты, который вы использовали для своей учетной записи Lockr, и нажмите « Зарегистрироваться» .
- Теперь вам нужно будет повторно войти в систему - введите адрес электронной почты и пароль для вашей учетной записи Lockr.
- В другой вкладке войдите в панель управления MailChimp
- Перейти на страницу настроек API - https://us1.admin.mailchimp.com/account/api/
- Нажмите Создать ключ
- Запишите этот ключ API, чтобы на следующем шаге мы могли настроить его в Drupal.
- На вкладке Drupal перейдите в / admin / config / system / keys и нажмите Add Key
- Создайте новую сущность Key для вашего токена MailChimp. Важными значениями здесь являются:
- Ключевой провайдер - убедитесь, что вы выбрали Lockr
- Значение - вставьте токен API, полученный с панели инструментов MailChimp.
- Теперь нам нужно настроить переопределения конфигурации. Перейдите в / admin / config / development / configuration / key-overrides и нажмите Add Override
- Заполните эту форму, важные значения здесь:
- Тип конфигурации : простая конфигурация
- Имя конфигурации : mailchimp.settings
- Элемент конфигурации : api_key
- Ключ : имя ключа, который вы создали на предыдущем шаге.
... и это так просто.
Результат
Цель этого упражнения - убедиться, что токен API для наших внешних сервисов не сохранен в базе данных или хранилище кода Drupal, поэтому давайте посмотрим, как они выглядят сейчас.
Экспорт конфигурации MailChimp - раньше
Если вы настроите MailChimp стандартным способом, вы увидите экспорт конфигурации, похожий на этот. Как видите, значение api_key находится в незашифрованном виде - любой, у кого есть доступ к вашей кодовой базе, будет иметь полный доступ к вашей учетной записи MailChimp.
api_key: 03ca2522dd6b117e92410745cd73e58c-us1 cron: false batch_limit: 100 api_classname: Mailchimp \ Mailchimp test_mode: false
Экспорт конфигурации MailChimp - после
При включенной функции переопределения ключей значение api_key в этом файле теперь равно нулю .
api_key: null cron: false batch_limit: 100 api_classname: Mailchimp \ Mailchimp test_mode: false
Есть несколько других соответствующих файлов экспорта конфигурации - давайте посмотрим на них.
Экспорт ключевого объекта
Этот экспорт отвечает за указание Drupal, где модуль Key хранит токен API. Если вы посмотрите на значения key_provider и key_provider_settings , вы увидите, что он указывает на значение, хранящееся в Lockr. По-прежнему не видно ни одного API-токена!
зависимости: модуль: - lockr - идентификатор mailchimp: mailchimp_token label: «токен MailChimp» описание: «токен API, используемый для аутентификации в почтовой маркетинговой платформе MailChimp». key_provider: lockr key_provider_settings: закодировано: aes-128-ctr-sha256 $ nHlAw2BcTCHVTGQ01kDe9psWgItkrZ55qY4xV36BbGo = $ + xgMdEzk6lsDy21h9j…. key_input: text_field
Key Override Export
Конечный экспорт конфигурации - это то, где сущность Key отображается для переопределения элемента конфигурации MailChimp.
status: true зависимости: config: - key.key.mailchimp_token - id mailchimp.settings: метка mailchimp_api_token: маркер «MailChimp API» config_type: system.simple имя_конфигурации: mailchimp.settings config_item: api_key key_id: mailchimp_token
Заключение
Надеемся, что это руководство покажет вам, насколько доступны эти методы повышения безопасности.
Внедрив это решение, злоумышленник не может получить контроль над вашей учетной записью MailChimp, просто получив доступ к вашему хранилищу или дампу базы данных. Также помните, что этот точный метод может быть применен к любому модулю, который использует API конфигурации для хранения токенов API.
Зачем? Вот несколько примеров того, как популярные модули Drupal могут нанести вред вашей организации, если их конфиги будут выставлены (расскажите о ваших собственных наихудших сценариях в комментариях!).
- s3fs - злоумышленник может утечь или удалить все данные, хранящиеся в вашем хранилище. Они также могут увеличить ваш счет AWS, храня или передавая терабайты данных.
- SMTP - злоумышленник может использовать ваш собственный SMTP-сервер против вас, чтобы отправлять клиентам фишинговые письма с законного адреса электронной почты. Они также могут пропускать любые электронные письма, к которым имеет доступ взломанный аккаунт
Какие другие модули Drupal можно сделать более защищенными таким образом? Опубликуйте свои идеи в комментариях!
Выйдите и создайте безопасные проекты Drupal!
Сообщение от Ник Сантамария
Разработчик системных операций
От 24 ноября 2017 г.