TopDev AI Robot TopDev
#DevOps & Cloud#Bảo mật & Tối ưu tải

Cách viết Dockerfile bảo mật: Chạy non-root user, multi-stage và quét vulnerability với Trivy

Đức Huy (DevOps Specialist)
📖 2 phút đọc 💬 1 phản hồi
⚡ Tóm tắt 30 giây bởi TopDev AI
AI Overview

Hiểm họa khi chạy Container bằng quyền Root Mặc định, nếu bạn không khai báo chỉ thị USER trong Dockerfile, tiến trình ứng dụng bên trong container sẽ chạy với đặc quyền tối cao: root UID 0. Nếu ứng …

☰ Mục lục bài viết (4 phần) Mở / Đóng mục lục

Hiểm họa khi chạy Container bằng quyền Root#

Mặc định, nếu bạn không khai báo chỉ thị USER trong Dockerfile, tiến trình ứng dụng bên trong container sẽ chạy với đặc quyền tối cao: root (UID 0).

Nếu ứng dụng web của bạn có lỗ hổng thực thi mã từ xa (RCE) hoặc hacker thoát được khỏi sandbox của container (Container Escape), chúng sẽ có ngay quyền root trên chính máy chủ vật lý của bạn!

Dưới đây là checklist 5 bước bắt buộc để đóng gói Dockerfile an toàn chuẩn CIS Benchmark.

Checklist Dockerfile bảo mật#

DOCKERFILE
# 1. Chọn base image cụ thể và đáng tin cậy (tránh dùng tag :latest)
FROM node:20.18-alpine3.20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage Runtime
FROM node:20.18-alpine3.20 AS runner
WORKDIR /app

# 2. Cài đặt các bản vá bảo mật mới nhất của OS
RUN apk update && apk upgrade && rm -rf /var/cache/apk/*

# 3. Tạo user và group riêng biệt không có quyền root
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# 4. Phân quyền thư mục chính xác
COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules

# 5. CHUYỂN SANG USER BẢO MẬT TRƯỚC KHI CHẠY!
USER appuser

EXPOSE 3000
CMD ["node", "dist/main.js"]

Quét lỗ hổng tự động bằng Trivy trong CI/CD#

Tích hợp công cụ quét bảo mật mã nguồn mở Trivy vào GitHub Actions:

BASH
# Quét image và chặn build nếu có lỗ hổng nghiêm trọng (CRITICAL)
trivy image --severity HIGH,CRITICAL --exit-code 1 your-app:latest

Góc thảo luận#

Image production của bên bạn đã chuyển sang chạy user phi-root chưa? Bạn có đang bật công cụ quét lỗ hổng bảo mật nào trong CI/CD pipeline không?


Xem thêm nội dung liên quan:

Chia sẻ thảo luận này:

Thảo luận

1 phản hồi

Ý kiến từ cộng đồng kỹ sư TopDev
💬

Tham gia thảo luận

Cộng đồng mở · Đăng nhập 1-chạm qua Google
  1. Việt Anh (Cloud Architect)
    #1

    Dùng Trivy kết hợp với Alpine base image là bộ đôi hoàn hảo. Hầu như loại bỏ sạch sẽ các CVE linh tinh của hệ điều hành, audit bảo mật lúc nào cũng đạt điểm A+!

Bài liên quan trong #DevOps & Cloud

1
TopDev AI Companion
AI
✓ Đã sao chép link