Bỏ qua để đến nội dung

Thu thập và review bằng chứng bảo mật

Giữ .nklattice-apps.json làm tập app/profile chính xác. Profile bảo mật bổ sung .nklattice-security.json với schemaVersion: 1 và mục cho từng app đã review: appPath, origins (alias an toàn và URL), routes, endpoints, authzMatrix, trustedOrigins, features tường minh và productionBuildRoots. Tự phát hiện không đồng nghĩa đã duyệt.

Route có ID ổn định, origin alias, localPath tương đối từ gốc, auth mode, renderMode và behavioral test ID. Endpoint có cùng danh tính/auth và các method mutation POST/PUT/PATCH/DELETE tường minh. Pattern mutation GET là candidate cần review, không tự thành method được duyệt. Ô phân quyền gắn persona alias, target ID, action và kết quả được phép/bị từ chối. Feature gồm webhook, ws, serviceworker, upload, embedded; cả giá trị false cũng cần review. Build root phải nằm trong app. Không đưa credential, danh tính persona thật hoặc URL khách hàng riêng tư vào ví dụ public.

Ví dụ khai báo tối thiểu này dành cho app static độc lập; thay origin và review từng field theo app thật. Nó không chứng minh đã build, gửi request runtime hay chạy behavioral test. App SSR/ISR và endpoint xác thực cần mode, target, persona và test ID thực tế riêng.

{
"schemaVersion": 1,
"apps": [{
"appPath": ".",
"origins": [{ "alias": "public", "url": "https://example.test" }],
"routes": [{ "id": "home", "originAlias": "public", "localPath": "/", "auth": "none", "renderMode": "static", "behavioralTestIds": [] }],
"endpoints": [],
"authzMatrix": [],
"trustedOrigins": [],
"features": { "webhook": false, "ws": false, "serviceworker": false, "upload": false, "embedded": false },
"productionBuildRoots": ["dist"]
}]
}

Ví dụ dưới dùng CLI public 0.11.1 đã cài. Review đúng gói và inventory trước khi chạy:

Terminal window
pnpm exec lattice security inspect . --format json
pnpm exec lattice governance run . --security-profile enterprise-web \
--security-manifest .nklattice-security.json --execution source \
--inventory .nklattice-apps.json --expect-apps 1 \
--evidence /tmp/lattice-security-evidence.json

Review từng gợi ý từ security inspect; lệnh chỉ đọc candidate, không chạy config repository và không ghi assessment hoặc manifest. Lấy JSON Schema đóng gói làm chuẩn định dạng thay vì tự thêm field. Dùng --policy cho file schema3 đã review thay cho --security-profile. Mặc định schema2 và governance check chỉ kiểm dependency vẫn được giữ. Bằng chứng gắn với SHA policy chính xác, không chỉ nhãn phiên bản.

Lớp Có thể xác lập Phần ngoài phạm vi
source Sự kiện AST/data-flow được hỗ trợ, config khai báo, lockfile và kết quả scanner theo đầu vào đã ràng buộc. Build/test thực thi, header CDN, toàn bộ luồng động/liên tệp.
build Output production trong root đã review và danh tính chính xác; phân tích bundle/script được hỗ trợ. Byte đó đã deploy hoặc được phục vụ cho mọi người dùng.
runtime Quan sát response/header/body có giới hạn cho route đã khai báo và deployment expectation do operator xác lập. Nguồn nonce CSPRNG, mọi biến thể cache, TLS production từ HTTP loopback.
behavioral Kịch bản request, phân quyền và browser được phép/bị từ chối trên fixture đã khai báo. Route/persona/device chưa test hoặc kiểm thử xâm nhập tổng quát.
operational Receipt nguồn gốc hoặc vận hành thủ công đúng phạm vi, thẩm quyền và độ mới. Backup/SLA provider hay chứng nhận toàn hệ thống khi thiếu bằng chứng độc lập thật.

Độ mới mặc định source/build/runtime/behavioral là 24 giờ; operational là 720 giờ. Release readiness cụ thể có thể chặt hơn. Commit, input, policy, ruleset, build, deployment, scope và timestamp phải khớp. Artifact runtime lưu sẵn cần đúng byte build và expectation --deployment-id hoặc --deployment-map theo app do operator xác lập. Collector giữ lỗi chín miền mới; import không thay chúng bằng kết quả đạt cũ. Import JSON không tạo thẩm quyền runner, artifact trong tiến trình hoặc verified-CI.

--execution source không import hay chạy module/config/test của repository; công cụ tĩnh đã duyệt có thể chạy trong ranh giới riêng. trusted và isolated không tự duyệt executable hay tạo sandbox. Tích hợp Node do operator quản lý tool được pin/duyệt, credential và executor an toàn; thiếu bằng chứng thực thi vẫn incomplete. Chạy mã ứng dụng không tin cậy tách khỏi credential ingestion, deployment và npm. Ngữ cảnh vận hành cục bộ không phải wire contract chung hay thẩm quyền do client cấp.

Control tổng hợp native sast:semgrep và secrets:gitleaks giữ namespace rule của scanner. Suy luận source và pattern độ tin cậy thấp là finding candidate cần review. Blocker confirmed phải đáp ứng severity/confidence và contract bằng chứng của control. Scanner không có, chạy dở hoặc lỗi mà trả không finding không có nghĩa không rủi ro. Chẩn đoán thô giữ cục bộ; upload chỉ nhận trạng thái/reason code trong allowlist và finding đã che giá trị. Không mặc định công bố HTML thô, secret, source excerpt hoặc danh tính riêng tư.

Độ phủ có kiểu đơn vị: file không bù route; một route không bù endpoint thiếu. incomplete được ưu tiên khi thiếu proof bắt buộc dù có failure confirmed. not-applicable cần loại trừ đã review và có bằng chứng; feature chưa rõ không là N/A. Đo đầy đủ bằng không là 0, chưa đo được là null; tập control rỗng không đạt 100. CLI policy3 vẫn trả 7 nếu có blocker confirmed dù tổng trạng thái incomplete; chỉ thiếu proof thì trả 3.

  1. Xác minh inventory, surface, policy và danh tính bằng chứng; sửa route canonical thiếu mà không tăng lưu lượng.
  2. Ưu tiên secret/advisory confirmed và failure độ tin cậy cao; rotate credential bị lộ trước khi dọn code.
  3. Áp dụng khắc phục theo render/auth, chạy lại lớp liên quan và gate governance đầy đủ.
  4. So sánh đúng cohort. Finding chỉ fixed khi scan đầy đủ cùng phạm vi chứng minh đã hết; độ phủ thiếu hoặc mâu thuẫn giữ finding open. Xuất hiện lại là reopened. Accepted risk vẫn hiện và cần thẩm quyền khớp hiện tại.

security verify-report kiểm cấu trúc và ngữ nghĩa model được cung cấp tại thời điểm báo cáo bằng policy, inventory, manifest gốc. Nó luôn để source execution và production ở trạng thái chưa xác minh; không phải scan mới. Xem lệnh CLI và độ tin cậy báo cáo.

Quan sát runtime và hành vi ghi phạm vi đã đo bằng authScope: anonymous xác định request không gửi credential; personaAliases chỉ liệt kê actor fixture đã duyệt và thực sự được quan sát. Nhiều actor giữ phạm vi tổng hợp; request ẩn danh không bị gán người dùng giả. Dạng cũ authPersonaAlias cho một actor vẫn đọc được nhưng không đi kèm authScope. Bí danh không chứa credential và không cấp quyền upload/workload. Vẫn bắt buộc định danh build, độ mới và thực thi tin cậy; quan sát fixture local vẫn chỉ là bằng chứng fixture local.