gpwd

module
v0.0.0-...-efb7c8a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2022 License: MIT

README

Golang Password Manager

Высокоуровневая архитектура

High Level Design

Инфраструктура менеджера секретов состоит из:

  • CLI для создания и управления секретами
  • фонового агента, отвечающего за управление локальным кэшем в SQLite3 и синхронизацией с сервером
  • Сервера, представляющего собой "облачное"-хранилище и позволяющего работать с данными секретов с нескольких устройств

Низкоуровневая архитектура

High Level Design
Взаимодействие компонентов

Взаимодействие всех компонентов происходит по gRPC с TLS аутентификацией. Авторизация пользователя выполняется на сервере с помощью логина и пароля с выдачей временных JWT-токенов для выполнения синхронизации.

Секреты

Секреты шифруются симметричным шифрованием с помощью мастер-пароля, указываемым при запуске агента. В дальнейшем, чтобы прочитать секрет, пользователь CLI должен указать мастер-пароль для расшифровки. Операции создания, обновления и удаления секретов не требуют мастер-пароля.

Запуск агента запрашивает ввод мастер-пароля:

bin/gpwd agent --logLevel DEBUG
? Please type your master password: *************

Минимальная длина мастер-пароля - 32 символа.

Для запуска агента с помощью сервис-менеджера (systemd), мастер пароль можно передать в переменной окружения MASTER_PASSWORD:

export MASTER_PASSWORD=.....my_password....
bin/gpwd agent --logLevel DEBUG &
Подключение к "облачному"-хранилищу

Пользователь CLI выполняет аутентификацию на сервере с помощью команды account:

gpwd account create --username igortiunov --serverAddress localhost:8080

Агент выполняет регистрацию аккаунта на указанном сервере, сохраняет данные аутентификации в локальном кэше и, в дальнейшем, выполняет периодическую синхронизацию с сервером. Частота синхронизации задаётся при запуске агента с помощью параметра syncInterval.

За управление секретами отвечает соответствующий набор CRUDL команд (create, update, delete, list, get):

Example usage

Directories

Path Synopsis
cmd
internal
logging
Package logging provides useful routines for logging
Package logging provides useful routines for logging
logging/log
Package log provides a global logger.
Package log provides a global logger.
proto/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL