Как я не могу отправить свои ключи / учетные данные API на Github, особенно публичные репозитории - PullRequest
0 голосов
/ 07 ноября 2018

Я спросил у нескольких разработчиков, как они гарантируют, что файлы ключей и учетных данных не выдвигаются. Они дали мне несколько ответов, но я не нашел ничего последовательного. Допустим, в папке / config есть файл creds.json. Каковы эффективные способы НЕ передавать эти учетные данные на Github.

Несколько ответов, которые я нашел в Интернете:

  • Добавьте их в .gitignore
  • Хранить ключи отдельно внутри хоста или в другой папке
  • Только будь осторожен

Блоги, которые я читаю:

https://www.agwa.name/projects/git-crypt/

https://blog.roundingpegs.com/how-i-avoid-committing-passwords-to-github/

Есть ли какой-нибудь инструмент или более эффективный способ, чтобы я не передавал свои ключи случайно на Github или не предупреждал меня перед тем, как совершить?

Я бы хотел, чтобы вы кратко описали все возможные способы, с помощью которых вы можете предотвратить переход ключей в github. Примеры в поддержку вашего резюме было бы здорово.

Ответы [ 5 ]

0 голосов
/ 18 ноября 2018

Вы можете использовать некоторые стандартные отраслевые инструменты, такие как хранилище Hashicorp "https://www.vaultproject.io/", чтобы хранить секреты и извлекать их при необходимости. Многие большие выгоды используют этот инструмент для управления своими секретами. Вам необходимо установить хранилище в вашей организации. среда для доступа к хранилищу. Вы можете обратиться к этой статье
"https://www.digitalocean.com/community/tutorials/how-to-securely-manage-secrets-with-hashicorp-vault-on-ubuntu-16-04" о том, как установить и получить доступ к секретам из хранилища. Это жалоба PCI, и ее можно использовать для хранения очень конфиденциальной информации. К счастью, есть библиотека Spring, которую можно использовать для простого чтения секретов из хранилища. эта страница для примера кода и более "https://projects.spring.io/spring-vault/".

С другой стороны, есть предложение от веб-сервисов Amazon, называемое секретным менеджером. Если в вашей организации используется AWS, а ваши приложения размещены в среде AWS, вам довольно легко поместить секреты в менеджер секретных программ и получить к ним доступ. Но менеджер секретов еще не жалоба PCI, и ожидается, что жалоба PCI будет в ближайшие месяцы. Пожалуйста, обратитесь к этому видео "https://www.youtube.com/watch?v=HiY2oxR1Jd0" о том, как использовать менеджер секрета в вашем приложении.

Надеюсь, это поможет вам. Ура !!

0 голосов
/ 18 ноября 2018

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

Секреты зашифрованы закрытым ключом, который могут иметь только уполномоченные лица.

При установке пакета вам понадобится закрытый ключ для расшифровки секретов на целевой машине, что может быть выполнено с помощью ops / dev-ops с доступом к закрытому ключу.

Таким образом, вы можете безопасно передавать свои зашифрованные секреты на github или в любую незащищенную среду.

В качестве альтернативы вы можете посмотреть https://www.agwa.name/projects/git-crypt/, который позволяет вам иметь зашифрованные файлы, но я все же предпочитаю иметь отдельный пакет для секретов, так как вам потребуются разные секреты для среды (UAT, prod и т. Д.) .

Или вы можете зашифровать весь репозиторий https://github.com/spwhitton/git-remote-gcrypt, но вы потеряете функции размещенной среды, такие как просмотр истории коммитов и т. Д.

0 голосов
/ 07 ноября 2018

Конечно, есть лучший способ!

Я бы посоветовал вам не хранить какие-либо пароли, жестко запрограммированные в вашем коде, поскольку существует риск его загрузки в Github или любые другие общедоступные репозитории. Лучший способ сделать это - иметь связку ключей / приложение, которое может хранить ваши пароли в облаке и делать их доступными только для вашего приложения.

Например, Менеджер секретов AWS . Я уверен, что есть другие приложения, которые могут сделать это, но это то, что я бы порекомендовал. С помощью этого инструмента вы можете управлять своими паролями, поворачивать свои пароли и ключи API, не беспокоясь о загрузке ключей в общедоступные репозитории. После того, как вы сохранили его здесь, в вашем коде должен быть секретный менеджер, который будет извлекать пароль и использовать его в приложении.

Также вот некоторые другие опции:

  1. Хранение ключей API в базе данных и загрузка их оттуда
  2. .ini-файл или .conf-файл или .env-файл, которые хранятся в папках / etc
  3. Менеджер секретов AWS, конечно же

Я также нашел многообещающие ответы здесь: https://medium.com/slalom-technology/secret-management-architectures-finding-the-balance-between-security-and-complexity-9e56f2078e54

0 голосов
/ 17 ноября 2018

Похоже, git-secrets делает именно то, что вы просите.

0 голосов
/ 07 ноября 2018

Я предпочитаю хранить их отдельно внутри хоста или в другой папке и использовать их поверх переменной окружения. Как то, что у вас есть, вы не можете совершить их случайно.

Кроме того, вы можете использовать их в сборке CI. Если вам также нужны учетные данные в сборке CI, большинство систем предоставляют зашифрованные переменные, которые хранятся в зашифрованном виде на сервере сборки и могут использоваться в качестве переменных среды.

Таким образом, я могу использовать разные учетные данные для каждого локального пользователя или CI без изменений в моем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...