6 подписчиков
В рамках одного проекта появилась потребность на 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"
Важные моменты:
- Хранилище должно быть разблокировано (например автоматически при входе в систему)
- При блокировке сессии хранилище остаётся доступным
1 минута
Вчера