Храним Access token к Git* в GNOME Keyring
В рамках одного проекта появилась потребность на Astra Linux взаимодействовать с внешним Git-репозиторием по HTTPS. Для аутентификации без использования стандартных учётных данных был создан персональный токен доступа.
Возник вопрос о наиболее безопасном способе его хранения. Встроенные механизмы Git, такие как \credential.helper store\ и \credential.helper cache, не подходили - первый просто сохраняет данные в открытом виде в файле, а второй, помимо аналогичной проблемы с безопасностью, оказался менее удобным в использовании.
Установка дополнительных пакетов была невозможна. Изучая документацию Git, наткнулся на возможность создания кастомной реализации для предоставления Git учетных данных.
Оставалось найти надёжное место для хранения токена. Решение нашлось в виде GNOME Keyring - компонента, который поставляется из коробки в Desktop-версии системы.
Используемые инструменты: - GNOME Keyring — встроенное хранилище секретов - Seahorse — графический интерфейс для работы с ключами - Secret-tool — консольная утилита для взаимодействия с хранилищем
Для начала добавим токен в хранилище: secret-tool store --label=“<описание>” <атрибут> <значение атрибута>
Пример команды: secret-tool store --label=“Git Personal Access Token” git token
После выполнения утилита запросит ввод токена.
Далее подготовим bash-скрипт для получения учётных данных(для удобства у нас доменный пользователь):
#!/bin/bash echo “username=$USER” echo “password=$(secret-tool lookup git token)”
Сохраняем файл, например, в \~/.git-credentials.sh\
Завершаем нашу настройку конфигурированием \credential.helper: git config --global credential.helper “/bin/bash ~/.credentials.sh”
Важные моменты: - Хранилище должно быть разблокировано (например автоматически при входе в систему) - При блокировке сессии хранилище остаётся доступным