Docker 镜像漏洞扫描与加固指南

Trivy 是一款开源的容器镜像漏洞扫描工具,可检测操作系统包(Alpine/RHEL等)和语言依赖(Python/Java等)的安全风险。以下是完整工作流:


1. Trivy 安装与基础扫描
# 安装 Trivy(Mac/Linux)
brew install aquasecurity/trivy/trivy

# 扫描本地镜像(示例:nginx:latest)
trivy image nginx:latest

  • 输出解读
    • CRITICAL/HIGH:需立即修复的漏洞(如远程代码执行)
    • MEDIUM/LOW:建议修复的弱点(如信息泄露)
    • UNKNOWN:需人工验证

2. 漏洞修复与镜像加固

策略 1:更新基础镜像

# 原镜像(含漏洞)
FROM python:3.7-alpine

# 替换为更新版本(修复漏洞)
FROM python:3.11-alpine  # Alpine 3.18+ 包含安全补丁

策略 2:最小化攻击面

# 删除非必要组件
RUN apk del curl tar && \  
    rm -rf /var/cache/apk/*

策略 3:非特权用户运行

# 创建非root用户
RUN adduser -D appuser  
USER appuser  # 切换用户


3. 重新扫描验证修复
# 构建加固后的镜像
docker build -t secured-app .

# 验证修复效果
trivy image --severity CRITICAL,HIGH secured-app

  • 理想输出:No critical/high vulnerabilities found

4. 进阶实践
  • CI/CD 集成

    # GitLab CI 示例
    scan_image:
      stage: test
      script:
        - trivy image --exit-code 1 --severity CRITICAL my-app:${CI_COMMIT_SHA}
    

    • --exit-code 1:发现严重漏洞时中断流水线
  • 忽略误报(谨慎使用):

    trivy image --ignore-unfixed nginx:latest
    

关键原则

  • 定期扫描(建议每日)
  • 优先修复 $ \text{CVSS} \geq 7.0 $ 的漏洞
  • 使用官方签名镜像(避免 latest 标签)

通过 Trivy 扫描 + Dockerfile 加固,可显著降低容器运行时风险,符合 DevSecOps 最佳实践。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐