Role: terachat-ci-cd-pipeline
Description: DevOps Architect specializing in DevSecOps, Hermetic Builds, and Supply Chain Security.
1. The "Clean Room" Policy (Hermetic Build)
Nguyên tắc: Biến quá trình build thành một hộp đen cô lập.
- •Vendoring Mandate:
- •Rust: Toàn bộ Crates phải được
cargo vendorvà commit vào Repo nội bộ hoặc lưu trong Artifactory riêng (Offline Mirror). - •Swift: Swift Packages phải được mirror về Local.
- •Rust: Toàn bộ Crates phải được
- •Offline Compilation:
- •Container Build (Docker) chạy với flag
--network none. - •Nếu lệnh Build cố gắng kết nối ra ngoài -> FAIL NGAY LẬP TỨC.
- •Mục tiêu: Ngăn chặn các script
build.rsđộc hại lén tải mã độc hoặc gửi telemetry ra ngoài.
- •Container Build (Docker) chạy với flag
1.2 Base Image Provenance (Nguồn gốc Image)
- •NO DOCKER HUB DIRECT: Cấm sử dụng
FROM rust:latesthoặc các image cộng đồng trong Dockerfile sản xuất. - •Bootstrapping Process:
- •Start from
debian:bookworm-slim(Verified SHA256 từ trang chủ Debian). - •Download
rustup-init. - •MANDATORY: Verify GPG Signature của
rustup-initvới Key công khai của Rust Foundation. - •Install Toolchain -> Export ra Docker Image nội bộ (
terachat-core-builder).
- •Start from
- •SBOM (Software Bill of Materials): Mọi Image nội bộ phải đi kèm file SBOM (danh sách toàn bộ gói phần mềm bên trong) để quét lỗ hổng định kỳ (dùng
syfthoặctrivy).
2. Reproducible Builds (Xây dựng lặp lại)
Goal: Hash(Build_Hôm_Nay) == Hash(Build_Ngày_Mai) với cùng một Source Code.
- •Technique:
- •Set
SOURCE_DATE_EPOCHđể cố định timestamp trong binary. - •Xóa bỏ mọi đường dẫn tuyệt đối (Absolute Path) trong debug symbols (
-remap-path-prefix). - •Immutable Build Environment: Sử dụng Docker Image được định danh bằng Digest SHA256 (VD:
rust@sha256:abc...), tuyệt đối KHÔNG dùng tag động như:latest.
- •Set
3. The Signing Ceremony (Quy trình ký số tách biệt)
Server CI (GitHub Actions/GitLab CI) KHÔNG ĐƯỢC PHÉP chứa Private Key.
- •Bước 1 (Build): CI Server (Offline) tạo ra file
TeraChat-Unsigned.dmg/.exe. - •Bước 2 (Transport): Gửi Hash của file sang Secure Signing Server (Server vật lý hoặc Cloud KMS trong VPC riêng biệt).
- •Bước 3 (Sign): Signing Server dùng Key nằm trong HSM (YubiKey/AWS KMS) để ký lên Hash đó.
- •Bước 4 (Verify & Attach): Trả về Signature. CI Server ghép lại thành
TeraChat-Signed.dmg.
4. Artifact Hardening
- •Windows: Bắt buộc bật ASLR (Address Space Layout Randomization) và DEP/NX bit.
- •macOS: Bắt buộc Hardened Runtime, Notarization ticket (stapled).
- •Linux: Strip binaries, check RPATH để tránh bị load thư viện lạ (DLL Hijacking).
5. Deployment Gates (Chốt chặn cuối cùng)
Trước khi release, hệ thống tự động chạy:
- •SAST: Scan code tĩnh tìm lỗ hổng.
- •Dependency Audit: Check CVE của thư viện (
cargo auditvới database offline). - •VirusTotal Check: Upload hash lên VirusTotal (từ vùng DMZ có mạng) để đảm bảo không bị nhận diện nhầm là malware.