禁用 Swagger API 资源浏览器

本指南介绍如何在 Harbor Portal 中禁用 Swagger 规范的暴露,以满足高安全性环境的需求。
当安全扫描工具或合规基线将 Swagger/OpenAPI 暴露视为风险时,通常需要进行此操作。
禁用后,/swagger.json/swagger.yaml 路径将返回 404,但这不会移除 Harbor UI 中的 API Explorer 菜单入口。

前提条件

  • 由 Harbor CE Operator 管理的运行中 Harbor 实例
  • 具备更新目标命名空间中 Harbor 自定义资源的权限
  • 可访问 Harbor 域名以便变更后验证

概览

Harbor 实例中的关键配置

  • Helm 值spec.helmValues.portal.swagger.enabled

流程概览

步骤操作说明
1更新 Harbor Helm 值在 Harbor 实例的 spec.helmValues 中将 portal.swagger.enabled 设置为 false
2应用配置应用 Harbor CR 变更并等待 Portal 组件完成滚动更新
3验证生效范围确认 Swagger 规范端点返回 404,并验证预期的无影响情况

配置步骤

步骤 1:更新 Harbor Helm 值

更新 Harbor 实例配置:

spec:
  helmValues:
    portal:
      swagger:
        enabled: false

步骤 2:应用配置

在集群中应用 Harbor 自定义资源更新。
应用后,等待 Harbor Portal 组件完成滚动更新。

步骤 3:验证生效范围

检查 Swagger 规范端点:

curl -I https://<harbor-domain>/swagger.json
curl -I https://<harbor-domain>/swagger.yaml

预期结果:两个请求均返回 404 Not Found

总结

通过设置 spec.helmValues.portal.swagger.enabled=false,您可以阻止 Harbor Portal 暴露 Swagger 规范,同时保持 Harbor API 服务可用于正常集成。

常见问题

此设置会禁用 Harbor API 吗?

不会。该设置仅影响 Portal 中 Swagger 规范的暴露(/swagger.json/swagger.yaml)。
Harbor 的业务 API(如 /api/v2.0/**)仍然可用。

禁用 Swagger 后,为什么 API Explorer 菜单仍然可见?

该设置不会移除 UI 菜单入口或路由。
它仅使 Swagger 规范端点返回 404,因此资源浏览器页面无法加载 API 规范。

此设置在 ingress 模式下有效吗?

有效。该设置应用于 Portal 组件,无论暴露方式是 ingressnodePortclusterIPloadBalancer 还是 route,均生效。