制品管理:Nexus Harbor安全扫描架构
制品管理:Nexus Harbor安全扫描架构
制品管理架构概览
制品管理是DevOps基础设施的核心组件,负责存储、版本化和分发构建产出物。完善的制品管理确保可追溯性、安全性和合规性。
┌─────────────────────────────────────────────────┐
│ 制品管理平台 │
├─────────────┬─────────────┬─────────────────────┤
│ Nexus │ Harbor │ Artifactory │
│ 通用制品库 │ Docker仓库 │ 企业级制品库 │
│ Maven/npm │ Helm Chart │ 多格式支持 │
│ PyPI/NuGet │ 镜像签名 │ 镜像联邦 │
└──────┬──────┴──────┬──────┴──────────┬──────────┘
│ │ │
▼ ▼ ▼
安全扫描 访问控制 审计日志
Trivy/CVE RBAC/LDAP 审计追踪
Nexus Repository配置
Maven仓库配置
# docker-compose.yml
version: '3'
services:
nexus:
image: sonatype/nexus3:latest
ports:
- "8081:8081"
volumes:
- nexus-data:/nexus-data
environment:
INSTALL4J_ADD_VM_PARAMS: "-Xmx2g -XX:MaxDirectMemorySize=2g"
restart: unless-stopped
volumes:
nexus-data:
Nexus API操作
# 上传制品到Maven仓库
mvn deploy \
-Dnexus.url=http://nexus:8081/repository/maven-releases/
# 查询组件信息
curl -u admin:admin123 \
"http://nexus:8081/service/rest/v1/search?repository=maven-releases&name=myapp"
# 清理过期组件
curl -X POST -u admin:admin123 \
-d '{"repository":"maven-releases","keepMinimum":5}' \
"http://nexus:8081/service/rest/v1/tasks/cleanup"
Harbor镜像仓库
Harbor架构
Harbor架构:
├── Portal(Web UI)
├── Core Service(核心服务)
│ ├── Registry(镜像存储)
│ ├── Token Service(认证)
│ └── Job Service(异步任务)
├── Database(PostgreSQL)
├── Redis(缓存)
└── Storage(S3/OSS/本地)
Harbor配置
# harbor.yml
hostname: harbor.example.com
http:
port: 80
https:
port: 443
certificate: /data/cert/server.crt
private_key: /data/cert/server.key
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
storage:
s3:
accesskey: AKIAIOSFODNN7EXAMPLE
secretkey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
region: us-east-1
bucket: harbor-registry
安全扫描集成
# GitLab CI集成Trivy扫描
trivy-scan:
stage: security-scan
image:
name: aquasec/trivy:latest
entrypoint: [""]
script:
- trivy image --exit-code 1 --severity HIGH,CRITICAL
--format json --output trivy-report.json
harbor.example.com/project/myapp:${CI_COMMIT_SHA}
artifacts:
paths:
- trivy-report.json
reports:
container_scanning: trivy-report.json
最佳实践
- 不可变制品:构建一次,分发到各环境,避免重复构建
- 版本标签策略:语义化版本 + Git SHA,确保可追溯
- 漏洞阻断:将安全扫描作为发布门禁,阻止高危漏洞制品
- 垃圾回收:定期清理未引用的层和过期镜像