MIA Secret - локальный менеджер секретов на Rust с CLI и HTTP API.
rustup toolchain install stable
cargo build --releaseГотовый бинарник: target/release/mia-secret.
rustup toolchain install stable-msvc
cargo build --releaseГотовый бинарник: target\release\mia-secret.exe.
Для CI-проверок качества:
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test --tests- Убедитесь, что установлен Rust toolchain.
- Инициализируйте конфиг и рабочую директорию:
cargo run -- init- Запустите сервер:
cargo run -- serve- Проверьте здоровье сервиса:
cargo run -- healthПо умолчанию сервер слушает 127.0.0.1:3765, а данные хранятся в ./data/secrets.db.
Команда init:
cargo run -- initСоздаёт структуру данных, файл базы и мастер-ключ, если их еще нет.
Команда serve:
cargo run -- serveПереопределение адреса:
cargo run -- serve --host 127.0.0.1 --port 3765Команда health проверяет уже поднятый сервер:
cargo run -- health --port 3765Файл конфигурации по умолчанию ищется как mia-secret.toml в текущей папке, затем в системной папке конфигурации.
Полезные команды:
cargo run -- config init
cargo run -- config show
cargo run -- config validateДля явного файла конфигурации используйте --config path/to/file.toml.
Добавить секрет:
cargo run -- add apps/prod/db --resource "PostgreSQL" --login admin --password "S3cret!" --tags prod,dbПолучить секрет по пути:
cargo run -- get apps/prod/dbПоказать все секреты:
cargo run -- listОбновить секрет:
cargo run -- update apps/prod/db --login readonly --tags prod,db,readonlyУдалить секрет:
cargo run -- delete apps/prod/dbСоздать токен:
cargo run -- token create "ops-token" --scopes secrets.read,secrets.listПоказать токены:
cargo run -- token listОтозвать токен:
cargo run -- token revoke 2f4c6f3f-1b43-4f89-8d66-3a1f6d7e8f10Импорт из CSV:
cargo run -- import csv --file ./exports/generic.csv --source generic
cargo run -- import csv --file ./exports/bitwarden.csv --source bitwarden --on-duplicate updateCLI-команды, которые обращаются к локальному HTTP API, читают токен из переменной окружения MIA_SECRET_TOKEN.
Пример:
$env:MIA_SECRET_TOKEN = "eyJ..."
cargo run -- listЕсли токен не задан, запросы к защищенным эндпоинтам вернут ошибку авторизации.
Также конфиг можно переопределять через переменные окружения формата MIA_SECRET__SECTION__FIELD, например:
$env:MIA_SECRET__SERVER__PORT = "3765"
$env:MIA_SECRET__GENERAL__LOG_LEVEL = "debug"- Храните
master.keyи файл базы только на локальной машине и не коммитьте их в репозиторий. - Используйте только loopback-адреса: конфиг валидируется так, чтобы сервер не поднимался на внешнем интерфейсе.
- Токены хранить в переменной окружения удобнее, чем вставлять их в командную строку и историю shell.
- Секреты, заметки и пользовательские поля могут шифроваться в зависимости от конфигурации
crypto. - При создании первого токена доступ обычно открыт, а последующие операции с токенами требуют
tokens.manage.
Сервер публикует API под префиксом /api/v1.
GET /api/v1/health- состояние сервиса.GET /api/v1/ready- готовность сервиса (БД + миграции).GET /api/v1/metrics- метрики в формате Prometheus.POST /api/v1/secrets- создать секрет.GET /api/v1/secrets- список секретов.GET /api/v1/secrets/{id}- получить секрет по UUID.PATCH /api/v1/secrets/{id}- обновить секрет.DELETE /api/v1/secrets/{id}- удалить секрет.GET /api/v1/secrets/by-path/{path}- получить секрет по пути.POST /api/v1/tokens- создать токен.GET /api/v1/tokens- список токенов.POST /api/v1/tokens/{id}/revoke- отозвать токен.
Подробные примеры запросов и ответов см. в docs/api.md, а справку по CLI - в docs/cli.md.
Критерии приемки и релизный процесс: docs/acceptance-checklist.md, docs/release.md.
Эксплуатационные метрики и диагностика: docs/observability.md.
Эксплуатационный runbook backup/restore/key rotation: docs/operations.md.
Quickstart для бинарной поставки: docs/binary-quickstart.md.