当前位置: 首页 > news >正文

Kubernetes中部署Dependency-Track 并对接 EAuth OIDC 认证

Dependency-Track 简介

Dependency-Track 是 OWASP 的持续 SBOM 分析平台,它不是一次性扫描工具,而是“软件供应链风险持续治理平台”,核心能力是:

  1. 接收 CycloneDX SBOM(来自构建流程或供应商)。
  2. 持续分析组件漏洞、许可证和策略风险。
  3. 通过通知与集成,把风险结果推送到研发与安全流程。

易认证(EAuth)介绍

易认证(EAuth)是一款开源的企业级的OIDC认证平台,使用golang+react(ant design pro框架)开发的,提供多种认证方式,包括人脸识别、OpenID Connect(OIDC)、Web身份认证等,支持多因素认证(MFA), 灵活的令牌(Token)生成设置,可以实现不同应用间的一账通,能为企业提供精细化的认证管理,帮助企业快速完成认证流程,提高认证效率。

开源地址

https://github.com/efucloud/eauth

OIDC认证能力支持

Dependency-Track支持使用第三方OIDC认证,同时能够通过令牌中的groups信息实现Dependency-Track中不同项目的权限控制,这样能够简化Dependency-Track对用户的管理

Dependency-Track部署

本文通过kube-keeper来部署,首先通过kube-keeper创建两个命名空间,一个为dtrack用于部署dependency-track,另一个为postgres用于部署数据库postgres

  1. eauth中应用创建dependency-track应用,其中的回调地址为https://dtrack.efucloud.com//static/oidc-callback.html
  2. 如果使用集群外的数据库则不需要创建命名空间postgres和部署postgres服务
---# Source: dependency-track/templates/serviceaccount.yamlapiVersion:v1kind:ServiceAccountmetadata:name:dtrack-dependency-tracknamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackannotations:{}automountServiceAccountToken:false---# Source: custom/database-secret.yamlapiVersion:v1kind:Secretmetadata:name:dtrack-database-secretnamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackapp.kubernetes.io/instance:dtrackapp.kubernetes.io/component:api-servertype:OpaquestringData:ALPINE_DATABASE_USERNAME:postgresALPINE_DATABASE_PASSWORD:EfuCloud@pwd---# Source: dependency-track/templates/api-server/service.yamlapiVersion:v1kind:Servicemetadata:name:dtrack-dependency-track-api-servernamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackapp.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-api-serverapp.kubernetes.io/component:api-serverapp.kubernetes.io/version:4.14.0spec:type:"ClusterIP"ports:-name:webport:8080targetPort:webselector:app.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-api-serverapp.kubernetes.io/component:api-server---# Source: dependency-track/templates/frontend/service.yamlapiVersion:v1kind:Servicemetadata:name:dtrack-dependency-track-frontendnamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackapp.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-frontendapp.kubernetes.io/component:frontendapp.kubernetes.io/version:4.14.0spec:type:"ClusterIP"ports:-name:webport:8080targetPort:webselector:app.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-frontendapp.kubernetes.io/component:frontend---# Source: dependency-track/templates/api-server/deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:dtrack-dependency-track-api-servernamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackapp.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-api-serverapp.kubernetes.io/component:api-serverapp.kubernetes.io/version:4.14.0spec:replicas:1selector:matchLabels:app.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-api-serverapp.kubernetes.io/component:api-servertemplate:metadata:labels:app.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-api-serverapp.kubernetes.io/component:api-serverannotations:prometheus.io/scrape:"true"prometheus.io/path:/metricsspec:enableServiceLinks:trueinitContainers:serviceAccountName:dtrack-dependency-tracksecurityContext:fsGroup:1000containers:-name:dependency-track-api-serverimage:registry.cn-shenzhen.aliyuncs.com/efucloud-public/dependencytrack-apiserver:4.14.0imagePullPolicy:IfNotPresentsecurityContext:allowPrivilegeEscalation:falsecapabilities:drop:-ALLreadOnlyRootFilesystem:truerunAsNonRoot:trueseccompProfile:type:RuntimeDefaultresources:limits:memory:5Girequests:cpu:"1"memory:1Gienv:-name:ALPINE_METRICS_ENABLEDvalue:"true"-name:ALPINE_DATABASE_MODEvalue:"external"-name:ALPINE_DATABASE_URLvalue:"jdbc:postgresql://postgres.postgres.svc.cluster.local:5432/dependencytrack"-name:ALPINE_DATABASE_DRIVERvalue:"org.postgresql.Driver"-name:ALPINE_DATABASE_USERNAMEvalueFrom:secretKeyRef:name:dtrack-database-secretkey:ALPINE_DATABASE_USERNAME-name:ALPINE_DATABASE_PASSWORDvalueFrom:secretKeyRef:name:dtrack-database-secretkey:ALPINE_DATABASE_PASSWORD# OIDC configuration placeholders (fill values as needed)-name:ALPINE_OIDC_ENABLEDvalue:"true"-name:ALPINE_OIDC_CLIENT_IDvalue:"rot7giyv32yy5kkfpmemvlu56"-name:ALPINE_OIDC_ISSUERvalue:"https://eauth-demo.efucloud.com"-name:ALPINE_OIDC_USERNAME_CLAIMvalue:"username"-name:ALPINE_OIDC_USER_PROVISIONINGvalue:"true"-name:ALPINE_OIDC_TEAM_SYNCHRONIZATIONvalue:"false"-name:ALPINE_OIDC_TEAMS_CLAIMvalue:"groups"-name:ALPINE_OIDC_TEAMS_DEFAULTvalue:"Administrators"ports:-name:webcontainerPort:8080protocol:TCPvolumeMounts:-name:datamountPath:/data-name:tmpmountPath:/tmpstartupProbe:httpGet:scheme:HTTPport:webpath:/health/startedfailureThreshold:30initialDelaySeconds:10periodSeconds:10successThreshold:1timeoutSeconds:5livenessProbe:httpGet:scheme:HTTPport:webpath:/health/livefailureThreshold:3initialDelaySeconds:10periodSeconds:15successThreshold:1timeoutSeconds:5readinessProbe:httpGet:scheme:HTTPport:webpath:/health/readyfailureThreshold:3initialDelaySeconds:10periodSeconds:15successThreshold:1timeoutSeconds:5volumes:-name:dataemptyDir:{}-name:tmpemptyDir:{}---# Source: dependency-track/templates/frontend/deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:dtrack-dependency-track-frontendnamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackapp.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-frontendapp.kubernetes.io/component:frontendapp.kubernetes.io/version:4.14.0spec:replicas:1selector:matchLabels:app.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-frontendapp.kubernetes.io/component:frontendtemplate:metadata:labels:app.kubernetes.io/instance:dtrackapp.kubernetes.io/name:dependency-track-frontendapp.kubernetes.io/component:frontendspec:enableServiceLinks:trueinitContainers:serviceAccountName:dtrack-dependency-tracksecurityContext:fsGroup:1000containers:-name:dependency-track-frontendimage:registry.cn-shenzhen.aliyuncs.com/efucloud-public/dependencytrack-frontend:4.14.0imagePullPolicy:IfNotPresentsecurityContext:allowPrivilegeEscalation:falsecapabilities:drop:-ALLreadOnlyRootFilesystem:falserunAsNonRoot:trueseccompProfile:type:RuntimeDefaultresources:limits:memory:128Mirequests:cpu:150mmemory:64Mienv:-name:API_BASE_URLvalue:""# OIDC configuration placeholders (fill values as needed)-name:OIDC_ISSUERvalue:"https://eauth-demo.efucloud.com"-name:OIDC_CLIENT_IDvalue:"rot7giyv32yy5kkfpmemvlu56"-name:OIDC_SCOPEvalue:"openid profile email"-name:OIDC_FLOWvalue:""-name:OIDC_LOGIN_BUTTON_TEXTvalue:""ports:-name:webcontainerPort:8080protocol:TCPvolumeMounts:-name:tmpmountPath:/tmplivenessProbe:httpGet:scheme:HTTPport:webpath:/failureThreshold:3initialDelaySeconds:5periodSeconds:15successThreshold:1timeoutSeconds:5readinessProbe:httpGet:scheme:HTTPport:webpath:/failureThreshold:3initialDelaySeconds:5periodSeconds:15successThreshold:1timeoutSeconds:5volumes:-name:tmpemptyDir:{}---# Source: custom/ingress.yamlapiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:dtrack-dependency-tracknamespace:dtracklabels:app.kubernetes.io/part-of:dependency-trackapp.kubernetes.io/instance:dtrackspec:ingressClassName:nginxtls:-hosts:-dtrack.efucloud.comsecretName:dtrack-tlsrules:-host:dtrack.efucloud.comhttp:paths:-path:/apipathType:Prefixbackend:service:name:dtrack-dependency-track-api-serverport:number:8080-path:/pathType:Prefixbackend:service:name:dtrack-dependency-track-frontendport:number:8080

Dependency-Track访问

  1. 浏览器打开https://dtrack.efucloud.com/ ,点击更多的选择,先使用admin/admin登录,若直接使用OIDC登录则会出现下图的情形。

配置完成后,使用oidc登录后的页面如下


配置完成后,使用oidc登录后的页面如下

http://www.jsqmd.com/news/1380850/

相关文章:

  • 成都合伙纠纷律师风险代理:投资款追回怎么收费?陈键律师解析“刑民双轨”办案模式 - 四川九匡律师事务所
  • MySQL数据库实战入门:从安装部署到核心原理与性能优化
  • 2026年国内杨木扣槽拼板机厂家 解生产痛点选适配品牌 - 甄选测评官
  • C++类型推导:auto与decltype的核心机制与实战应用解析
  • 163、LLC谐振变换器的降额设计
  • 2026年**莱姆石质感砖、洞石质感砖、砂岩质感砖品牌|巴里诺BALNO领衔质感赛道 - 米諾
  • 零基础 | AI应用记忆管理:从短期到长期的完整实践指南
  • 2026年余姚市GEO服务商代理加盟怎么选?本地靠谱推荐与城市合伙人启动指南 - 科技快讯
  • Python进阶 - re模块的match方法 从字符串开头匹配
  • 计算机毕业设计之个人博客系统设计与实现
  • 新疆维吾尔自治区武校招生需要什么条件|和田地区、伊犁哈萨克自治州、塔城地区文武学校入 - 圣龙武术朱老师
  • Playwright自动化测试与数据抓取:从安装到实战的完整指南
  • 2026年山东省济宁、聊城、菏泽三城瓷砖**,贝索斯瓷砖实力领跑本地家装 - GrowthUME
  • mongos信息 - 小镇
  • 成都有实力的网站建设:拒绝套路,只做能帮企业真正赚钱的官网,这才是成都做网站公司的良心之选
  • 从猴子吃桃问题深入理解逆向递归与数学建模
  • 从“使用”到“编排”:Claude Code 进阶实战思路
  • 2026年嘉兴秀洲区GEO服务商代理加盟指南:本地靠谱推荐与城市合伙人模式全解析 - 科技快讯
  • Python编程能力跃迁:从NOJ作业到实战项目的解题思维与技能串联
  • Ubuntu 20.04搭建ARM交叉编译环境:从工具链配置到实战应用
  • 2026德阳市数码回收哪家靠谱?正规渠道避坑指南 - 新闻快传
  • 不是 AI 替代人,而是分工变了:一次真实项目的提效与收口复盘
  • UE4游戏安全实战:从线程发包到HOOK加密解密的逆向分析
  • InnoExtractor Plus
  • 2026年全域投流公司**:广东金袋鼠传媒科技有限公司实力领衔 - GrowthUME
  • 容器化部署Palworld专用服务器的技术实践与架构解析
  • 5分钟快速入门:如何使用RecastNavigation构建专业的游戏导航系统
  • 音乐扒谱不再困难:三步解锁专业级前端扒谱工具noteDigger
  • AI应用开发四大基石:RAG、Agent、MCP与Skill深度解析与实战架构
  • 【ORC】布隆过滤器的误判率如何设置?它对查询性能和存储开销的影响如何权衡?