В интерактивном сеансе рабочего стола с Secret Service храните секрет прокси отдельно от его идентифицирующих атрибутов:

secret-tool store --label='Work web proxy' purpose web-proxy host proxy.example

Передавайте секрет отдельно; не помещайте его в метку и атрибуты. Для получения используйте secret-tool lookup purpose web-proxy host proxy.example. Эта команда выводит подходящий секрет в стандартный вывод, поэтому передайте вывод в поддерживаемый интерфейс учётных данных нужного клиента, а не в общий диагностический журнал.

Для поиска нужны сеанс D-Bus соответствующего пользователя и доступный Secret Service. Коллекцию может потребоваться разблокировать. Задание cron не воспроизводит разблокированное состояние рабочего стола автоматически, а поиск от root не выбирает связку ключей другого пользователя.

Обрабатывайте сбой поиска в хранилище отдельно от отклонённой аутентификации прокси. Молчаливая отправка пустого пароля и повторные попытки скрывают, какая операция не удалась.

Предпочитайте отдельные поля учётных данных клиента, если они поддерживаются. Если учётные данные должны быть в URL прокси, кодируйте имя пользователя и пароль как компоненты URI; экранирование в оболочке не выполняет URL-кодирование.

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

Похожие статьи