Перейти к содержимому

Секреты

Секреты никогда не пишутся в env.toml — рано или поздно кто-нибудь закоммитит токен. Вместо этого Outry берёт их из хранилища паролей операционной системы.

Окно терминала
outry secret set token --env dev # значение читается из stdin
outry secret rm token --env dev
GET /me {
headers { Authorization: "Bearer ${token}" }
}

Если token больше нигде не задан, Outry ищет его в:

  • macOS — Keychain;
  • Windows — Credential Manager;
  • Linux — Secret Service (GNOME Keyring, KWallet, KeePassXC).

Секреты хранятся отдельно для каждого проекта и окружения: сервис outry, ключ <проект>/<окружение>/<имя>. Имя проекта — project из env.toml или имя папки проекта (родительской, если папка называется api).

В приложении для этого есть кнопка Add secret внизу боковой панели — она сохраняет туда же.

Перечислите имена секретов в env.toml — только имена, не значения:

api/env.toml
secrets = ["token", "api_key"]

Тогда outry vars и вкладка Variables в приложении покажут, каких секретов не хватает в текущем окружении, а редактор их подскажет. Значения секретов в обоих местах замаскированы.

На CI-раннерах хранилища паролей нет. Передавайте секреты переменными OUTRY_<ИМЯ> — они главнее env.toml и хранилища:

- run: outry run api --env staging --no-keyring
env:
OUTRY_TOKEN: ${{ secrets.API_TOKEN }}

--no-keyring полностью отключает обращение к хранилищу. Но и без него Outry работает на машинах без графической сессии: если хранилища нет, секрет просто считается ненайденным.