GIT — Предотвращение случайного нажатия на учетные данные


реферат

Иногда люди случайно заносят учетные данные или другую конфиденциальную информацию в git-репозиторий. Например, AWS_SECRET_ACCESS_KEY и AWS_ACCESS_KEY_ID.
Очевидно, что плохие люди могут найти эти секреты в git-репозитории или истории, используя их, например, для запуска криптомайнеров на этих аккаунтах. Это приводит к очень высоким затратам и счетам для бедного человека, который случайно ввел эти секреты.
Существует инструмент, который может предотвратить такие ошибки: git-secrets.

Установка

Пожалуйста, проверьте установку git secrets для вашей ОС. Здесь я показываю установку для Linux.
Просто введите следующие команды

git clone git@github.com:awslabs/git-secrets.git
cd git-secrets
[sudo] make install
make test
Войти в полноэкранный режим Выйти из полноэкранного режима

Примечания

  • Для пользователей со знанием docker: мы подготовили образ docker, на котором уже установлен git-secret.
    • docker run -v <local_git_repo>:/home/git-secrets/ andyaugustin/git-secrets:main git-secrets
  • Для деинсталляции на Linux просто удалите скопированные файлы.
rm /usr/local/bin/git-secrets
rm /usr/local/share/man/man1/git-secrets.1
Вход в полноэкранный режим Выйти из полноэкранного режима

Веселая часть

Теперь давайте проверим возможности git-secrets.
Пожалуйста, имейте в виду, что вам нужно включить инструмент для каждого репозитория. Он установит git hooks в ваш локальный репозиторий.

В этом учебнике мы сначала инициируем git-репозиторий и загрузим git-secrets.

mkdir git-secrets-example
cd git-secrets-example
git init
echo "# git-secrets-example" >> README.md
git add .
git commit [-S] -m "doc(): initial commit :star:"
git-secrets --install
Вход в полноэкранный режим Выход из полноэкранного режима

Как указано в выводе, мы получили 3 новых файла, добавленных в наш локальный git-репозиторий. Они предотвратят случайную фиксацию секретов в базе данных git. Давайте проверим один из этих файлов

$ cat .git/hooks/pre-commit
#!/usr/bin/env bash
git secrets --pre_commit_hook -- "$@"
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Теперь давайте разберемся в некоторых деталях. Для этого мы добавим несколько поддельных AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY в наш файл разметки и попробуем зафиксировать его.
Эти ключи действительно поддельные, вы можете попробовать 😈.

$ git secrets --register-aws
OK
$ echo "This is fake aws key id AKIAIOSFODNN7EXAMPLA" >> README.md
$ git add .
$ git commit -S -m "doc(): accidentally add keys :alien:"
README.md:4:This is fake aws key id AKIAIOSFODNN7EXAMPLA

[ERROR] Matched one or more prohibited patterns

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive
Вход в полноэкранный режим Выйти из полноэкранного режима

Как вы можете видеть, невозможно зафиксировать изменения в истории git, потому что в изменениях присутствует AWS KEY.
В некоторых случаях вы хотите зафиксировать этот ключ. Может быть, потому что это пример для учебника или что-то еще.
Это довольно легко установить. Просто добавьте ключ в файл под названием .gitallowed.

echo "AKIAIOSFODNN7EXAMPLA" >> .gitallowed
git add .
git commit [-S] -m "doc(): now we are able to establish the commit :star:"
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий