
Предотвращает случайную фиксацию секретов и учетных данных в git-репозиториях.
.. contents:: :depth: 2
::
git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<файлы>...]
git secrets --scan-history
git secrets --install [-f|--force] [<целевой-каталог>]
git secrets --list [--global]
git secrets --add [-a|--allowed] [-l|--literal] [--global] <шаблон>
git secrets --add-provider [--global] <команда> [аргументы...]
git secrets --register-aws [--global]
git secrets --aws-provider [<файл-учётных-данных>]
git-secrets сканирует коммиты, сообщения коммитов и слияния --no-ff,
чтобы предотвратить попадание секретов в ваши git-репозитории. Если коммит,
сообщение коммита или любой коммит в истории слияния --no-ff соответствует
одному из настроенных вами запрещённых шаблонов регулярных выражений, то
коммит отклоняется.
git-secrets должен быть помещён в вашу переменную PATH, чтобы git мог
его найти при выполнении git secrets.
*nix (Linux/macOS)
Вы можете использовать цель ``install`` из предоставленного Makefile для установки ``git secrets`` и man-страницы.
Вы можете настроить путь установки с помощью переменных PREFIX и MANPREFIX.
::
make install
Windows
~~~~~~~
Запустите предоставленный PowerShell-скрипт ``install.ps1``. Он скопирует необходимые файлы
в каталог установки (по умолчанию ``%USERPROFILE%/.git-secrets``) и добавит
этот каталог в переменную PATH текущего пользователя.
::
PS > ./install.ps1
Homebrew (для пользователей macOS)
::
brew install git-secrets
.. warning::
**Вы ещё не закончили! Вы ОБЯЗАТЕЛЬНО должны установить git-хуки для каждого репозитория, в котором
хотите использовать** ``git secrets --install``.
Вот краткий пример того, как обеспечить сканирование git-репозитория на наличие секретов при каждом коммите::
cd /path/to/my/repo
git secrets --install
git secrets --register-aws
Добавьте шаблон конфигурации, если хотите добавлять хуки во все репозитории, которые вы инициализируете или клонируете в будущем.
::
git secrets --register-aws --global
Добавьте хуки во все ваши локальные репозитории.
::
git secrets --install ~/.git-templates/git-secrets
git config --global init.templateDir ~/.git-templates/git-secrets
Добавьте собственные поставщики для сканирования учётных данных безопасности.
::
git secrets --add-provider -- cat /path/to/secret/file/patterns
С помощью git-secrets также можно сканировать репозиторий, включая все ревизии:
::
git secrets --scan-history
Режимы работы
Каждый из этих параметров должен быть первым в командной строке.
``--install``
Устанавливает git-хуки для репозитория. После установки хуков для git-репозитория
коммиты и не-ff слияния для этого репозитория будут предотвращены от
добавления секретов.
``--scan``
Сканирует один или несколько файлов на наличие секретов. Если файл содержит секрет,
совпавший текст из сканируемого файла будет выведен в stdout, и
скрипт завершится с ненулевым статусом. Каждая совпавшая строка будет выведена с
именем файла, который совпал, двоеточием, номером совпавшей строки,
двоеточием и затем текстом совпавшей строки. Если файлы не указаны,
сканируются все файлы, возвращаемые ``git ls-files``.
``--scan-history``
Сканирует репозиторий, включая все ревизии. Если файл содержит секрет,
совпавший текст из сканируемого файла будет выведен в stdout, и
скрипт завершится с ненулевым статусом. Каждая совпавшая строка будет выведена с
именем файла, двоеточием, номером строки, двоеточием и затем текстом строки.
``--list``
Выводит конфигурацию ``git-secrets`` для текущего репозитория или в глобальной
конфигурации git.
``--add``
Добавляет запрещённый или разрешённый шаблон.
``--add-provider``
Регистрирует поставщика секретов. Поставщики секретов — это исполняемые файлы, которые
при вызове выводят запрещённые шаблоны, которые ``git-secrets`` должен
считать запрещёнными.
``--register-aws``
Добавляет общие шаблоны AWS в git-конфиг и гарантирует, что ключи,
присутствующие в ``~/.aws/credentials``, не будут обнаружены ни в одном коммите.
Добавляются следующие проверки:
- Идентификаторы ключей доступа AWS через ``(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}``
- Ключи API Amazon Bedrock. Долгоживущие через ``ABSK[A-Za-z0-9+/]{109,}=*`` и краткосрочные через ``bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t``
- Назначения секретных ключей доступа AWS через ":" или "=" с возможными кавычками
- Назначения идентификаторов аккаунта AWS через ":" или "=" с возможными кавычками
- Разрешённые шаблоны для примеров ключей AWS (``AKIAIOSFODNN7EXAMPLE`` и
``wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY``)
- Известные учётные данные из ``~/.aws/credentials``
.. note::
Хотя шаблоны, зарегистрированные этой командой, должны обнаруживать большинство
экземпляров учётных данных AWS, эти шаблоны **не гарантируют** их обнаружения
**всех**. ``git-secrets`` следует использовать как дополнительное средство
защиты — вам всё равно нужно проявлять должную осмотрительность, чтобы
не допустить добавления учётных данных в репозиторий.
``--aws-provider``
Поставщик секретов, который выводит учётные данные, найденные в INI-файле. Вы можете
дополнительно указать путь к INI-файлу.
Параметры для ``--install``
-f, --force
Перезаписывает существующие хуки, если они присутствуют.
<целевой-каталог>
При указании устанавливает git-хуки в заданный каталог. Если
<целевой-каталог> не указан, используется текущий каталог.
Если указанный ``<целевой-каталог>`` не находится в git-репозитории,
каталог будет создан, а хуки будут помещены в
``<целевой-каталог>/hooks``. Это может быть полезно для создания каталогов шаблонов git,
используемых с ``git init --template <целевой-каталог>``.
Вы можете выполнить ``git init`` в репозитории, который уже был инициализирован.
Из `документации git init <https://git-scm.com/docs/git-init>`_:
Из документации git: Выполнение ``git init`` в существующем репозитории
безопасно. Он не перезаписывает уже существующие файлы.
Основная причина повторного запуска ``git init`` — применить вновь добавленные
шаблоны (или переместить репозиторий в другое место, если указан
``--separate-git-dir``).
Устанавливаются следующие git-хуки:
1. ``pre-commit``: Используется для проверки, не содержат ли файлы, изменённые в коммите,
запрещённых шаблонов.
2. ``commit-msg``: Используется для определения, содержит ли сообщение коммита
запрещённые шаблоны.
3. ``prepare-commit-msg``: Используется для определения, приведёт ли коммит слияния
к истории, содержащей запрещённый шаблон в какой-либо точке.
Обратите внимание, что этот хук вызывается только для не-ff слияний.
.. note::