Общие сведения о безопасности и секретных ключах

Я делаю приложение Rails и пытаюсь понять безопасность, поскольку она включает секретные ключи.

Мой проект использует Rails 5 и гем Devise.

Я читал в нескольких местах, что вы не хотите размещать файлы, такие как secrets.yml, на github из соображений безопасности (которые я обнаружил несколько коммитов в будущем). Однако мои секретные ключи, которые используются в продакшене, являются переменными окружения (хотя моя разработка и ключи — нет, их видно).

Сейчас я пытаюсь выяснить, нормально ли то, что такие файлы, как secrets.yml (я также слышал кое-что о database.yml), оказались на github, если важные биты (такие как секретные ключи ) являются переменными окружения, о которых, к счастью, Rails, похоже, подумал по умолчанию? Или я должен попытаться удалить эти файлы?


person mc92    schedule 17.09.2016    source источник


Ответы (2)


Если вы удалите конфиденциальную информацию (заменив ее переменными среды), вы можете зафиксировать файл. Это не просто secrets.yml. Любые ключи шифрования, ключи API, учетные данные не должны быть зафиксированы в Git.

Если вы уже отправили эту информацию в Git, ее можно удалить, выполнив Rebase, но это не гарантирует, что все копии будут удалены. Секрет лучше поменять.

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

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

Пока вы не измените секретное значение, ваш сайт уязвим.

person Robin Daugherty    schedule 17.09.2016
comment
Как я упоминал в другом комментарии, мой secrets.yml (и, я думаю, и другие важные файлы) по сути выглядит так, как я перечислил в конце этого комментария. Из того, что я понял из вашего ответа, кажется, что я должен быть в безопасности, и в целом нормально отправлять информацию, такую ​​​​как secrets.yml, если производственный secret_key_base является переменной среды? Вот как выглядит мой файл secrets.yml ››› разработка: secret_key_base: abc123youcanseethiskey test: secret_key_base: 123456ghgyoucanseethiskey production: secret_key_base: ‹%= ENV[SECRET_KEY_BASE] %› - person mc92; 17.09.2016
comment
Это не содержит фактического секрета производства. Ключи разработки и тестирования не являются конфиденциальной информацией. Так что не нужно беспокоиться об этом файле, он предназначен для загрузки в Git просто так. - person Robin Daugherty; 18.09.2016

«Сейчас я пытаюсь выяснить, нормально ли то, что такие файлы, как secrets.yml (я также слышал кое-что о database.yml), оказались на github»,

Никогда не передавайте личную/конфиденциальную информацию в свои репозитории Github.

Имя файла не имеет значения; если у него есть конфиденциальная информация, не отправляйте ее в удаленное репо.

person hetre85    schedule 17.09.2016
comment
Он уже был отправлен, я спрашиваю, должен ли я приложить усилия для его удаления после того, как он был там через несколько коммитов. Он (secrets.yml) выглядит примерно так: разработка: secret_key_base: abc123youcanseethiskey test: secret_key_base: 123456ghgyoucanseethiskey production: secret_key_base: ‹%= ENV[SECRET_KEY_BASE] %› Я пытаюсь понять, является ли этот конкретный способ достаточно безопасно, что ваш ответ не прояснил мне. - person mc92; 17.09.2016
comment
Если вы уже совершили это, я бы изменил свои ключи как можно скорее. Вы также можете перебазировать, но ваши ключи, возможно, уже были очищены. - person hetre85; 17.09.2016