Как сохранить секретную ключевую информацию из Git-репозитория - PullRequest
0 голосов
/ 12 сентября 2018

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

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

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Это сильно зависит от требований проекта

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

  • "Предоставляйте" такую ​​информацию в среде выполнения и сохраняйте ее где-нибудь еще:

    . / RunMyApp.sh -db.password =

  • Используйте специализированные инструменты (например, Vault by Hashicorp ) для управления секретами

  • Кодировать секретное значение в автономном режиме и сохранять в git закодированное значение. Без секретного ключа, используемого для декодирования, одно только это кодированное значение бесполезно. Снова декодируйте значение во время выполнения, используя некую пару инфра-асимметричных ключей общего ключа, в этом случае вы можете использовать открытый ключ для кодирования, закрытый ключ для декодирования
0 голосов
/ 12 сентября 2018

Я хочу использовать Git для хранения своего хранилища, но я не хочу публиковать ключ.

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

Кроме этого случая, я лично использую подмодули для этого. Проверить:

git submodule

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

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

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

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

0 голосов
/ 12 сентября 2018

В зависимости от того, чего вы пытаетесь достичь, вы можете выбрать один из этих методов:

  • сохранить файл в дереве, управляемом git, но игнорировать его, введя в gitignore
  • хранить содержимое файла в переменной окружения,
  • вообще не использовать файл с ключом, хранить содержимое ключа в другом месте (внешние системы, такие как хранилище hashicorp, база данных, облако (сомнительно, я бы не рекомендовал),и т. д.)

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

Третий требует, безусловно, больше работы, чем 1-й и 2-й, но может привести к действительно безопасной установке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...