«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Простое управление секретами для проектов Laravel и JS с помощью загрузчика секретов

Простое управление секретами для проектов Laravel и JS с помощью загрузчика секретов

Опубликовано 8 ноября 2024 г.
Просматривать:130

Effortless Secret Management for Laravel & JS Projects with Secrets Loader

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

Вот почему я создал Secrets Loader, скрипт Bash, который динамически извлекает секреты из AWS SSM и CloudFormation непосредственно в ваш .env-файл, делая локальную разработку и развертывание проще, безопаснее и эффективнее.

]

Что такое загрузчик секретов?

Загрузчик секретов — это простой инструмент, предназначенный для автоматического извлечения секретов из хранилища параметров AWS SSM и выходных данных AWS CloudFormation на основе специального синтаксиса в вашем файле .env. Он заменяет заполнители реальными секретами, не раскрывая конфиденциальную информацию в системе контроля версий.

Например, вместо жесткого кодирования ключей API или учетных данных вы определяете их в своем файле .env следующим образом:

THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"

С помощью одной команды Secrets Loader получит фактические значения из AWS и обновит ваш файл .env, обеспечивая безопасность конфиденциальной информации и удобство управления.


Почему я это построил

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

Вот основные проблемы, которые решает Secrets Loader:

  1. Избегание жестко запрограммированных секретов: больше не нужно передавать секреты в систему контроля версий. Вы можете безопасно использовать заполнители и динамически получать фактические значения из AWS SSM и CloudFormation.
  2. Сокращение ручных усилий: вместо копирования и вставки секретных значений вручную, просто определите их один раз в своем .env-файле и позвольте сценарию выполнить извлечение.
  3. Упрощение управления секретами: независимо от того, занимаетесь ли вы локальной разработкой, промежуточным или производственным процессом, Secrets Loader гарантирует безопасную и автоматическую загрузку секретов.

Функции

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

  • Автоматическая загрузка секретов: извлекайте секреты из хранилища параметров AWS SSM и CloudFormation, указав пути в файле .env.
  • Подход, ориентированный на безопасность: держите конфиденциальные данные вне контроля версий, безопасно загружая их во время выполнения.
  • Простой синтаксис: используйте собственный синтаксис в файле .env (ssm: для параметров SSM, cf: для выходных данных CloudFormation), чтобы указать, откуда должны поступать секреты.
  • Обработка ошибок: сценарий продолжает обрабатывать другие секретные данные, даже если одно из них не удалось получить, регистрируя предупреждения, не останавливая рабочий процесс.

Как это работает

Магия Secrets Loader заключается в его способности извлекать секреты из AWS на основе определенных префиксов (ssm: и cf:). Вот пример рабочего процесса:

  1. Настройте файл .env:

Добавьте заполнители для своих секретов в файл .env, используя префикс ssm: для параметров SSM или префикс cf: для выходных данных CloudFormation:

   THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
   AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"
  1. Запустите скрипт:

Используйте следующую команду, чтобы запустить скрипт и получить секреты:

   ./secrets.sh
  1. Обновлен файл .env:

После запуска скрипта ваш .env-файл будет обновлен фактическими значениями, полученными из AWS:

   THIRD_PARTY_API_KEY=actual-api-key-value
   AWS_SECRET_ACCESS_KEY=actual-access-key-value

Больше никаких секретов жесткого кодирования и ручного поиска!


Установка и настройка

Готовы начать? Вот как вы можете настроить Загрузчик секретов в своем проекте:

  1. Клонировать репозиторий:
   git clone https://github.com/Thavarshan/secretst-loader.git
   cd secretst-loader
  1. Сделайте скрипт исполняемым:
   chmod  x secrets.sh
  1. Убедитесь, что AWS CLI установлен и настроен:

Если у вас не установлен AWS CLI, следуйте руководству по установке AWS CLI. После установки настройте свои учетные данные AWS:

   aws configure
  1. Определите свои секреты в .env:

Используйте префиксы ssm: и cf:, чтобы определить, откуда должны поступать секреты:

   THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
   AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"

Пример использования

Давайте рассмотрим простой пример:

Файл .env.example:

# Application settings
APP_NAME=MyApp
APP_ENV=production

# Secrets fetched from AWS SSM and CloudFormation
THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"

Запуск загрузчика секретов:

./secrets.sh

Обновлен файл .env:

# Application settings
APP_NAME=MyApp
APP_ENV=production

# Fetched secrets
THIRD_PARTY_API_KEY=actual-api-key-value
AWS_SECRET_ACCESS_KEY=actual-secret-access-key

Поиск неисправностей

Если у вас возникли какие-либо проблемы при использовании Загрузчика секретов, вот несколько вещей, которые следует проверить:

  1. Разрешения AWS: убедитесь, что интерфейс командной строки AWS настроен правильно и что ваша роль IAM или пользователь имеет достаточные разрешения для доступа к секретам AWS SSM и CloudFormation.

  2. Синтаксические ошибки: дважды проверьте синтаксис в файле .env, чтобы убедиться, что префиксы ssm: и cf: верны.

  3. Ошибки сценария: если сценарию не удается получить определенные секреты, он записывает предупреждения, но продолжает получать остальные. Просмотрите журналы на наличие сообщений об ошибках и убедитесь, что ресурсы AWS существуют и доступны.


Расширение загрузчика секретов

Скрипт спроектирован с возможностью расширения. Если вы хотите интегрировать другие системы управления секретами (например, Azure Key Vault или HashiCorp Vault), вы можете легко изменить сценарий для поддержки новых префиксов и логики выборки.

Например, вы можете добавить префикс azkv: для получения секретов из Azure Key Vault и обработки извлечения с помощью Azure CLI.


Содействие

Загрузчик секретов имеет открытый исходный код, поэтому вклад всегда приветствуется! Если вы хотите добавить функции, исправить ошибки или предложить улучшения, не стесняйтесь:

  • Откройте проблему: поделитесь своим отзывом или отчетом об ошибке.
  • Отправьте запрос на включение: добавьте код, следуя нашим правилам ВКЛАДЫВАНИЯ.

Заключение

Если вы устали вручную управлять секретами в разных средах, Secrets Loader — это простой и эффективный инструмент для оптимизации этого процесса. Динамически получая секреты из AWS SSM и CloudFormation, вы можете безопасно управлять своими учетными данными, не рискуя раскрыть их в системе контроля версий.

Ознакомьтесь с проектом на GitHub, попробуйте, и если вы найдете его полезным, поставьте нам ⭐ на GitHub! Ваша поддержка помогает проекту развиваться, и мы будем рады услышать ваше мнение отзывы или посмотрите ваш вклад в его постоянное развитие.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/thavarshan/effortless-secret-management-for-laravel-js-projects-with-secrets-loader-59be?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163. .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3