DevOps 22/09/2026 6 phút

Bảo mật container: vì sao container mặc định chạy root, và ba lớp phòng thủ giảm rủi ro

Mặc định container chạy dưới quyền root — kẻ khai thác được app là có root trong container. Bài này đo thật ba lớp phòng thủ: --user chạy non-root (ghi /etc bị Permission denied), --cap-drop ALL bỏ quyền đặc quyền (root cũng không chown được), và --read-only khoá rootfs (không ghi được binary). Phòng thủ theo lớp để một container bị chiếm không thành thảm hoạ.

Lập trình 22/09/2026 11 phút

Secret trong tiến trình đo thật: os.Unsetenv không xoá được /proc/pid/environ nhưng chặn được tiến trình con, log %+v và docker inspect lộ nguyên văn, core dump 118 MB giữ mọi bản sao trừ []byte đã zero, 0400 và tmpfs không cản root

Một binary Go cầm secret qua env, file 0400, tmpfs và argv, chạy hai chế độ rồi đi tìm nó ở chín chỗ. Log %+v in nguyên mật khẩu, kiểu Redacted in [REDACTED]. /proc/pid/environ vẫn giữ ENV_SECRET sau os.Unsetenv, nhưng tiến trình con không còn thấy. Quét /proc/pid/mem: 5 bản sao ở chế độ xấu, 2 ở chế độ tốt. Core dump 118 MB chứa env, mount, argv và bản file cũ nếu không zero, 0 nếu đã zero; ulimit -c 0 thì không có core. uid 65534 bị từ chối đọc file 0400, root đọc bình thường. docker inspect và docker top từ host lộ -e và argv. Watcher mtime tải lại secret sau 400 đến 467 ms, SIGHUP tức thì.

DevOps 01/09/2026 9 phút

python:3.12 có 2.889 lỗ hổng, bản alpine cùng Python đó có 25 — ít hơn 115 lần mà không sửa một dòng mã; và đổi ảnh trên cùng một thẻ làm chữ ký biến mất sạch

Pod Security Standards kiểm soát pod LÀM GÌ; bài này lùi một bước, kiểm soát cái NẰM TRONG pod. Quét sáu ảnh: python:3.12 Debian 2.889 lỗ hổng so với python:3.12-alpine chạy cùng Python chỉ 25 — chênh 115 lần chỉ vì mọi thứ đi kèm. Và phép đo quan trọng nhất: chữ ký gắn với digest chứ không với thẻ, nên đổi ruột ảnh dưới cùng một thẻ v1 làm chữ ký mất hoàn toàn. Dùng digest, không dùng thẻ.

DevOps 01/09/2026 8 phút

Cùng một ứng dụng: Compose khởi động 0,9 giây, Kubernetes 1,2 giây — và Kubernetes trần trụi vẫn mất yêu cầu khi cập nhật y hệt Compose

Câu hỏi 'Kubernetes hay chỉ Docker Compose' thường được trả lời bằng niềm tin. Dựng cùng một ứng dụng hai container bằng cả hai rồi đo song song: bốn chỉ số đầu gần hoà (K8s không chậm hơn, không tốn RAM container hơn), nhưng K8s mang 743 MB hạ tầng cố định. Khác biệt thật ở cập nhật: K8s một bản không probe mất yêu cầu y như Compose; chỉ nhiều bản + readinessProbe + preStop mới cho 0 lỗi. Kubernetes không tặng uptime, nó tặng cơ chế.