This project focuses on building a Secure Secret Management System using Java and Spring Boot. The system provides robust features for managing sensitive data (secrets) with an emphasis on security, version control, access control, and detailed audit trails.
-
Encryption and Decryption
- Secure storage of secrets with encryption.
- Authorized decryption for permitted users.
-
Role-Based Access Control (RBAC)
- Granular access control with roles:
- Admin: Full access to manage secrets, users, and audit controls.
- Owner: Owns specific secrets and assigns permissions to other users.
- User: Accesses secrets based on permissions granted.
- Granular access control with roles:
-
CRUD Operations
- Create, Read, Update, and Delete secrets via REST APIs.
-
Version Control
- Maintain up to 10 versions of a secret.
- Archive older versions for audit and recovery.
-
Pagination, Search, and Sorting
- Efficient listing of secrets with pagination.
- Search secrets based on metadata.
- Sort secrets by attributes like creation date or modification date.
-
Audit Trail
- Detailed logs of all operations on secrets.
- Ensure logs encrypt sensitive data.
-
Re-encryption Cron Job
- Automatically re-encrypt secrets older than 10 days.
-
Project Setup
- Spring Boot configuration.
- Database schema design.
- Swagger for API documentation.
-
CRUD Operations
- Implement APIs for creating, reading, updating, and deleting secrets.
- Encrypt secret data before storage and decrypt it for authorized users.
-
Encryption Handling
- Secure encryption mechanisms for all secret data.
-
RBAC Implementation
- Use JWT and Spring Security for authentication and role-based access.
-
Version Control
- Maintain and archive older versions of secrets.
- Ensure audit trails capture version updates.
-
API Enhancements
- Enable owners to view and revert to previous versions.
-
Pagination, Search, and Sorting
- Implement APIs with pagination, search, and sorting functionality.
-
Re-encryption Cron Job
- Scheduled task to re-encrypt secrets older than 10 days.
-
Enhanced Audit Trail
- Log all operations, with sensitive data encrypted even in logs.
-
Fine-Grained Access Control
- Allow Owners to specify detailed permissions for secrets.
-
Reports and Monitoring
- Generate usage reports:
- Total number of secrets.
- Encryption status summary (e.g., last encryption date).
- Generate usage reports:
- Java 17
- Spring Boot 3.x
- MySQL/PostgreSQL for the database
- Swagger for API documentation
-
Clone the repository:
git clone https://github.com/Vikashkatiyar/CipherKeep.git
-
Set up the database:
- Create the necessary database schema as per the project design.
-
Run the application:
./mvnw spring-boot:run
-
Access Swagger API documentation:
http://localhost:8080/swagger-ui/index.html
controller
: Handles REST API endpoints.service
: Contains business logic.repository
: Handles database interactions.entity
: Contains entity classes for database tables.config
: Configurations for security, encryption, and application settings.
- Add support for external secret stores (e.g., AWS Secrets Manager, Azure Key Vault).
- Enhance reporting with analytics dashboards.
- Implement secret expiration and notifications.
This project is licensed under the MIT License.