2014-09-28 6 views
0

Мне интересно, как мы можем скрыть конфиденциальные данные (пароли баз данных и другие пароли) от некоторых разработчиков для наших проектов PHP. Мы используем Subversion для наших проектов. Достаточно ли просто запретить некоторым пользователям доступ к папкам, где у нас есть файлы с паролями? Любые другие предложения?Как скрыть конфиденциальные данные от разработчиков

+2

Не хранить конфиденциальные данные в SVN, возможно? Храните пароли и другую подобную информацию в файлах конфигурации, которые не передаются в репозиторий. –

+1

Просто создайте пример конфигурации и добавьте только важные данные на рабочий сервер. Так, например, в svn у вас есть файл config.php.example, а в процессе производства вы копируете этот файл в config.php – Perry

ответ

2
  1. Не храните конфиденциальные данные в системе управления версиями кода. Держите переменные пустыми.
  2. После первой проверки задайте переменные локально.
  3. В случае распределенных/удаленных баз данных просто создайте для этого пользователя другой доступ для доступа к этой базе данных и предоставления учетных данных.
  4. После того, как вы установили значения, исключите эти файлы из обновлений позже.
0

У вас может быть таблица БД, в которой хранятся конфиденциальные данные, и только пользователи с правильными учетными данными могут читать с нее. Каждый разработчик должен ввести имя пользователя и пароль для доступа к БД через некоторый файл конфигурации. Также вам не нужно устанавливать пользователя и пароль для каждого разработчика, так как вы можете иметь 3 уровня доступа, поэтому создавайте только 3 пользователя, то есть DeveloperAdmin (может менять таблицу паролей) DeveloperTrustedRead (можно прочитать таблицу паролей) DeveloperNotTrusted (без доступа к таблице паролей) Таким образом, вы распространяете один и тот же пароль пользователя db для не доверенного разработчика.

0

Должно быть достаточно.

Если вы хотите внедрить экономически эффективный, но безопасный способ позволить другим людям обращаться к одному и тому же ресурсу (защищенному паролем, как к базе данных) с различными уровнями безопасности, посмотрите на этот ответ Different ways to store a password variable in a Java web application? и реализуйте опцию 3 таким образом

  • создать несколько имен пользователей/паролей для доступа к одному ресурсу - как еще один ответ указывает на DeveloperTrustedRead, DeveloperNotTrustedRead и т.д ... роль в базе данных, каждый с другим именем пользователя и паролем. DeveloperNotTrustedRead (для базы данных) не должен создавать процедуру, изменять таблицу, таблицы перетаскивания, получать доступ к другим БД, отличным от того, с которым он работает, и т. Д.
  • шифровать имя пользователя/пароль для каждой роли с другим ключом в вашем приложении (т.е. 3)
  • дать ненадежный разработчику ключ только для расшифровки имя пользователя/пароль, связанный с ролью, которая имеет меньше прав доступа, как DeveloperNotTrustedRead или DeveloperNotTrustedWrite

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

Это имеет смысл только в том случае, если вам необходимо получить доступ к ресурсу, защищенному паролем (т. Е. К БД), но вы обеспокоены тем, что не доверяете людям, поэтому вы хотите свести к минимуму их разрешения для БД (или любых других защищенный ресурс) и легко передавать код.

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