Проекты с открытым исходным кодом: что делать с частными / секретными данными конфигурации? - PullRequest
6 голосов
/ 25 апреля 2011

Я рассматриваю открытый код для моего живого веб-сайта на Github.До этого момента я хранил код в частном репозитории, и меня беспокоит только то, что есть несколько файлов конфигурации, связанных с моей производственной средой (пароли БД, ключи API и т. Д.), Которыми я не хочу бытьпублично видно.

Каков типичный подход для открытых проектов таких проектов без раскрытия личных данных?Вы просто поддерживаете два репо, публичное и идентичное приватное с добавленными личными данными, иногда объединяясь между ними?

Ответы [ 2 ]

8 голосов
/ 25 апреля 2011

В случае Git, я бы порекомендовал вам добавить правила к вашему .gitignore, чтобы игнорировать файлы, содержащие конфиденциальную информацию (.hgignore для Mercurial).Старайтесь как можно больше хранить конфиденциальную информацию в одном месте (например, в файле настроек).Если вы работали с веб-фреймворком, эта информация обычно находится в одном файле (например, в Django, есть файл settings.py с информацией о БД, секретным ключом и т. Д.) Если у вас есть конфиденциальная информация, заложенная в различных частях вашего приложениядобавьте эту информацию в какой-либо файл конфигурации или объект.

Если вы хотите, чтобы люди все еще знали, откуда поступают данные, включите пример или фиктивный файл с поддельными данными с обозначением где-нибудь (либо вфайл или в README), что файл должен быть изменен.Затем вы можете назвать файл, например, settings.py.example и игнорировать действительное settings.py.

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

0 голосов
/ 25 апреля 2011

По логике вещей, на самом деле есть только две вещи, которые вы можете сделать, не раскрывая конфиденциальную информацию:

  1. Не помещать информацию в общедоступную VCS вообще.
  2. Поместить информацию в VCS криптографически безопасным способом.

Лично я не хотел бы дублировать репозитории, и если вам нужно развернуть напрямую из VCS, тогда у вас практически останется вариант 2. Очевидно, это будет зависеть от вашей среды, но в .NET, например, я убедитесь, что строки подключения и ключи API хранятся в файле web.config, после чего они должным образом зашифрованы (об этом я рассказываю в разделе «Шифрование конфиденциальных данных конфигурации» Топ-10 OWASP для разработчиков .NET, часть 6: неправильная настройка безопасности ).

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

...