ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Backstage v1.2.0 发布要点解析:TechDocs 插件化、Kubernetes OIDC 认证与安全性升级

Backstage v1.2.0 发布要点解析:TechDocs 插件化、Kubernetes OIDC 认证与安全性升级 Backstage v1.2.0 发布要点解析TechDocs 插件化、Kubernetes OIDC 认证与安全性升级【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage本篇文章基于当前仓库中收录的官方发布说明docs/releases/v1.2.0.md系统梳理 Backstage v1.2.0 的核心亮点TechDocs Addon 框架正式 GA、三大新插件ADR、CodeScene、Gerrit 目录集成、Kubernetes 新增 OIDC 认证方式以及 ServerTokenManager 服务间认证令牌的安全增强。读完本文你将掌握本次版本升级的完整内容清单、关键配置项的写法以及部分功能在当前仓库源码中的落地实现。版本概览Backstage v1.2.0 是该项目在 2022 年 8 月左右发布的一个里程碑式版本。除了常规的缺陷修复与依赖升级之外这一版本呈现出几个显著特征TechDocs 文档中心的插件化体系走向成熟Addon 框架正式宣布 GAGeneral Availability生态集成进一步扩张新增 ADR、CodeScene 两个前端插件以及 Gerrit 目录后端模块安全基线被提高服务间认证令牌ServerTokenManager 签发的 token开始携带过期时间Kubernetes 插件迎来新的认证提供方支持直接使用用户已登录的 OIDC ID Token 访问集群。下文将按发布说明的章节逐一展开并结合当前仓库源码给出可验证的实现细节。TechDocsAddon 框架正式 GATechDocs 是 Backstage 内置的文档中心能力负责将 Markdown 技术文档渲染并发布到开发者门户中。在 v1.2.0 中TechDocs Addon 框架Addon Framework正式宣布一般可用GA这意味着第三方开发者可以基于稳定的公开 API 来定制文档阅读视图例如在文档页面中嵌入自定义页脚、搜索高亮、评论组件等。Addon 框架的本质是让 TechDocs 阅读页面变成可组合的文档内容在渲染时会经过一组已注册的 Addon 组件处理从而在不修改 TechDocs 核心代码的前提下扩展界面与交互。对于希望定制自身文档门户的团队这一能力的 GA 意味着可以放心将 Addon 机制引入生产环境。从当前仓库看TechDocs 插件主体位于 plugins/techdocs其配套的前端 React 工具库 plugins/techdocs-react 与贡献型 Addon 集合 plugins/techdocs-module-addons-contrib 均已被收录后者为开箱即用的 Addon 扩展提供了参考实现可作为自定义 Addon 的起点。新增插件一ADR 插件v1.2.0 引入了backstage/plugin-adr用于在 Backstage 内部直接跟踪、浏览团队的架构决策记录Architecture Decision Records。ADR 是一类用轻量文档记录架构决策及其背景、权衡的实践Backstage 仓库自身也维护着 docs/architecture-decisions 目录如adr001-add-adr-log.md、adr009-entity-references.md等两者是同一实践在不同场景下的体现。该插件由社区成员 kuangp 贡献其核心价值在于把散落在代码仓库中的adr/*.md文档聚合进开发者门户让团队在统一的界面上按实体、按目录检索和阅读架构决策无需切换到 Git 平台。新增插件二CodeScene 插件CodeScene 插件为 Backstage 提供了一个页面组件用于列出 CodeScene 实例上已有的项目及其分析数据。CodeScene 是面向软件交付的代码分析平台能够输出复杂度、技术债、交付风险等指标。集成后开发者可以在 Backstage 的门户内直接查看这些分析结果把代码质量数据纳入日常研发流程。该插件由社区成员 julioz 贡献对应 PR #10777。它属于典型的外部工具聚合型插件Backstage 作为门户层通过插件对接第三方分析系统将外部数据以标准化的实体/页面形式呈现给用户。新增插件三Gerrit 目录集成模块plugin-catalog-backend-module-gerrit的加入使Gerrit成为 Backstage Catalog 的又一代码托管后端数据源。该模块由社区成员 anicke 贡献对应 PR #10669支持两类能力Gerrit 发现discovery自动发现 Gerrit 仓库并将其注册为 Catalog 中的组件实体Gerrit 位置locations将 Gerrit 仓库中的catalog-info.yaml等配置文件作为 Catalog 的位置来源进行加载。当前仓库中该模块位于 plugins/catalog-backend-module-gerrit仓库根目录的catalog-info.yaml正是被此类位置加载器消费的实体描述文件。对于使用 Gerrit 作为主要代码托管平台的团队这是把已有代码资产纳入统一软件目录的关键入口。集成层调整Bitbucket Server 与 Bitbucket Cloud 拆分v1.2.0 在集成层做了一个重要的内部重构将 Bitbucket Server 与 Bitbucket Cloud 在实现上拆分。原因在于两者的功能集存在细微差异例如 API 形态、权限模型、支持的 Scaffolder 动作不同混在一起会让配置与行为难以对齐。此次拆分同时带来两个配套变化以便平滑迁移新增了面向各自平台的 Scaffolder 动作新增了独立的 integrations 配置项。这一改动的影响面主要在两类用户同时对接 Bitbucket Server自托管与 Bitbucket CloudSaaS的团队现在可以为不同平台配置不同的集成参数与动作原本使用统一 Bitbucket 配置的存量用户需要按新配置结构进行渐进式迁移发布说明明确这是gradual migration并非一刀切。从当前仓库看这一拆分后的形态体现在 plugins/scaffolder-backend-module-bitbucket-cloud 与 plugins/scaffolder-backend-module-bitbucket-server 两个独立模块上分别承载各自平台的 Scaffolder 动作实现。安全增强ServerTokenManager 令牌加入过期时间改动内容Backstage 的服务间server-to-server认证由 TokenManager 负责签发与校验令牌v1.2.0 对ServerTokenManager做了两项安全相关变更签发令牌时写入exp过期时间声明新签发的令牌有效期被设置为签发时刻之后的一小时one hour in the future from when issued废弃对无过期时间令牌的容忍传入或校验缺少exp声明或exp已过期的令牌的行为被标记为 deprecated当前版本会打印警告日志未来版本将直接报错。技术影响在旧版本中服务间令牌理论上可以永久有效一旦泄露就难以通过时间维度收敛风险。加入一小时的exp后令牌的生命周期被收紧泄露窗口显著缩小。同时废弃容忍过期/无过期令牌的做法是为了推动全生态统一采用带过期时间的令牌协议避免旧令牌长期滞留在各服务的缓存或配置中。对于运行多实例 Backstage 或大量使用后端 API 直连如插件后端之间的调用的部署升级后需要关注两点各服务实例之间时间需保持基本同步NTP否则可能因时钟偏差导致令牌被误判过期若存在长期缓存令牌的自定义实现需确保其能处理令牌过期后的自动续签。当前仓库佐证该改动对应上游 PR #11262。在当前仓库的代码布局中后端默认服务包位于 packages/backend-defaults服务间认证相关的令牌逻辑即在此类后端基础包中实现升级时若自定义了 TokenManager 的实现建议对照新版行为重新校验令牌的签发与校验逻辑。Kubernetes新增 OIDC 认证提供方配置方式v1.2.0 为 Kubernetes 插件新增了oidc认证提供方auth provider并配套一个可选的配置项oidcTokenProvider。这一能力使 Backstage 可以使用用户在 Backstage 中登录时获得的 ID Token 来认证 Kubernetes 集群无需再为集群单独配置服务账号令牌或重复登录。在集群配置中启用方式如下结合 plugins/kubernetes-backend/config.d.ts 中声明的配置结构kubernetes: serviceLocatorMethod: type: multiTenant clusterLocatorMethods: - type: config clusters: - url: https://kubernetes.example.com name: example-cluster authProvider: oidc # 使用 OIDC 认证方式 oidcTokenProvider: google # 指定 OIDC token 提供方标识其中authProvider: oidc声明该集群使用 OIDC 认证策略oidcTokenProvider用于指定 ID Token 取自哪一个已配置的 OIDC 认证提供方例如google该值在配置结构中被标记为visibility frontend属于可下发到前端的配置集群实体的authMetadata中需要携带对应的 token provider 标识插件会据此在请求体中查找匹配的 token。源码级实现该功能在 plugins/kubernetes-backend/src/auth/OidcStrategy.ts 中实现了AuthenticationStrategy接口。其核心逻辑如下validateCluster校验集群的authMetadata中是否声明了ANNOTATION_KUBERNETES_OIDC_TOKEN_PROVIDER若为空则返回错误Must specify a token provider for oidc strategygetCredential从请求的authConfig.oidc对象中按oidcTokenProvider指定的键名取出 ID Token并将其包装为bearer token类型的KubernetesCredential用于后续对集群 API 的调用。从调用链上看认证策略由 plugins/kubernetes-backend/src/service/KubernetesRouter.ts 中的路由层通过authStrategyMap按authProvider值分发OidcStrategy即注册在oidc这个键名下。同时plugins/kubernetes-backend/src/auth/OidcStrategy.test.ts 提供了针对该策略的单元测试覆盖了缺少 token provider 报错token 缺失报错正常返回 bearer token等分支可作为理解其行为边界的参考。使用前提需要在 Backstage 中配置与集群兼容的 OIDC 认证提供方即用户登录 Backstage 所走的 OIDC 提供方Kubernetes 集群侧需启用与 OIDC 发行方匹配的--oidc-issuer-url等配置接受来自该发行方的 ID Token该功能的引入者 dbravovmw 在 PR #11328 中完成了主要实现。其他更新调度器与空状态界面TaskScheduleDefinition 支持直观时长对象后端任务调度器backend task scheduler的TaskScheduleDefinition在 v1.2.0 中得到了扩展除原有的 luxonDuration对象外现在也接受包含days、hours、seconds等字段的普通选项对象。这一改动PR #11245意味着在编写周期任务如 Catalog 的定时刷新、搜索索引的定时重建时可以写出更直观的调度描述// 此前需要依赖 luxon 构造 Duration // 现在可以直接传入选项对象 { frequency: { hours: 6 }, timeout: { minutes: 30 }, }对于不想在业务代码中引入 luxon 依赖的插件作者来说这降低了调度任务的书写成本。实体不存在时渲染自定义组件另一处前端体验改进是当实体Entity无法被找到时现在可以渲染自定义组件PR #11047。此前找不到实体通常只会显示通用错误页升级后门户维护者可以为实体不存在场景定制提示信息、推荐链接或替代导航改善用户在 Catalog 中访问失效实体时的体验。安全修复本次发布包含一项安全修复涉及backstage/plugin-scaffolder-backend-module-railsRails 脚手架后端模块。发布说明明确建议使用该模块的用户尽快升级到最新版本。该模块在当前仓库中位于 plugins/scaffolder-backend-module-rails用于在 Scaffolder 模板中生成 Rails 项目骨架。升级建议与路径Backstage 官方推荐所有项目跟随最新版本持续升级。升级的通用指引见仓库内的 docs/getting-started/keeping-backstage-updated.md其中介绍了如何借助 Backstage CLI 与版本策略平滑升级。结合本次版本特性升级时可以重点核对以下清单若使用 ServerTokenManager 签发的服务间令牌确认各服务能接受带exp的新令牌并清理对无过期令牌的依赖若使用 Bitbucket 集成留意 Server/Cloud 拆分后的配置迁移指引若使用 Kubernetes 插件可评估将部分集群切换到oidc认证方式以复用 Backstage 已有的 OIDC 登录态若使用了 Rails 脚手架模块务必更新到修复后的版本。参考与延伸阅读完整的逐条变更记录见 docs/releases/v1.2.0-changelog.mdBackstage 的版本兼容与支持策略见 docs/overview/versioning-policy.mdADR 实践的仓库内部示例可参考 docs/architecture-decisionsKubernetes 插件的 OIDC 认证策略源码见 plugins/kubernetes-backend/src/auth/OidcStrategy.ts其测试见 plugins/kubernetes-backend/src/auth/OidcStrategy.test.ts。总而言之Backstage v1.2.0 是一版生态扩张 安全加固并重的发布TechDocs Addon 的 GA 为文档中心打开了定制化空间三个新插件/模块补齐了 ADR、代码分析与 Gerrit 场景而令牌过期机制与 Kubernetes OIDC 认证则分别提升了服务间通信安全与集群接入的便捷性。对于正在规划升级的团队建议按上述清单逐项评估适配影响。【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表