init project
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# AI Prompt Guideline: Enterprise & Healthcare Security Standards
|
||||
|
||||
## 🎯 Mục đích (Purpose)
|
||||
Tài liệu này đóng vai trò là "System Prompt" hoặc "Guideline" dành cho các AI Agent (trợ lý lập trình). Khi AI tham gia viết code hoặc thiết kế hệ thống cho dự án này, bắt buộc phải tuân thủ nghiêm ngặt các nguyên tắc bảo mật và kiến trúc dưới đây. Không tự ý đi đường tắt (workaround) làm suy giảm an toàn thông tin của hệ thống.
|
||||
|
||||
## 🏗️ 1. Nguyên lý Kiến trúc (Architectural Principles)
|
||||
Dự án áp dụng mô hình **Network Isolation (Cách ly mạng)** kết hợp **Jamstack**, chia làm 3 vùng (Zones) độc lập với luồng dữ liệu 1 chiều (Outbound Only):
|
||||
|
||||
* **Zone 1 (Internet/Public):** Giao diện tĩnh (Next.js/React). Cấm tuyệt đối việc kết nối trực tiếp vào Database nội bộ. AI chỉ được viết code gọi API lấy dữ liệu từ Zone 2.
|
||||
* **Zone 2 (DMZ/Semi-Public):** Vùng đệm (Ví dụ: Meilisearch + Nginx). Chỉ lưu trữ/phục vụ dữ liệu đã làm sạch (Sanitized Public Data). Cấm lưu trữ thông tin nhạy cảm. Các API mở ra phải có Rate Limiting.
|
||||
* **Zone 3 (Core/Private):** Mạng nội bộ (Spring Boot + Oracle DB). Bị cách ly hoàn toàn với Internet. Phân vùng này **chỉ đẩy dữ liệu ra ngoài (Push/Outbound)** sang Zone 2, không mở cổng nhận request (Inbound) từ Zone 1.
|
||||
|
||||
## 🛡️ 2. Tiêu chuẩn Mã hóa Backend (Zone 3 - Spring Boot)
|
||||
Khi generate code cho Backend, AI phải tự động áp dụng các tiêu chuẩn bảo mật sau mà không cần user phải nhắc lại:
|
||||
|
||||
### 2.1. Xác thực & Phân quyền (Auth & RBAC)
|
||||
* **Bắt buộc cấu hình Spring Security:** Không một API nào được public nếu không có lý do chính đáng.
|
||||
* **Cơ chế Zero Trust:** Sử dụng JWT (JSON Web Token) ngắn hạn kèm Refresh Token cho mọi request. Không dùng Session/Cookie thuần để tránh CSRF.
|
||||
* **Phân quyền chi tiết (RBAC):** Bắt buộc sử dụng `@PreAuthorize("hasRole('...')")` hoặc `@PreAuthorize("hasAuthority('...')")` trên các Controller/Service.
|
||||
|
||||
### 2.2. Mã hóa & Bảo vệ Dữ liệu (Encryption & Data at Rest)
|
||||
* **Application-Level Encryption:** Đối với các trường chứa thông tin nhạy cảm (PHI - Protected Health Information như CCCD, Bệnh án, Lịch sử khám), AI phải thiết kế class `AttributeConverter` sử dụng mã hóa **AES-256** để tự động mã hóa trước khi `@Column` lưu xuống cơ sở dữ liệu.
|
||||
* **Hash Mật khẩu:** Tuyệt đối không lưu plaintext. Bắt buộc dùng `BCryptPasswordEncoder` hoặc `Argon2PasswordEncoder`.
|
||||
|
||||
### 2.3. Phòng thủ API (API Protection)
|
||||
* **Validate Input triệt để:** Bắt buộc dùng `spring-boot-starter-validation`. Mọi DTO phải có các annotation như `@NotNull`, `@NotBlank`, `@Size`, `@Pattern` để chống XSS và Injection.
|
||||
* **CORS:** Cấu hình nguồn gốc (Origins) chặt chẽ, tuyệt đối không dùng mảng ký tự đại diện `*` trên production.
|
||||
* **Rate Limiting:** Khi cung cấp API ra ngoài (như DMZ), phải tích hợp cơ chế chống spam (ví dụ: dùng Bucket4j).
|
||||
|
||||
### 2.4. Lưu vết & Giám sát (Audit Trail)
|
||||
* **Bắt buộc dùng JPA Auditing:** Kích hoạt `@EnableJpaAuditing`. Mọi Entity (Bảng) chứa dữ liệu nghiệp vụ phải kế thừa base class chứa các trường: `@CreatedBy`, `@CreatedDate`, `@LastModifiedBy`, `@LastModifiedDate`.
|
||||
* **Log Masking:** Cấm in ra các thông tin nhạy cảm (Password, Token, CCCD, thông tin bệnh án) vào file log của ứng dụng qua SLF4J/Logback.
|
||||
|
||||
## 📝 3. Quy trình Đồng bộ Dữ liệu (Data Syncing)
|
||||
* Khi có sự thay đổi dữ liệu (Create/Update/Delete) cần xuất bản ra DMZ (Vùng 2), AI phải thiết kế theo hướng **Bất đồng bộ (Asynchronous)**.
|
||||
* Bắt buộc dùng **Spring Events** (`@TransactionalEventListener` kết hợp `@Async`). Logic gọi HTTP Client sang Meilisearch không được phép block luồng giao dịch (transaction) chính lưu vào Oracle DB.
|
||||
|
||||
## 🚨 4. Lệnh Tối Cao Dành Cho AI (Strict AI Directives)
|
||||
1. **"Secure by Default":** Mặc định mọi quyền truy cập, mọi cổng kết nối là ĐÓNG.
|
||||
2. **"No Secrets in Code":** Tuyệt đối KHÔNG hardcode API Key, Database Password, hay Secret Key trong mã nguồn. Bắt buộc đọc qua `@Value("${...}")` kết hợp Biến môi trường (Environment Variables).
|
||||
3. **"Compliance First":** Luôn ghi nhớ đây là hệ thống Y tế (Healthcare). Mọi truy vấn DB trả về Client phải được loại bỏ (mask/ignore) các trường dữ liệu cá nhân không cần thiết. Trả về đúng và đủ.
|
||||
Reference in New Issue
Block a user