Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
teller — Облачное управление секретами для разработчиков — никогда не покидайте командную строку ради секретов. | Kitploit
Инструменты/GitHubGitHub/tellerops/teller
Безопасность облачной инфраструктурыАнализ КодаБезопасность облачных средDevSecOpsОбнаружение Секретов
GitHubtellerops/teller

teller

Облачное управление секретами для разработчиков — никогда не покидайте командную строку ради секретов.

Репозиторий
3.2k2016 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться






:computer: Never leave your terminal for secrets
:pager: Create easy and clean workflows for working with cloud environments
:mag_right: Scan for secrets and fight secret sprawl


Teller — универсальный менеджер секретов с открытым исходным кодом для разработчиков

Никогда не покидайте свой терминал, чтобы использовать секреты при разработке, тестировании и сборке приложений.

Вместо собственных скриптов, токенов в файлах .zshrc, видимых EXPORT в вашей истории bash, неуместных файлов .env.production и прочего на вашей рабочей станции — просто используйте teller и подключите его к любому хранилищу секретов, ключей или облачному сервису, который вам нравится (Teller поддерживает Hashicorp Vault, AWS Secrets Manager, Google Secret Manager и многие другие).

Вы можете использовать Teller, чтобы привести в порядок собственное окружение или внедрить его в команде как процесс и лучшую практику.

Быстрый старт с teller

Скачать бинарный файл Скачайте бинарный файл из релизов

Сборка из исходников Этот способ позволит вам просмотреть исходный код, изучить его и самостоятельно собрать копию.

Это установит бинарный файл локально на вашей машине:

root@kitploit:~
$ cd teller-cli
$ cargo install --path .

Создание новой конфигурации

root@kitploit:~
$ teller new
? Select your secret providers ›
⬚ hashicorp_consul
⬚ aws_secretsmanager
⬚ ssm
⬚ dotenv
⬚ hashicorp
⬚ google_secretmanager

Затем отредактируйте вновь созданный .teller.yml, чтобы задать карты (maps) и ключи, необходимые для ваших провайдеров.

Знакомство с teller.yml

Файл YAML Teller описывает ваши провайдеры, и внутри каждого провайдера находится map, который описывает:

  • Каков корневой путь для получения пар ключ-значение
  • Для каждой такой карты — её уникальный id, который пригодится вам для операций в дальнейшем
  • Для каждой карты — необязательное сопоставление конкретных имён ключей; вы можете переименовывать ключи, получаемые от исходного провайдера

Вот пример файла конфигурации. Обратите внимание, что он также включает шаблонные конструкции — например, получение переменных окружения при загрузке конфигурации:

root@kitploit:~
providers:
  hashi_1:
    kind: hashicorp
    maps:
      - id: test-load
        path: /{{ get_env(name="TEST_LOAD_1", default="test") }}/users/user1
        # if empty, map everything
        # == means map to same key name
        # otherwise key on left becomes right
        # in the future: key_transform: camelize, snake_case for automapping the keys
        keys:
          GITHUB_TOKEN: ==
          mg: FOO_BAR
  dot_1:
    kind: dotenv
    maps:
      - id: stg
        path: VAR_{{ get_env(name="STAGE", default="development") }}

Теперь вы можете обращаться к этим провайдерам как к hashi_1 или dot_1. По умолчанию Teller получает указанные данные от всех провайдеров.

Возможности

🏃 Запуск подпроцессов

Вручную экспортируете и настраиваете переменные окружения для запуска процесса с демонстрационной или боевой конфигурацией?

Обжигались на использовании .env.production и его раскрытии прямо в локальном проекте?

Используя teller и файл .teller.yml, который ничего не раскрывает чужим глазам, вы можете работать легко и бесшовно, без какого-либо риска и без необходимости в кавычках:

root@kitploit:~
$ teller run --reset --shell -- node index.js

🔎 Просмотр переменных

Эта команда выведет текущие переменные, которые подхватывает teller. Разумеется, от каждой переменной будут показаны только первые 2 буквы.

root@kitploit:~
$ teller show

📺 Наполнение локальной оболочки

Зашифровываете секреты прямо в скриптах оболочки и dot-файлах?

В некоторых случаях имеет смысл выполнять eval переменных в текущей оболочке. Например, в вашем .zshrc гораздо разумнее использовать teller, а не хардкодить всё это прямо в сам файл .zshrc.

В этом случае вам нужно добавить следующее:

root@kitploit:~
eval "$(teller sh)"

🐳 Простое окружение Docker

Устали собирать всевозможные переменные, настраивать их и переживать, что они также появятся в истории вашей оболочки?

Используйте эту однострочную команду отныне:

root@kitploit:~
$ docker run --rm -it --env-file <(teller env) alpine sh

⚠️ Поиск секретов

Teller может помочь вам бороться с расползанием секретов и захардкоженными секретами, а также стать лучшим инструментом продуктивности для работы с вашим хранилищем.

Он также может интегрироваться в ваш CI и служить инструментом безопасности shift-left для вашего пайплайна DevSecOps.

Ищите секреты, хранящиеся в вашем хранилище, в своём коде с помощью команды:

root@kitploit:~
$ teller scan

Вы можете запускать его как линтер в вашем CI следующим образом:

root@kitploit:~
run: teller scan --error-if-found

Он прервёт вашу сборку, если что-то найдёт (возвращает код выхода 1).

Вы также можете экспортировать результаты в JSON с помощью --json и сканировать бинарные файлы с помощью -b.

♻️ Затирание секретов в выводе процессов, логах и файлах

Вы можете использовать teller как инструмент редактирования/затирания по всей вашей инфраструктуре, запускать процессы с затиранием их вывода, а также очищать логи и живые хвосты логов.

Направьте вывод любого процесса, tail или логи в teller, чтобы затирать их в реальном времени:

root@kitploit:~
$ cat some.log | teller redact

Это также должно работать с tail -f:

root@kitploit:~
$ tail -f /var/log/apache.log | teller redact

Наконец, если у вас есть файлы, которые нужно затереть, вы можете сделать и это:

root@kitploit:~
$ teller redact --in dirty.csv --out clean.csv

Если опустить --in, Teller будет читать из stdin, а если опустить --out, Teller выведет результат в stdout.

📜 Заполнение шаблонов

Вы можете заполнять собственные шаблоны:

root@kitploit:~
$ teller template --in config-templ.t

Формат шаблонов — Tera, который очень похож на Liquid или Handlebars.

Вот пример шаблона:

root@kitploit:~
production_var: {{ key(name="PRINT_NAME")}}
production_mood: {{ key(name="PRINT_MOOD")}}

🔄 Копирование/синхронизация данных между провайдерами

В тех случаях, когда вы хотите выполнить синхронизацию между провайдерами, вы можете сделать это с помощью teller copy.

Синхронизация по конкретному ключу карты

Вы можете использовать формат <имя провайдера>/<идентификатор карты>, чтобы скопировать карту от одного провайдера к другому:

root@kitploit:~
$ teller copy --from source/dev --to target/prod,<...>

В этом упрощённом примере мы используем следующий файл конфигурации

root@kitploit:~
providers:
  dot1:
    kind: dotenv
    maps:
      - id: one
        path: one.env
  dot2:
    kind: dotenv
    maps:
      - id: two
        path: two.env

Это позволит:

  1. Забрать все сопоставленные значения из исходной карты
  2. Для каждого целевого провайдера найти соответствующую карту и скопировать в неё значения из исходной

По умолчанию копирование обновляет целевую карту (выполняет upsert); если вы хотите заменить значения, используйте --replace.

🚲 Запись и множественная запись в провайдеры

Провайдеры Teller поддерживают сценарии записи, позволяющие записывать значения в провайдеры.

Помните, что эта возможность по-прежнему опирается на определения в вашем файле teller.yml:

root@kitploit:~
$ teller put --providers new --map-id one NEW_VAR=s33kret

В этом примере используется следующая конфигурация:

root@kitploit:~
providers:
  new:
    kind: dotenv
    maps:
      - id: one
        path: new.env

Несколько замечаний:

  • Значения представляют собой пары ключ-значение в формате: key=value, и вы можете указать сразу несколько пар
  • Когда вы указываете буквальное чувствительное значение, обязательно используйте переменную окружения, чтобы в вашей истории ничего чувствительного не сохранилось
  • Флаг --providers позволяет отправлять данные одному или нескольким провайдерам одновременно

❌ Удаление и множественное удаление из провайдеров

Провайдеры Teller поддерживают удаление значений из провайдеров.

root@kitploit:~
$ teller delete --providers new --map-id one DELETE_ME

Несколько замечаний:

  • Вы можете указать несколько ключей для удаления, например:
  • Флаг --providers позволяет отправлять данные одному или нескольким провайдерам одновременно

YAML Экспорт в формате YAML

XXX TODO: переписать, как работает команда export

Вы можете выполнить экспорт в формате YAML, подходящем для GCloud:

root@kitploit:~
$ teller export yaml

Пример формата:

root@kitploit:~
FOO: "1"
KEY: VALUE

JSON Экспорт в формате JSON

Вы можете выполнить экспорт в формате JSON, подходящем для передачи через jq или другие рабочие процессы:

root@kitploit:~
$ teller export json

Пример формата:

root@kitploit:~
{
  "FOO": "1"
}

Провайдеры

Список провайдеров и описание их значений конфигурации вы можете найти в документации.

Контрольный список для тестирования:

  • docker on windows: если у вас есть тест на основе контейнеров, использующий Docker, обязательно исключите его на Windows с помощью #[cfg(not(windows))]

  • семантика ресурсов: при создании провайдеров придерживайтесь двух различных семантик — пусто и не найдено: если провайдер поддерживает явную семантику «не найдено» (404, NotFound и т.п.), используйте Error::NotFound. В противном случае, когда провайдер сигнализирует семантику «не найдено» как пустой набор данных, возвращайте пустой KV[] (т.е. не преобразуйте семантику «пусто» в «не найдено»).

Тестирование

Тестирование выполняется с помощью:

root@kitploit:~
$ cargo test --all --all-features

И требует наличия Docker (или аналога) на вашей машине.

Благодарности:

Всем контрибьюторам — это происходит благодаря вам, спасибо!

Кодекс поведения

Teller следует Кодексу поведения CNCF

Авторские права

Copyright (c) 2024 @jondot. Дополнительные сведения см. в LICENSE.

Скачать инструмент