This project is a Secret Management System designed to securely store, retrieve, and manage sensitive data such as:
- Database credentials
- API keys
- Service tokens
It follows a clean, modular architecture with backend abstraction, enabling support for multiple secret storage providers.
Modern applications often suffer from:
- Hardcoded credentials
- No audit tracking
- Poor secret rotation practices
- Tight coupling to storage systems
This project introduces:
- Centralized secret storage
- Version-controlled updates
- Pluggable backend architecture
- Audit logging for traceability
- API-driven secret operations
- Click the Codespaces badge above
- Wait for environment setup
- Run:
python -m server.extender.src.system_extender- Open forwarded port 8000
git clone https://github.com/dasher06/secret-management-vault
cd secret-management-vault
python -m venv venv
venv\Scripts\Activate.ps1 # Windows
pip install -r requirements.txt
python -m server.extender.src.system_extenderOpen:
http://127.0.0.1:8000
Frontend (index.html)
↓
API Routes (FastAPI)
↓
Service Layer (Business Logic)
↓
Backend Layer (Storage Abstraction)
↓
Utilities (Auth, Audit, Metrics, Rotation)
server/
│
├── extender/
│ ├── src/
│ │ ├── routes/
│ │ │ └── secrets.py
│ │ │
│ │ ├── services/
│ │ │ └── secret_store/
│ │ │ ├── client.py
│ │ │ ├── mock_backend.py
│ │ │ ├── env_backend.py
│ │ │ └── openbao_backend.py
│ │ │
│ │ ├── utils/
│ │ │ ├── auth.py
│ │ │ ├── audit.py
│ │ │ ├── metrics.py
│ │ │ └── rotation.py
│ │ │
│ │ ├── static/
│ │ │ └── index.html
│ │ │
│ │ └── system_extender.py
│ │
│ └── tests/
│ ├── test_secret_store_api.py
│ ├── test_secret_store_mock.py
│ └── test_secret_store_openbao.py
- Create secrets (POST)
- Retrieve secrets (GET)
- Update secrets with versioning (PUT)
- List all stored secrets
- Audit logging of all operations
- Backend abstraction layer
- UI dashboard for interaction
Path:
database/postgres-main
Value:
{
"db_host": "prod-1",
"db_pass": "secure_env_01"
}{
"db_host": "prod-2",
"db_pass": "secure_env_02"
}Version automatically increments.
GET /api/v1/secrets/service/database/postgres-main
Handles backend selection and request routing.
mock_backend.py→ In-memory storageenv_backend.py→ Environment-based storageopenbao_backend.py→ External vault integration (extensible)
auth.py→ authentication placeholderaudit.py→ request loggingmetrics.py→ performance trackingrotation.py→ secret lifecycle logic
- Separation of concerns
- Modular architecture
- Backend abstraction
- Scalability-focused design
- Clean API structure
- No real authentication enforcement
- No encryption at rest
- OpenBao not connected to live instance
- Local deployment only
- JWT authentication layer
- Encryption of secrets
- Role-based access control (RBAC)
- Docker deployment
- Real OpenBao/Vault integration
This project is licensed under the MIT License.