Linux环境中Swagger API安全性保障
一 核心安全原则
二 认证与授权配置
securityDefinitions:
ApiKeyAuth:
type: apiKey
name: Authorization
in: header
paths:
/users:
get:
security:
- ApiKeyAuth: []
securityDefinitions:
BasicAuth:
type: basic
paths:
/users:
get:
security:
- BasicAuth: []
securityDefinitions:
OAuth2:
type: oauth2
flow: accessCode
authorizationUrl: https://your-auth-server/oauth/authorize
tokenUrl: https://your-auth-server/oauth/token
scopes:
read: Grants read access
write: Grants write access
paths:
/users:
get:
security:
- OAuth2: [read]
securityDefinitions:
openid:
type: openid-connect
authorizationUrl: https://your-idp/authorize
tokenUrl: https://your-idp/token
scopes:
email: Access to the user's email
三 网络与进程隔离
location /api-docs/ {
auth_basic "Restricted Docs";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 生成密码文件:sudo htpasswd -c /etc/nginx/.htpasswd username
四 运行时防护与运维
五 快速检查清单
| 检查项 | 关键动作 |
|---|---|
| 环境隔离 | 生产禁用或强认证访问 Swagger UI 与规范端点 |
| 传输加密 | 全站 HTTPS/TLS,证书有效且自动续期 |
| 认证授权 | 启用 OAuth 2.0/JWT/API Key/Basic,路径级安全策略 |
| 访问控制 | IP 白名单、登录口令、RBAC/ACL 精细化授权 |
| 文档内容 | 不泄露密钥/数据库凭证,仅展示必要信息 |
| 网络隔离 | 反向代理统一入口,iptables/firewalld 限制来源 |
| 日志监控 | 请求/错误日志集中,异常行为告警 |
| 依赖与补丁 | 系统与依赖及时更新,组件最小化 |
| 安全测试 | 定期审计与渗透测试,闭环修复漏洞 |