View difference between Paste ID: K0AjV7QA and xEHdaTpV
SHOW: | | - or go back to the newest paste.
1
# Code Challenge: Audit Log API
2
3
## Objective
4
5
Develop a comprehensive audit logging API system that tracks and manages user actions across different applications. This system should be designed to handle high-volume logging, provide search and filtering capabilities, and ensure data integrity and security.
6
7
## Requirements:
8
9
### Core Features:
10
11
#### Audit Log Management:
12
- **Log Entry Creation**: API endpoints to create audit log entries with metadata
13
- **Structured Data**: Each log entry should include:
14
  - User ID and session information
15
  - Action performed (CREATE, UPDATE, DELETE, VIEW, etc.)
16
  - Resource type and ID (e.g., "user", "order", "product")
17
  - Timestamp with timezone
18
  - IP address and user agent
19
  - Before/after state changes (for modifications)
20
  - Custom metadata fields
21
  - Severity level (INFO, WARNING, ERROR, CRITICAL)
22
  - **Tenant ID**: Multi-tenant support for multiple applications/organizations
23
24
#### Search and Retrieval:
25
- **Advanced Search**: Filter logs by date range, user, action type, resource type, severity, **tenant ID**
26
- **Full-text Search**: Search through log messages and metadata
27
- **Pagination**: Handle large result sets efficiently
28
- **Export Functionality**: Export logs in JSON, CSV formats
29
- **Real-time Log Streaming**: WebSocket endpoint for real-time log monitoring
30
- **Tenant Isolation**: Ensure complete data isolation between tenants
31
32
#### Data Management:
33
- **Data Retention**: Configurable retention policies (e.g., keep logs for 90 days)
34
- **Data Archival**: Move old logs to cold storage
35
- **Data Compression**: Efficient storage for large log volumes
36
- **Backup and Recovery**: Automated backup procedures
37
38
### Technical Requirements:
39
40
#### API Design:
41
- **API Gateway**: Choose between AWS API Gateway or Application Load Balancer based on requirements
42
- **RESTful API** following OpenAPI 3.0 specification
43
- **Authentication**: JWT-based authentication
44
- **Authorization**: Role-based access (Admin, Auditor, User) with **tenant-based access control**
45
- **Rate Limiting**: Prevent API abuse
46
- **Request Validation**: Input sanitization and validation
47
- **Error Handling**: Proper HTTP status codes and error messages
48
- **Search Integration**: OpenSearch for advanced search capabilities
49
- **Multi-tenancy**: Support for multiple tenants with complete data isolation
50
51
#### Database Design:
52
- **Database Choice**: Select one of the three options based on your preference and requirements:
53
  - **PostgreSQL + TimescaleDB**: Optimized for time-series data with efficient partitioning
54
  - **MongoDB**: Document-based storage with flexible schema for audit logs
55
  - **DynamoDB**: Serverless NoSQL with automatic scaling and built-in encryption
56
- **Multi-tenant Schema**: Design schema to support multiple tenants with proper isolation
57
- **Optimized Schema**: Design for high-volume writes and complex queries based on your chosen database
58
- **Indexing Strategy**: Efficient indexes for search operations (database-specific) including tenant-based indexes
59
- **Data Partitioning**: Consider time-based and tenant-based partitioning for large datasets
60
- **Connection Pooling**: Handle concurrent requests efficiently
61
62
#### Performance:
63
- **High Throughput**: Handle 1000+ log entries per second
64
- **Low Latency**: Sub-100ms response times for search queries
65
- **Message Queue**: AWS SQS for background task processing and data archival
66
- **Async Processing**: Background tasks for data archival and cleanup using SQS
67
68
#### Security:
69
- **Data Encryption**: Encrypt sensitive log data at rest
70
- **Access Control**: Fine-grained permissions for log access with tenant isolation
71
- **Audit Trail**: Log access to the audit logs themselves
72
- **Data Masking**: Mask sensitive information in logs (PII, passwords)
73
- **Tenant Isolation**: Complete data isolation between tenants at all levels
74
- **Cross-tenant Protection**: Prevent data leakage between tenants
75
76
### Implementation Details:
77
78
#### Technology Stack:
79
- **Framework**: Django or FastAPI
80
- **API Gateway**: Choose one of:
81
  - **AWS API Gateway** (for serverless, managed API management)
82
  - **Application Load Balancer (ALB)** (for traditional load balancing)
83
- **Database**: Choose one of:
84
  - **PostgreSQL** with TimescaleDB extension (for time-series data)
85
  - **MongoDB** (for document-based storage)
86
  - **DynamoDB** (for serverless, scalable NoSQL)
87
- **Message Queue**: AWS SQS for background task processing
88
- **Search**: OpenSearch (optional, for advanced search capabilities)
89
90
#### API Endpoints:
91
```
92
POST   /api/v1/logs                    # Create log entry (with tenant ID)
93
GET    /api/v1/logs                    # Search/filter logs (tenant-scoped)
94
GET    /api/v1/logs/{id}              # Get specific log entry (tenant-scoped)
95
GET    /api/v1/logs/export            # Export logs (tenant-scoped)
96
GET    /api/v1/logs/stats             # Get log statistics (tenant-scoped)
97
POST   /api/v1/logs/bulk              # Bulk log creation (with tenant ID)
98
DELETE /api/v1/logs/cleanup           # Cleanup old logs (tenant-scoped)
99
WS     /api/v1/logs/stream            # Real-time log streaming (tenant-scoped)
100
GET    /api/v1/tenants                # List accessible tenants (admin only)
101
POST   /api/v1/tenants                # Create new tenant (admin only)
102
```
103
104
#### System Architecture:
105
```mermaid
106
graph TB
107
    subgraph "Client Applications"
108
        App1[Application 1<br/>Tenant A]
109
        App2[Application 2<br/>Tenant B]
110
        App3[Application 3<br/>Tenant C]
111
    end
112
    
113
    subgraph "API Gateway Layer"
114
        APIGateway[AWS API Gateway]
115
        ALB[Application Load Balancer]
116
    end
117
    
118
    subgraph "Audit Log API"
119
        Auth[Authentication]
120
        TenantAuth[Tenant Authorization]
121
        RateLimit[Rate Limiting]
122
    end
123
    
124
    subgraph "Core Services"
125
        LogService[Log Service<br/>Multi-tenant]
126
        SearchService[Search Service<br/>Tenant-scoped]
127
        ExportService[Export Service<br/>Tenant-scoped]
128
        StreamService[Stream Service<br/>Tenant-scoped]
129
    end
130
    
131
    subgraph "Data Layer"
132
        PostgreSQL[(PostgreSQL + TimescaleDB<br/>Tenant-partitioned)]
133
        MongoDB[(MongoDB<br/>Tenant-collections)]
134
        DynamoDB[(DynamoDB<br/>Tenant-partitioned)]
135
        OpenSearch[(OpenSearch<br/>Tenant-indices)]
136
    end
137
    
138
    subgraph "Message Queue"
139
        SQS[AWS SQS<br/>Tenant-queues]
140
    end
141
    
142
    subgraph "Background Services"
143
        Workers[SQS Workers<br/>Tenant-aware]
144
        Cleanup[Data Cleanup<br/>Tenant-scoped]
145
        Archive[Data Archival<br/>Tenant-scoped]
146
    end
147
    
148
    App1 --> APIGateway
149
    App1 --> ALB
150
    App2 --> APIGateway
151
    App2 --> ALB
152
    App3 --> APIGateway
153
    App3 --> ALB
154
    
155
    APIGateway --> Auth
156
    ALB --> Auth
157
    Auth --> TenantAuth
158
    TenantAuth --> RateLimit
159
    RateLimit --> LogService
160
    RateLimit --> SearchService
161
    RateLimit --> ExportService
162
    RateLimit --> StreamService
163
    
164
    LogService --> PostgreSQL
165
    LogService --> MongoDB
166
    LogService --> DynamoDB
167
    SearchService --> OpenSearch
168
    ExportService --> PostgreSQL
169
    ExportService --> MongoDB
170
    ExportService --> DynamoDB
171
    
172
    LogService --> SQS
173
    Workers --> SQS
174
    Cleanup --> SQS
175
    Archive --> SQS
176
```
177
178
#### Audit Log Flow:
179
```mermaid
180
sequenceDiagram
181
    participant Client as Client App<br/>(Tenant A)
182
    participant Gateway as API Gateway/ALB
183
    participant Auth as Auth Service
184
    participant TenantAuth as Tenant Auth
185
    participant Log as Log Service
186
    participant DB as Database (Tenant A)
187
    participant SQS as AWS SQS
188
    participant Search as OpenSearch
189
    participant Worker as SQS Worker
190
    
191
    Client->>Gateway: POST /api/v1/logs<br/>(tenant_id: A)
192
    Gateway->>Auth: Validate JWT Token
193
    Auth-->>Gateway: Token Valid
194
    Gateway->>TenantAuth: Validate Tenant Access
195
    TenantAuth-->>Gateway: Tenant Access Granted
196
    Gateway->>Log: Create Log Entry (Tenant A)
197
    Log->>DB: Store Log Entry (Tenant A)
198
    Log->>SQS: Queue Background Tasks (Tenant A)
199
    Log-->>Gateway: Log Created
200
    Gateway-->>Client: 201 Created
201
    
202
    Note over SQS,Worker: Background Processing (Tenant A)
203
    SQS->>Worker: Process Background Tasks
204
    Worker->>Search: Index for Search (Tenant A)
205
    Worker->>DB: Data Cleanup/Archival (Tenant A)
206
    
207
    Note over Client,Search: Real-time Streaming (Tenant A)
208
    Client->>Gateway: WS /api/v1/logs/stream<br/>(tenant_id: A)
209
    Gateway->>Log: Subscribe to Stream (Tenant A)
210
    Log->>Client: Real-time Log Updates (Tenant A)
211
```
212
213
### Testing:
214
215
- **Unit Tests**: >85% code coverage
216
- **Integration Tests**: API endpoint testing
217
- **Performance Tests**: Load testing with realistic data volumes
218
- **Security Tests**: Authentication and authorization testing
219
220
### Documentation:
221
222
- **API Documentation**: OpenAPI/Swagger documentation
223
- **Setup Instructions**: Clear deployment and configuration guide
224
- **Architecture Diagram**: System design and data flow
225
- **Code Documentation**: Inline comments and docstrings
226
227
### Bonus Features (Optional):
228
229
- **Alert System**: Configure alerts for specific log patterns
230
- **Dashboard**: Simple web interface for log visualization
231
- **Log Analytics**: Basic analytics and reporting
232
- **Log Correlation**: Group related log entries by request ID
233
234
### Submission:
235
236
- **Git Repository**: Clean, well-structured code
237
- **README**: Comprehensive setup and usage instructions
238
- **API Documentation**: Complete endpoint documentation
239
- **Postman Collection**: Test the API endpoints
240
- **Architecture Diagram**: System design overview
241
- **Live Demo**: Deployed application (optional)
242
243
### Evaluation Criteria:
244
245
#### Code Quality & Architecture (30%):
246
- **Code Structure**: Clean, maintainable, and well-structured code
247
- **API Design**: RESTful principles, proper error handling, validation
248
- **Database Design**: Efficient schema design and query optimization with multi-tenant support
249
- **Multi-tenancy**: Proper implementation of tenant isolation and access control
250
- **Technical Decisions**: Justification of technology choices and architecture
251
252
#### Performance & Scalability (25%):
253
- **High Throughput**: Ability to handle 1000+ log entries per second
254
- **Low Latency**: Sub-100ms response times for search queries
255
- **Message Queue**: Effective use of AWS SQS for background processing
256
- **Database Optimization**: Efficient design and query performance for chosen database
257
258
#### Security & Compliance (20%):
259
- **Authentication**: Proper JWT-based authentication implementation
260
- **Authorization**: Role-based access control and fine-grained permissions with tenant isolation
261
- **Data Protection**: Encryption at rest and in transit
262
- **Input Validation**: Proper sanitization and validation of all inputs
263
- **Tenant Isolation**: Complete data isolation between tenants
264
265
#### Testing & Documentation (15%):
266
- **Test Coverage**: >85% code coverage with comprehensive testing
267
- **API Documentation**: Complete OpenAPI/Swagger documentation
268
- **Setup Instructions**: Clear deployment and configuration guide
269
- **Code Documentation**: Inline comments and comprehensive docstrings
270
271
#### Problem Solving & Innovation (10%):
272
- **Complex Requirements**: Ability to handle complex requirements efficiently
273
- **Creative Solutions**: Innovative approaches to technical challenges
274
- **Database Choice**: Justification and implementation of chosen database technology
275
- **API Gateway Choice**: Selection and implementation of API Gateway or ALB
276
- **SQS Integration**: Effective use of AWS SQS for background processing
277
- **OpenSearch Integration**: Implementation of advanced search capabilities
278
- **Multi-tenancy**: Effective implementation of tenant isolation and access control
279
- **Bonus Features**: Implementation of optional advanced features
280
- **Performance Optimization**: Creative solutions for performance challenges
281
282
## Timeline:
283
284
This challenge is designed to be completed in **3-5 business days**:
285
286
#### **Days 1-2: Core API Development**
287
- Set up project structure and technology stack
288
- Choose and configure database (PostgreSQL/MongoDB/DynamoDB)
289
- Set up API Gateway or ALB
290
- Implement core audit log management features
291
- Design and implement database schema
292
- Create basic API endpoints
293
- Set up AWS SQS for background processing
294
- Configure OpenSearch for search capabilities
295
296
#### **Days 3-4: Advanced Features & Testing**
297
- Implement search, filtering, and export functionality
298
- Add real-time streaming capabilities
299
- Implement security and authentication
300
- Create comprehensive test suite
301
302
#### **Day 5: Documentation & Final Review**
303
- Complete API documentation
304
- Create architecture diagrams
305
- Final testing and optimization
306
- Prepare submission materials
307
308
Focus on delivering a working MVP with core features rather than implementing all bonus features.
309
310
## Priority Focus Areas:
311
312
#### **Must Complete (High Priority):**
313
- Core audit log creation and retrieval API endpoints
314
- Database setup and configuration (PostgreSQL/MongoDB/DynamoDB)
315
- API Gateway or ALB setup and configuration
316
- Basic search and filtering functionality
317
- Database schema design and implementation with multi-tenant support
318
- Authentication and authorization system with tenant isolation
319
- Basic security controls and data validation
320
- AWS SQS setup for background processing
321
- OpenSearch setup for search capabilities
322
- Multi-tenant implementation and tenant management
323
324
#### **Should Complete (Medium Priority):**
325
- Advanced search with full-text capabilities using OpenSearch
326
- Real-time log streaming via WebSocket
327
- Data retention and archival policies using SQS
328
- Performance optimization and database-specific tuning
329
- Comprehensive test coverage
330
- SQS worker implementation for background tasks
331
- API Gateway/ALB advanced features (rate limiting, caching)
332
333
#### **Nice to Have (Low Priority):**
334
- Export functionality (JSON, CSV)
335
- Dashboard and visualization interface
336
- Advanced analytics and reporting
337
- Alert system for log patterns
338
339
## Questions?
340
341
Any questions you may have, please contact us by e-mail.
342
343
Good luck! 🚀