35 lines
No EOL
1.2 KiB
XML
35 lines
No EOL
1.2 KiB
XML
== System Design
|
|
|
|
=== Clients
|
|
|
|
The rvault server is compliant with any client acting in compliance with the hashicorp vault api specification.
|
|
To achieve this, tests are written using the official Hashicorp vault go client.
|
|
|
|
=== Webserver
|
|
|
|
The Webserver forwards client requests to different routers according to the request paths:
|
|
i.e. "/v1/auth" for the authorization router.
|
|
Those routers map requests to their corresponding handlers.
|
|
|
|
Problem:
|
|
- TODO describe middleware
|
|
|
|
=== Engines
|
|
|
|
Engines are used to manage data. Depending on the engine this can include storage, generation and encryption. Each engine is independent from other engines.
|
|
Different engines are addressed via a path, which is passed as a prefix to the secret path. The path for the key-value storage would be .../kv-v2/foo.
|
|
|
|
In the code, engines are represented by folders which are divided into a logic section, struct sections and a test section.
|
|
|
|
=== Storage
|
|
|
|
Data is currently stored in an SQLite databse which is accessed with SQLX without ORM. Later stages of the project will allow for different storage systems to be used.
|
|
|
|
=== Overview
|
|
|
|
#figure(
|
|
image("../../assets/Design.svg", width: 80%),
|
|
caption: [
|
|
The acting components of rvault.
|
|
],
|
|
) |