Как скрыть конфиденциальные данные от разработчиков

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

0

Решение

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

Другие решения

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

0

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

Если вы хотите реализовать экономичный, но безопасный способ, позволяющий разным людям получать доступ к одному и тому же ресурсу (защищенному паролем, как база данных) с разными уровнями безопасности, посмотрите на этот ответ. Различные способы хранить переменную пароля в веб-приложении Java? и реализовать вариант 3 таким образом

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

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

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

0
По вопросам рекламы [email protected]