2016-09-17 5 views
0

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

В моем проекте используются рельсы 5 и драгоценный камень.

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

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

ответ

0

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

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

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

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

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

+0

Как я уже упоминал в другом комментарии, мой secrets.yml (и я считаю, что другие важные файлы также), по сути выглядит так, как я перечислял в конце этого комментария. Из того, что я понимаю из вашего ответа, кажется, что я должен быть в безопасности, и вообще хорошо, чтобы выталкивать информацию, такую ​​как secrets.yml, до тех пор, пока производство secret_key_base является переменной окружения? Это мои секреты.yml выглядит следующим образом >>> development: secret_key_base: abc123youcanseethiskey test: secret_key_base: 123456ghgyoucanseethiskey production: secret_key_base: <% = ENV ["SECRET_KEY_BASE"]%> – mc92

+0

Это не содержит фактический секрет производства. Ключи разработки и тестирования не являются конфиденциальной информацией. Так что не нужно беспокоиться об этом файле, он должен быть проверен на Git именно так. –

0

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

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

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

+0

Это уже было толкано, что я прошу, если я должен попытаться удалить его после того, как он был там через несколько коммитов. Он (secrets.yml), по существу выглядит следующим образом: развитие: secret_key_base: abc123youcanseethiskey тест: secret_key_base: 123456ghgyoucanseethiskey производство: secret_key_base: <% = ENV [ "SECRET_KEY_BASE"]%> Что я пытаясь понять, является ли этот конкретный способ достаточно безопасным, что ваш ответ не дал мне понять. – mc92

+0

Если вы уже это сделали, я бы изменил свои ключи как можно скорее. Вы можете переустанавливать, но ваши ключи, возможно, уже были очищены. – hetre85

Смежные вопросы