Cấu hình Bảo mật Doanh nghiệp
Dự án này cho phép bạn tạo khung (scaffold) cho các vi dịch vụ Node.js với cấu hình bảo mật doanh nghiệp tích hợp sẵn. Tính năng này được thiết kế để đáp ứng các tiêu chuẩn bảo mật nghiêm ngặt của các công ty công nghệ hàng đầu.
Các tính năng đi kèm
Khi bạn chọn "Yes" cho Enterprise Security Hardening (Bảo mật doanh nghiệp) trong quá trình khởi tạo dự án, các công cụ và cấu hình sau sẽ được thêm vào:
1. Snyk (SCA - Software Composition Analysis)
- Công cụ: Snyk
- Mục đích: Tự động quét thư mục
node_modulescủa bạn để phát hiện các lỗ hổng đã biết trong các phụ thuộc của bên thứ ba. - Tích hợp:
- Một workflow GitHub Actions chuyên dụng (
.github/workflows/security.yml). - Các bước quét tự động trên GitLab CI và Jenkins.
- Fail-safe: Pipeline CI sẽ thất bại nếu phát hiện lỗ hổng mức độ "High" (Cao) hoặc "Critical" (Nghiêm trọng).
- Một workflow GitHub Actions chuyên dụng (
2. SonarCloud / SonarQube (SAST - Static Application Security Testing)
- Công cụ: SonarCloud
- Mục đích: Phân tích tĩnh chuyên sâu để phát hiện các mã xấu (code smells), lỗi hệ thống và các điểm nóng bảo mật (ví dụ: lỗi SQL Injection, XSS).
- Tích hợp:
- Tệp cấu hình sẵn
sonar-project.properties. - Thực thi Quality Gates (Cổng chất lượng) trong các pipeline CI/CD.
- Tệp cấu hình sẵn
3. Husky (Cổng kiểm soát chất lượng Pre-commit)
- Công cụ: Husky & lint-staged
- Mục đích: Tự động chạy kiểm tra lint và định dạng trên các tệp đã thay đổi trước mỗi lần commit để đảm bảo chất lượng mã nguồn.
- Tích hợp:
- Tự động khởi tạo trong quá trình
npm install(hoặcpnpm/yarn). - Ngăn chặn mã nguồn chưa đạt chuẩn được commit vào kho lưu trữ.
- Tự động khởi tạo trong quá trình
Để kích hoạt đầy đủ các tính năng này trong dự án đã tạo của bạn, hãy làm theo các bước chi tiết sau để lấy mã thông báo xác thực (authentication tokens) và cấu hình môi trường CI/CD của bạn.
1. Tích hợp Snyk (SCA)
Snyk giám sát các phụ thuộc của bạn để phát hiện các lỗ hổng bảo mật. Cách thiết lập:
- Tạo tài khoản: Đăng ký một tài khoản miễn phí tại Snyk.io.
- Lấy Auth Token của bạn:
- Nhấp vào ảnh đại diện profile của bạn (góc dưới bên trái) -> Account Settings.
- Tìm đến mục Auth Token.
- Nhấp Click to show và sao chép mã thông báo của bạn.
- Ngoài ra, đối với mục đích sử dụng của Tổ chức, đi tới Settings -> Service Accounts để tạo một mã không mang tính cá nhân.
- Cấu hình GitHub Secrets:
- Truy cập kho lưu trữ GitHub của bạn -> Settings -> Secrets and variables -> Actions.
- Nhấp vào New repository secret.
- Tên:
SNYK_TOKEN - Giá trị: (Dán mã thông báo của bạn vào đây).
2. Tích hợp SonarCloud (SAST)
SonarCloud thực hiện phân tích tĩnh chuyên sâu và theo dõi chất lượng mã nguồn.
- Đăng ký: Đăng nhập vào SonarCloud.io bằng tài khoản GitHub của bạn.
- Tạo/Nhập dự án:
QUAN TRỌNG
Bạn phải nhập dự án của mình thủ công trên giao diện SonarCloud UI trước khi pipeline CI/CD có thể quét nó.
- Nhấp vào biểu tượng "+" ở góc trên cùng bên phải -> Analyze new project.
- Chọn tổ chức GitHub của bạn và nhập kho lưu trữ cụ thể.
- Cấu hình phương pháp phân tích:
- Sau khi nhập xong, đi tới Administration -> Analysis Method.
- Tắt tùy chọn "SonarCloud Automatic Analysis".
- Chọn GitHub Actions làm phương pháp phân tích chính của bạn. Điều này sẽ cung cấp cho bạn các giá trị cấu hình
sonar-project.propertieschính xác.
- Tạo mã thông báo (Token):
- Nhấp vào biểu tượng profile của bạn -> My Account -> Security.
- Tạo một mã thông báo mới và sao chép nó.
- Lấy thông tin Dự án & Tổ chức của bạn:
- Trên bảng điều khiển dự án SonarCloud của bạn, tìm Project Key và Organization Key ở góc dưới cùng bên phải của mục "Information".
- Lưu ý: Project Key thường có dạng
your-org_your-repo. - Cập nhật tệp local
sonar-project.propertiescủa bạn:sonar.projectKey=mã-project-key-chính-xác-từ-sonarcloudsonar.organization=mã-organization-key-chính-xác-từ-sonarcloud
- Cấu hình GitHub Secrets:
- Thêm secret
SONAR_TOKEN: (Dán mã thông báo bạn vừa tạo). - Thêm secret
SONAR_HOST_URL:- Nếu sử dụng SonarCloud: Đặt giá trị là
https://sonarcloud.io. - Nếu sử dụng SonarQube tự lưu trữ (Self-hosted): Đặt giá trị là URL phiên bản của bạn (ví dụ:
http://ip-may-chu-cua-ban:9000).
- Nếu sử dụng SonarCloud: Đặt giá trị là
- Thêm secret
MẸO
Hầu hết người dùng nên sử dụng dịch vụ đám mây chính thức miễn phí của https://sonarcloud.io cho các dự án mã nguồn mở và dự án quy mô nhỏ!
3. Quét Container bằng Snyk
Ngoài việc quét các phụ thuộc, trình tạo còn bao gồm các kiểm tra Bảo mật Container để kiểm tra Dockerfile và hình ảnh cơ sở (base image) của bạn.
- Yêu cầu: Đảm bảo tệp
Dockerfilecó sẵn ở thư mục gốc. - CI/CD: Bước
security.yml(GitHub) hoặc bướcsecurity(GitLab/Jenkins) sẽ tự động build image của bạn và chạy lệnhsnyk container test. - Kiểm tra cục bộ:bash
docker build -t my-app . snyk container test my-app --file=Dockerfile --severity-threshold=high
4. Husky & Lint-Staged
QUAN TRỌNG
Bạn phải chạy lệnh git init trước khi chạy npm install (hoặc pnpm / yarn) để Husky có thể thiết lập các git hook một cách chính xác.
- Khởi tạo Git:
git init - Cài đặt phụ thuộc:
npm install(hoặcpnpm/yarn) (Lệnh này sẽ tự động kích hoạthusky install). - Sử dụng: Hãy thử commit một thay đổi! Husky sẽ tự động kích hoạt
lint-staged.
Khắc phục sự cố: Nếu bạn gặp lỗi dạng .husky/pre-commit: line 2: .husky/_/husky.sh: No such file, điều đó có nghĩa là Husky không được khởi tạo chính xác (thường do bỏ qua bước git init). Để khắc phục:
npx husky installpnpm husky installyarn husky install5. Chạy quét bảo mật cục bộ
Bạn có thể tự chạy kiểm tra bảo mật bất kỳ lúc nào bằng cách sử dụng:
npm run security:checkpnpm security:checkyarn security:checkLệnh này sẽ chạy tuần tự việc kiểm tra gói dependencies (audit check) và snyk test.