发行注记


Red Hat Developer Hub 1.3

Red Hat Developer Hub 1.3 发行注记

Red Hat Customer Content Services

摘要

Red Hat Developer Hub 是用于构建开发人员门户的开发人员平台。本文档包含 Red Hat Developer Hub 1.3 发行注记。

前言

Red Hat Developer Hub (Developer Hub) 1.3 现已正式发布。Developer Hub 是完全支持的企业级产品版本,上游 Backstage v1.29.2。您可以从 红帽客户门户网站生态系统 目录访问并下载 Red Hat Developer Hub 应用程序。

第 1 章 新功能

本节重点介绍 Red Hat Developer Hub 1.3 中的新功能。

1.1. 使用自定义资源自定义部署

在这个版本中,在使用 operator 部署 Red Hat Developer Hub 时,您可以配置 Developer Hub Deployment 资源。Developer Hub Operator 自定义资源定义(CRD) API 版本已更新至版本 rhdh.redhat.com/v1alpha2。此 CRD 会公开一个通用的 spec.deployment.patch 字段,它允许您修补 Developer Hub Deployment 资源。

1.2. 在 RBAC 条件策略中使用嵌套条件

在这个版本中,作为 Developer Hub 管理员,您可以使用 Developer Hub Web UI 在 RBAC 条件策略中创建和编辑嵌套条件。

1.3. 持久性审计日志

在这个版本中,您可以持久保留审计日志:

  • 您可以将 Red Hat Developer Hub 审计日志发送到轮转文件。
  • 您可以将日志发送到锁定的文件,且只能附加权利。
  • 使用 Helm Chart 时,Developer Hub 将日志写入持久性卷。

1.4. 允许动态配置 Keycloak 用户/组转换器

在这个版本中,您可以在用户和组在进入目录前从 Keycloak 中修改实体参数,以便为用户和组提供转换器功能。这可以通过创建新后端模块并使用添加的 keycloakTransformerExtensionPoint 来完成。

1.5. 为 keycloak-backend 插件公开扩展点

在这个版本中,您可以为用户/组提供转换器功能,以便在使用新的 Backstage 后端将来自 Keycloak 的实体从它们放入目录中。

流程

  1. 创建后端模块。
  2. 将自定义转换器提供给软件包导出的 keycloakTransformerExtensionPoint 扩展点。== core 和 plugins 中的所有公共端点都有 OpenAPI 规格

在这个版本中,OpenAPI Specs 适用于所有组件,包括 rbac-backend 插件。

1.6. RBAC 后端插件模块支持

在这个版本中,Developer Hub 可以通过对插件模块使用扩展点来将角色和权限加载到 RBAC 后端插件中。

1.7. 为生产环境用户强制目录生成

默认情况下,用户实体需要存在于软件目录中,以允许登录。这是生产就绪部署所必需的,因为身份需要存在,并且源自可信源(即身份提供程序),才能使安全控制(如 RBAC 和审计日志记录)生效。要绕过此操作,请启用 dangerouslySignInWithoutUserInCatalog 配置,该配置允许在没有用户位于目录的情况下登录。启用这个选项非常危险,因为它可能会允许未授权的用户获得访问权限。

1.8. RBAC UI 的改进

在这个版本中,RBAC UI 已被改进:

  • Create role 表单和 Role 概述页面显示配置的条件规则总数。
  • Role 列表页面显示可访问的插件。

1.9. 更新了 Backstage 版本

在这个版本中,Backstage 更新至 1.29.2 版本。

Microsoft Azure Authentication 供应商现已就绪。为了启用此功能,我们进行了改进和 bug 修复,以提高身份验证和实体处理过程。请注意,目录中存在的用户实体现在被强制实施。

在此次更新之前,没有在 Google Cloud Platform (GCP)上部署 Developer Hub on OpenShift Dedicated (OSD)的过程。

在这个版本中,您可以使用 Red Hat Developer Hub Operator 或 Red Hat Developer Hub Helm Chart 在 Google Cloud Platform (GCP)上安装 Red Hat Developer Hub。

1.11. 在 Topology 插件中视觉化虚拟机节点

在这个版本中,您可以通过 Topology 插件视觉化在集群中部署的虚拟机节点。

1.12. 自定义主页

在这个版本中,您可以通过将数据作为代理传递给 app-config.yaml 文件来自定义 Red Hat Developer Hub 中的 Home 页面。现在,可以添加、重新组织和删除卡,包括搜索栏、快速访问、标题、标记、占位符、目录不足实体以及根据您安装和启用的插件所显示的精选文档。

1.13. 自定义主导航边栏

在这个版本中,Developer Hub 中引入了可配置的可自定义的主导航边栏,为管理员提供更多对导航结构的控制。在以前的版本中,侧边栏使用有限的灵活性进行编码,动态插件只能贡献菜单项,而无需控制其顺序或结构。

借助此功能,管理员可以配置导航项目的顺序,创建嵌套的子导航程序,并为用户提供一个更加组织且直观的界面。此功能增强通过允许更定制的导航设置来提高用户体验和效率。

向后兼容性会被维护,确保现有的动态插件菜单项可以保持正常运行。提供了默认配置,以及示例配置,包括带有外部动态插件的配置。文档已更新为指导开发人员自定义导航。

1.14. 向用户显示目录处理错误

在这个版本中,@backstage/plugin-catalog-backend-module-logs 插件已作为动态插件提供,以帮助将目录错误放入日志中。这个动态插件默认是禁用的。

1.15. 使用外部文件配置条件策略

在这个版本中,您可以使用外部文件在 Developer Hub 中配置条件策略。另外,Developer Hub 支持条件策略别名,在策略评估过程中动态替换为适当的值。

如需更多信息,请参阅配置条件策略

1.16. 更快地重启 Red Hat Developer Hub

在此次更新之前,Developer Hub 需要很长时间才能重启,因为 Developer Hub 在每次重启时从零引导所有动态插件。

在这个版本中,Developer Hub 将持久性卷用于动态插件。因此,Developer Hub 会更快地重启。

1.17. 监控 Developer Hub 上的活跃用户

在这个版本中,您可以使用 licensed-users-info-backend 插件监控 Developer Hub 上的活跃用户。此插件通过 Web UI 或 REST API 端点在登录用户上提供统计信息。

如需更多信息,请参阅 授权

1.18. 从动态插件载入自定义后端主题

在这个版本中,您可以从动态插件加载自定义后端主题。

流程

  1. 在动态插件中导出主题供应商功能,例如:

    import { lightTheme } from './lightTheme'; // some custom theme
    import { UnifiedThemeProvider } from '@backstage/theme';
    export const lightThemeProvider = ({ children }: { children: ReactNode }) => (
      <UnifiedThemeProvider theme={lightTheme} children={children} />
    );
  2. 使用新的 主题 配置字段将 Developer Hub 配置为在 UI 中载入它们:

    dynamicPlugins:
      frontend:
        example.my-custom-theme-plugin:
          themes:
            - id: light # <1>
              title: Light
              variant: light
              icon: someIconReference
              importName: lightThemeProvider

    <1> 设置您的主题 id。(可选)覆盖默认的 Developer Hub 主题指定以下 id 值: light 覆盖默认的 light theme 和 dark 会覆盖默认的 dark 主题。

验证

  • 主题包括在 "Settings" 页面中。

这个版本还引进了从动态插件覆盖核心 API 服务工厂的功能,这对于为 Developer Hub 前端提供自定义 ScmAuth 配置非常有用。

1.19. 管理安装动态插件上的并发写入

在以前的版本中,因为潜在的写入冲突,无法运行带有动态插件缓存的多副本 RHDH。这个版本降低了这个风险

第 2 章 可能会造成问题的更改

本节列出了 Red Hat Developer Hub 1.3 中的破坏更改。

2.1. 'dynamic-plugins' 配置映射被动态命名

在此次更新之前,动态插件 ConfigMap 名称被硬编码。

因此,无法在同一命名空间中安装两个 Red Hat Developer Hub Helm chart。

在这个版本中,dynamic-plugins ConfigMap 根据部署名称动态命名。这个命名方法与生成其他组件名称的方式类似。

当从之前的 chart 升级时,您可能需要手动更新 values.yaml 文件的那个部分,以便在正确的 ConfigMap 中拉取。

其他资源

2.2. 现在默认禁用在软件目录中没有用户登录

默认情况下,用户实体需要存在于软件目录中,以允许登录。这是生产就绪部署所必需的,因为身份需要存在,并且源自可信源(即身份提供程序),才能使安全控制(如 RBAC 和审计日志记录)生效。要绕过此操作,请启用 dangerouslySignInWithoutUserInCatalog 配置,该配置允许在没有用户位于目录的情况下登录。启用这个选项非常危险,因为它可能会允许未授权的用户获得访问权限。

其他资源

在此次更新之前,一些红帽和社区技术预览(TP)插件和操作会被默认启用:

技术预览插件

  • @backstage-community/plugin-catalog-backend-module-scaffolder-relation-processor (RHIDP-3643)

社区支持插件

  • @backstage/plugin-scaffolder-backend-module-azure
  • @backstage/plugin-scaffolder-backend-module-bitbucket-cloud
  • @backstage/plugin-scaffolder-backend-module-bitbucket-server
  • @backstage/plugin-scaffolder-backend-module-gerrit
  • @backstage/plugin-scaffolder-backend-module-github
  • @backstage/plugin-scaffolder-backend-module-gitlab
  • @roadiehq/scaffolder-backend-module-http-request
  • @roadiehq/scaffolder-backend-module-utils

在这个版本中,在 技术预览支持范围内 包括的所有插件(无论是来自红帽还是社区)都默认禁用。

流程

  • 如果您的工作负载需要这些插件,请使用 disabled: false 在自定义资源或 ConfigMap 中启用它们。

其他资源

2.4. 带有更新范围的插件

在这个版本中,之前在 @janus-idp 范围下的三个插件已移至 @backstage-community

Expand
RHDH 1.2 插件名称RHDH 1.3 插件名称

@janus-idp/backstage-plugin-argocd

@backstage-community/plugin-redhat-argocd

@janus-idp/backstage-plugin-3scale-backend

@backstage-community/plugin-3scale-backend

@janus-idp/backstage-plugin-catalog-backend-module-scaffolder-relation-processor

@backstage-community/plugin-catalog-backend-module-scaffolder-relation-processor

因为以前的插件的范围已更新,动态插件配置也会改变。

Expand
RHDH 1.2 配置RHDH 1.3 配置

dynamic-plugins.default.yaml

dynamic-plugins.default.yaml

流程

  • 如果您的工作负载需要带有更新范围的插件,请重新验证您的配置以使用新范围内的最新插件。

其他资源

第 3 章 弃用的功能

本节列出了 Red Hat Developer Hub 1.3 中已弃用的功能。

spec.application.image,spec.application.replicasspec.application.imagePullSecrets 字段在 spec.deployment favour 中弃用 v1alpha2

流程

更新 Developer Hub 操作配置:

  1. 从 Operator 配置中删除 spec.application.imagespec.application.replicasspec.application.imagePullSecrets 字段。例如:

    spec:
      application:
        replicas: 2 # &lt;1&gt;
        imagePullSecrets: # &lt;2&gt;
          - my-secret-name
        image: quay.io/my/my-rhdh:latest # &lt;3&gt;

    <1> 副本数。<2>镜像 pull secret 名称的数组。<3> 镜像名称。

  2. 将删除的字段替换为新的 spec.deployment 字段。例如:

    spec:
      deployment:
        patch:
          spec:
            replicas: 2 # &lt;1&gt;
            imagePullSecrets: # &lt;2&gt;
              - name: my-secret-name
            template:
              metadata:
                labels:
                  my: true
              spec:
                containers:
                  - name: backstage-backend
                    image: quay.io/my/my-rhdh:latest # &lt;3&gt;

    <1> 副本数。<2>镜像 pull secret 名称的数组。<3> 镜像名称。

其他资源

第 4 章 技术预览

本节列出了 Red Hat Developer Hub 1.3 中的技术预览功能。

重要

技术预览功能为用户提供了一个对最新的产品创新的试用机会,以便用户可以对其进行测试并提供反馈。但是,Red Hat 订阅级别协议并不包括对这些技术预览功能的完全支持。这些功能可能并不完善,且不适用于生产环境。由于红帽会考虑在将来的产品中使用这些技术预览功能,我们将尝试解决客户在使用这些功能时遇到的问题。请参阅: 技术预览支持范围

4.1. 同时注册多个 Git 存储库中的现有实体

在这个版本中,您可以同时从多个存储库注册实体,而无需单独注册它们。

对于没有 catalog-entity.yaml 文件的存储库,插件会创建一个拉取请求。拉取请求合并后,Developer Hub 会在软件目录中注册实体。

其他资源

4.2. 添加了 catalog backend 模块日志插件

在这个版本中,Developer Hub 包含 @backstage/plugin-catalog-backend-module-logs 插件,作为动态插件,以帮助将目录错误放入日志中。这个动态插件默认是禁用的。

其他资源

第 5 章 修复的问题

本节列出了 Red Hat Developer Hub 1.3 中修复的问题。

5.1. 修复了 1.3.5 的问题

在之前的 Developer Hub Helm Chart 版本中,无法配置存储类和访问模式,以便在 Chart 创建的动态插件 PVC 中使用。这可能导致 Developer Hub Deployment 在没有默认存储类或不能使用默认存储类的集群中一直处于卡住状态。这个问题已被解决,使整个动态插件 PVC 规格可以配置。这样,可以配置 PVC 的各个方面,如存储类或访问模式。以下字段现在包括在 Helm Chart 中:

dynamicPlugins:
  cache:
    # -- Spec of the dynamic plugins root volume claim.
    # Note that, by default, this is set to use the default storage class, if available in the cluster.
    volumeClaimSpec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
      storageClassName: null

其他资源

在之前的 Developer Hub Helm Chart 版本中,无法为 test-connection pod 配置镜像,这可能是 air-gapped 环境的问题。当用户运行 helm test 命令时,test-connection pod 是 Helm Chart 创建的 Pod,以测试部署的发行版本。这个问题已通过使镜像可配置,并允许完全禁用 test-connection pod 创建。以下字段现在包括在 Helm Chart 中:

# -- Test pod parameters
test:
  # -- Whether to enable the test-connection pod used for testing the Release using `helm test`.
  enabled: true
  image:
    # -- Test connection pod image registry
    registry: quay.io
    # -- Test connection pod image repository. Note that the image needs to have both the `sh` and `curl` binaries in it.
    repository: curl/curl
    # -- Test connection pod image tag. Note that the image needs to have both the `sh` and `curl` binaries in it.
    tag: latest

其他资源

在之前的 Developer Hub Helm Chart 版本中,无法配置存储类和访问模式,以便在 Chart 创建的审计日志 PVC 中使用。这可能导致 Developer Hub Deployment 在没有默认存储类或不能使用默认存储类的集群中一直处于卡住状态。这个问题已通过使整个审计日志 PVC 规格可配置在这个版本中解决。这样,可以配置 PVC 的各个方面,如存储类或访问模式。请注意,在 1.4 中删除了审计日志 PVC。

在此 Helm Chart 发行版本中公开以下字段:

auditLog:
  # -- Spec of the audit log volume claim.
  # Note that, by default, this is set to use the default storage class, if available in the cluster.
  volumeClaimSpec:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 1Gi
    storageClassName: null

其他资源

5.2. 修复了 1.3.4 中的问题

5.2.1. GitLab Org 插件会抛出 MODULE_NOT_FOUND 错误

在以前的 Developer Hub 版本中,当配置了 MODULE_NOT_FOUND 错误时,gitlab org catalog backend 插件将无法加载。这个问题已通过在动态插件中嵌入缺少的依赖项来解决。

请参阅类似的问题 https://issues.redhat.com/browse/RHIDP-5308

其他资源

5.3. 修复了 1.3.3 中的问题

5.3.1. 选择不使用 Redis 集无法正常工作

在此次更新之前,配置 useRedisSets: false 选项会导致 useRedisSets: true 行为。

在这个版本中,您可以选择不使用 Redis 集。建议清除缓存以删除所有无效的密钥。

其他资源

5.4. 修复了 1.3.2 中的问题

5.4.1. 无法从所选文档内容报告文档问题

在以前的版本中,报告文档(techdoc)问题的功能无法正常工作。当用户在文档中选择了文本时,它会显示一个大型图标而不是工具提示按钮。

在这个版本中,用户可以在文档中选择内容,然后点击工具提示按钮报告文档问题。

其他资源

5.5. 修复了 1.3.1 的问题

5.5.1. 条件别名 $ownerRefs 无法正常工作

在此次更新之前,使用 $ownerRefs 的条件别名无法正常工作。

在这个版本中,条件别名可以使用 $ownerRefs

其他资源

5.6. 修复了 1.3.0 的问题

在这个版本中,Red Hat Developer Hub Helm Chart 不包含不再需要的 pull secret。

其他资源

5.6.2. 过滤不存在的权限策略会导致抛出错误

在此次更新之前,如果之前没有定义匹配的权限策略,则权限框架的权限检查会抛出错误。因此,Developer Hub 拒绝请求出错。

在这个版本中,Developer Hub 拒绝请求而不抛出错误。

其他资源

在此次更新之前,当用户是带有聚合关系的大量组(超过 150)的成员时,Developer Hub API 会变得无响应。因此,用户可能无法进行身份验证。另外,在 UI 中打开用户实体时,Developer Hub 可能会出现错误。

在这个版本中,Developer Hub 可以处理大量组(超过 150)的用户成员,并聚合关系。

其他资源

5.6.4. OCM 调用范围到 OCM 页面

在此次更新之前,当安装 OCM 插件时,导航到非OCM 页面会触发不必要的 OCM API 调用。

在这个版本中,Developer Hub 将 OCM API 调用限制为 OCM 相关的页面。

其他资源

在此次更新之前,Developer Hub 无法将带有 Azure 身份验证提供程序的用户实体解析为 MsGraph 目录供应商提供的实体。因此,使用 Microsoft Azure 的用户身份验证无法在 Developer Hub 中打开会话。

在这个版本中,Developer Hub 使用 Azure 身份验证供应商解析用户实体,以作为 MsGraph 目录供应商提供的实体。因此,使用 Microsoft Azure 的用户身份验证可以在 Developer Hub 中打开会话。

其他资源

在此次更新之前,在使用默认配置的 Developer Hub 部署中,应用程序日志会显示弃用警告。

在这个版本中,默认的 upstream.backstage.appConfig 配置使用 backend.auth.externalAccess 字段而不是已弃用的 backend.auth.keys 字段。

其他资源

5.6.7. 在应用程序日志中处理 PII 日志

在这个版本中,Developer Hub 不会在应用程序日志中包括用户 IP 地址。

其他资源

5.6.8. 列表中缺少最后 ~10 GitHub Pull Requests

在此次更新之前,Developer Hub 会忽略 GitHub 搜索 API 限制来列出拉取请求。因此,Developer Hub 可能还没有显示所有拉取请求。

在这个版本中,Developer Hub 将分页限制为最大 1000 结果,以遵守 GitHub 搜索 API 限制。当有其他结果可用时,Developer Hub 会显示用户,建议用户优化查询以检索更具体的结果。

其他资源

在此次更新之前,在更新配置映射或 secret 后,当重启要应用更改的 pod 时,它们可能会尝试同时锁定数据库。这种情况终止了死锁。

在这个版本中,Developer Hub 会同时处理没有死锁的 pod 刷新。

其他资源

在此次更新之前,Helm Chart 会为 dynamic-plugins-npmrc secret 使用未指定版本的名称。因此,在首次部署后,RHDH Helm Chart 版本 1.2.1 的后续 Helm 部署会失败,并显示名为 dynamic-plugins-npmrc 的 secret 存在且不由当前版本所有。

在这个版本中,Helm Chart 会创建和使用 dynamic-plugins-npmrc secret,该 secret 与 Helm Chart: < release-name>-dynamic-plugins-npmrc 管理的其他资源一致。因此,Helm Chart 不会在上一个错误中失败。

其他资源

在此次更新之前,Developer Hub 会停止显示一些指标,如 < RHDH_URL> /metrics 端点中的目录指标

在这个版本中,Developer Hub 在 /metrics 端点中显示预期的指标。

其他资源

5.6.12. 使用材料 5 的插件的主题问题

在此次更新之前,Developer Hub 使用 Material UI (MUI) 5 使用插件存在主题问题。

在这个版本中,Developer Hub 包含了额外的 MUI 5 相关软件包,并作为共享模块添加到应用程序 shell 中。因此,使用 MUI 5 组件和 tss-react 的动态插件可以正确地加载当前选择的主题。这样可确保 MUI 5 组件具有正确的颜色,并应用到它们。

虽然严格要求,但如果动态插件依赖于 MUI 5 组件以及类名称前缀,可以通过在插件的 index.ts 中添加以下代码来将此行为添加到前端动态插件中:

import { unstable_ClassNameGenerator as ClassNameGenerator } from &#39;@mui/material/className&#39;;

ClassNameGenerator.configure(componentName =&gt; {
  return componentName.startsWith(&#39;v5-&#39;)
    ? componentName
    : `v5-${componentName}`;
})

这个版本需要使用 @janus-idp/cli 软件包 > 1.13.1 的版本。

其他资源

在此次更新之前,通过 REST API (或 UI 中的 RBAC admin 面板)创建带有 ':' 或 '/' 的 RBAC 角色会创建一个不做且无法删除的角色。虽然角色的名称如在 POST 请求中所写的那样完全显示,但在点击时,它只显示在第一个 ':' 或 '/' 之前写入的角色部分。另外,RBAC 角色列表会列出添加到角色中的策略数量,当点角色以获取不再显示用户或策略的信息时。

使用这个 udpate,Developer Hub 根据后端验证验证更严格的角色和命名空间名称:

Developer Hub 会使角色名称无效,其格式不符合:

  • 长度至少为 1 的字符串,最多 63.
  • 必须包含 [a-z0-9A-Z] 序列可由 [-_.] 分隔。

Developer Hub 会使不符合格式的命名空间无效:

  • 长度至少为 1 的字符串,最多 63.
  • 必须是 [a-zA-Z0-9] 序列,可以使用 - 分隔。

其他资源

在此次更新之前,在从配置中删除相应的策略文件后,从文件中加载的条件策略和策略将保持活动状态。

在这个版本中,在从配置中删除相应的策略文件后,从文件中加载的条件策略和策略会被删除。

其他资源

在此次更新之前,catalog-info.yaml 中由 catalog:timestamping 操作创建的时间戳,由 backstage-scaffolder-backend-module-annotator 插件创建的时间戳与模板的执行时间不同。

在这个版本中,在每次执行模板时都会生成唯一的时间戳。

其他资源

5.6.16. 在侧边栏中添加缺少的虚拟机详情

在此次更新之前,当用户在侧边栏中显示虚拟机详情时,不会显示与虚拟机对应的图标。

在这个版本中,添加了缺少的图标。因此,当用户在侧边栏中显示虚拟机详情时,图标会显示虚拟机状态。

其他资源

在此次更新之前,当 dangerouslyAllowSignInWithoutUserInCatalog 项被设置为 true 且用户没有存在于软件目录中时,使用 Github 进行身份验证会失败。

在这个版本中,当 dangerouslyAllowSignInWithoutUserInCatalog 字段被设置为 true 时,您可以使用软件目录中没有用户对 Developer Hub 进行身份验证。

其他资源

在此次更新之前,当 Developer Hub 镜像在自定义资源和 'RELATED_IMAGE_backstage' 环境变量中配置时,不会使用自定义资源中定义的镜像。

在这个版本中,自定义资源配置具有优先权,会被应用。

其他资源

在此次更新之前,在 RBAC 管理页面中,成员下拉菜单无法加载大量用户或组。因此,Developer Hub 管理员无法选择添加到角色所需的用户或组。

在这个版本中,下拉菜单最初会显示 100 个用户或组,并在用户开始搜索后更新显示。搜索在整个数据集中发生,并显示前 100 个结果。用户必须优化其搜索,以将结果范围缩小到包含所需用户或组的列表。因此,即使有较大的数字或用户/组,Developer Hub 管理员可以将所需的用户或组添加到角色中。

其他资源

5.6.20. 带有动态前端资产捆绑的 ArgoCD 插件

在此次更新之前,ArgoCD 插件与动态后端插件资产捆绑,而不是动态前端插件资产。因此,ArgoCD 插件无法加载。

在这个版本中,ArgoCD 插件与动态前端插件资产捆绑在一起。因此,ArgoCD 插件可以正确加载。

其他资源

5.7. 修复了 1.2.2 中的问题

在此次更新之前,RBAC 管理用户界面 Permission Policies 表不会显示插件名称。

在这个版本中,RBAC 管理用户界面 Permission Policies 表显示插件名称。

其他资源

第 6 章 修复了安全问题

本节列出了 Red Hat Developer Hub 1.3 中修复的安全问题。

6.1. Red Hat Developer Hub 1.3.5

6.1.1. Red Hat Developer Hub 依赖项更新

CVE-2025-22150
在 Node.js 的 undici 软件包中发现了一个安全漏洞。Undici 使用 Math.random () 选择 multipart/form-data 请求的边界。如果已知了其中几个生成的值,则可以预测 Math.random () 的输出。如果应用程序有向攻击者控制的网站发送多部分请求的机制,则可能会泄漏必要的值。因此,如果满足某些条件,攻击者可能会篡改到后端 API 的请求。

6.2. Red Hat Developer Hub 1.3.4

6.2.1. Red Hat Developer Hub 依赖项更新

CVE-2024-45338
golang.org/x/net/html 中发现了一个安全漏洞。此漏洞允许攻击者对解析功能进行精心设计的输入,这些函数会对长度不单处理,从而造成了非常慢的解析过程。此问题可能会导致拒绝服务。
CVE-2024-52798
在 path-to-regexp 中发现了一个安全漏洞。path-to-regexp 将路径字符串转换为正则表达式。在某些情况下,path-to-regexp 将输出一个可以利用的正则表达式来降低性能。
CVE-2024-55565
nanoid (也称为 Nano ID)在 5.0.9 错误处理非整数值前。3.3.8 也是固定的版本。
CVE-2024-56201
在 Jinja2 软件包中发现了一个安全漏洞。Jinja 编译器中的一个 bug 允许一个控制模板内容和文件名的攻击者来执行任意 Python 代码,而不考虑 Jinja 的沙盒。攻击者需要能够控制模板的文件名和内容。这种情况取决于使用 Jinja 的应用类型。此漏洞会影响执行不受信任的模板的应用程序用户,其中模板作者也可以选择模板文件名。
CVE-2024-56326
Jinja 软件包中发现了一个安全漏洞。在受影响的 Jinja 版本中,Jinja 沙盒容器环境如何检测对 str.format 的调用允许攻击者控制模板内容执行任意 Python 代码。为了利用此漏洞,攻击者需要控制模板的内容。这种情况取决于使用 Jinja 的应用类型。此漏洞会影响执行不受信任的模板的应用程序用户。Jinja 的沙盒会捕获对 str.format 的调用,并确保它们不会转义沙盒。但是,可以存储对恶意字符串格式方法的引用,然后将它传递给调用它的过滤器。此类过滤器不在 Jinja 中构建,但可以通过应用中的自定义过滤器来显示。在修复后,此类间接调用也由沙盒处理。

6.2.2. RHEL 9 平台 RPM 更新

CVE-2024-9287
Python venv 模块和 CLI 中发现了一个漏洞。创建虚拟环境时提供的路径名称不正确,允许创建者将命令注入虚拟环境"activation"脚本,例如 "source venv/bin/activate"。这个漏洞允许攻击者控制的虚拟环境在激活虚拟环境时运行命令。
CVE-2024-11168
Python 中发现了一个安全漏洞。urllib.parse.urlsplit ()urlparse () 函数错误地验证了括号的主机([]),允许不兼容 IPv6 或 IPvFuture 的主机。这个行为不符合 RFC 3986,如果 URL 由多个 URL 解析器处理,则可能容易受到服务器端请求伪造(SSRF)的影响。
CVE-2024-34156
Golang 标准库的 encoding/gob 软件包中发现了一个安全漏洞。调用 Decoder.Decoding,包含深度嵌套结构的消息可能会导致因为堆栈耗尽而出现 panic。这是 CVE-2022-30635 的后续。
CVE-2024-46713
在 Linux 内核中,以下漏洞已被解决:perf/aux: Fix AUX buffer serialization
CVE-2024-50208
在 Linux 内核中,解决了以下漏洞: RDMA/bnxt_re: 在设置 Level-2 PBL 页时修复错误
CVE-2024-50252
在 Linux 内核中,解决了以下漏洞: mlxsw: spectrum_ipip: Fix memory leak when change remote IPv6 address
CVE-2024-53122
Linux 内核的多路径 TCP (MPTCP)中发现了由零个安全漏洞划分的。此问题可能允许远程用户使系统崩溃。

6.3. Red Hat Developer Hub 1.3.3

6.3.1. Red Hat Developer Hub 依赖项更新

CVE-2024-21538
Node.js 的 cross-spawn 软件包中发现了一个 Service (ReDoS)漏洞的常规 Expression Denial。由于输入不正确,攻击者可以增加 CPU 使用量并使程序具有较大的特制字符串使程序崩溃。

6.3.2. RHEL 9 平台 RPM 更新

CVE-2024-0450
Python/CPython 'zipfile' 中发现了一个安全漏洞,它允许 zip-bomb 的攻击类型。攻击者可以制作一个 zip 文件格式,从而导致在处理时拒绝服务。
CVE-2024-2236
在 libgcrypt 的 RSA 实现中发现了一个基于时间的侧通道缺陷。此问题可能会允许远程攻击者启动 Bleichenbacher 式攻击,这可能会导致 RSA 密码文本解密。
CVE-2024-3596
RADIUS (远程身份验证 Dial-In User Service)协议中的漏洞允许攻击者在未强制执行 Message-Authenticator 属性时伪造身份验证响应。这个问题源自使用 MD5 的加密不安全完整性检查,从而使攻击者能够欺骗基于 UDP 的 RADIUS 响应数据包。这可以通过修改 Access-Reject 响应来对 Access-Accept 响应造成未授权的访问,从而破坏身份验证过程。
CVE-2024-3727
github.com/containers/image 库中发现了一个安全漏洞。此漏洞允许攻击者代表受害的用户触发意外的经过身份验证的 registry 访问,从而导致资源耗尽、本地路径遍历和其他攻击。
CVE-2024-6104
go-retryablehttp 中发现了一个漏洞。在写入日志时,软件包可能会因为缺少输入清理 URL 数据。此问题可能会公开敏感身份验证信息。
CVE-2024-8088
Python 的 zipfile 模块中发现了一个安全漏洞。在迭代 zip 存档的条目时,进程可以进入无限循环状态,并变得无响应。此漏洞允许攻击者制作一个恶意 ZIP 存档,从而拒绝来自使用 zipfile 模块的应用程序中的服务。只有处理由用户控制的 zip 存档的应用程序才会受到此漏洞的影响。
CVE-2024-24788
Go stdlib 的 net 软件包中发现了一个安全漏洞。当收到不正确的 DNS 消息作为查询的响应时,net 软件包中的 Lookup 功能可能会停留在无限循环中。此问题可能会导致资源耗尽和拒绝服务(DoS)条件。
CVE-2024-24791
Go 中发现了一个安全漏洞。net/http 模块错误处理来自 HTTP/1.1 客户端请求的特定服务器响应。此问题可能会导致连接无效,并导致拒绝服务。
CVE-2024-30203
Emacs 中发现了一个安全漏洞。当 Emacs 用作电子邮件客户端时,默认考虑内联 MIME 附加功能,允许精心设计的 LaTeX 文档耗尽为 /tmp 目录所分配的分区所分配的磁盘空间或 inode。此问题可能会导致拒绝服务。
CVE-2024-30204
Emacs 中发现了一个安全漏洞。当 Emacs 用作电子邮件客户端时,附加到电子邮件的已制作的 LaTeX 文档的预览可能会耗尽磁盘空间或为 /tmp 目录所分配的分区的 inode。此问题可能会导致拒绝服务。
CVE-2024-30205
Emacs 中发现了一个安全漏洞。组织模式将远程文件的内容考虑,如在远程系统上使用 TRAMP 打开的文件,以便被信任,从而导致任意代码执行。
CVE-2024-42283
在 Linux 内核中,以下漏洞已被解决:net: nexthop: Initialize all fields in dumped nexthops
CVE-2024-45005
在 Linux 内核中,解决了以下漏洞: KVM: s390: 修复当 gisa 关闭时有效截获问题
CVE-2024-46824
在 Linux 内核中,解决了以下漏洞:iommufd: Require driver 来提供 cache_invalidate_user ops
CVE-2024-46858
在 Linux 内核中,解决了以下漏洞:mptcp: pm: Fix uaf in __timer_delete_sync
CVE-2024-50602
在 Expat (libexpat)中发现了一个安全问题。由于 XML_StopParser 能够停止或暂停未启动解析器的功能,所以可以在 XML_ResumeParser 函数中触发崩溃,这可能会导致拒绝服务。

6.4. Red Hat Developer Hub 1.3.1

6.4.1. Red Hat Developer Hub 依赖项更新

CVE-2024-21536
http-proxy-middleware 软件包中发现了一个安全漏洞。因为 UnhandledPromiseRejection 错误导致这个软件包的拒绝拒绝服务(DoS)受到微匹配的影响。通过这个漏洞,攻击者可以通过请求某些路径来终止 Node.js 进程并使服务器崩溃。
CVE-2024-37890
在 Node.js WebSocket 库(ws)中发现了一个安全漏洞。带有多个标头超过 'server.maxHeadersCount' 阈值的请求可能会导致 ws 服务器崩溃,从而导致拒绝服务。
CVE-2024-45590
在 body-parser 中发现了一个安全漏洞。此漏洞会在启用 URL 编码时通过特殊设计的有效负载拒绝服务。

6.4.2. RHEL 9 平台 RPM 更新

CVE-2021-47385
在 Linux 内核中,以下漏洞已被解决: hwmon: (w83792d) Fix NULL pointer dereference by delete unnecessary structure 项
CVE-2023-28746
在某些 Intel Atom Processor 的 microcode 中发现了一个漏洞。此问题可能允许恶意参与者实现本地信息披露,从而影响目标系统的数据保密性。
CVE-2023-52658
CVE-2023-52658 是 Linux 内核的 Mellanox MLX5 驱动程序中的一个漏洞,特别是与 switchdev 模式相关的。以前的提交旨在阻止进入 switchdev 模式,因为命名空间不一致导致系统崩溃。要解决这个问题,恢复了有问题的提交,恢复稳定性。用户应将其 Linux 内核更新至包含此重版本的版本,以确保可靠的操作。
CVE-2024-6232
Python 的 tarfile 模块中发现了一个正则表达式拒绝服务(ReDos)漏洞。由于在 tar 文件解析标头时过度跟踪,攻击者可以通过特制的 tar 归档触发拒绝服务。
CVE-2024-9355
Golang FIPS OpenSSL 中发现了一个漏洞。这个漏洞允许恶意用户随机导致在 FIPS 模式中返回零缓冲区长度变量的未初始化缓冲区长度变量。当一个可信计算的 hmac 总和不被信任的输入总和(如果攻击者发送零个缓冲区位于预计算总和)时,也可以强制在非等哈希之间强制出现假的正匹配。  也可以强制派生的密钥为零,而不是无法预测的值。  这可能会对 Go TLS 堆栈造成以下影响。
CVE-2024-27403
在 Linux 内核中,以下漏洞已被解决: netfilter: nft_flow_offload: 在设置流后在路由对象中重置 dst
CVE-2024-34156
Golang 标准库的 encoding/gob 软件包中发现了一个安全漏洞。调用 Decoder.Decoding,包含深度嵌套结构的消息可能会导致因为堆栈耗尽而出现 panic。这是 CVE-2022-30635 的后续。
CVE-2024-35989
这在 Linux 内核的数据移动加速器(DMA)引擎中存在一个漏洞,特别是影响 Intel Data Streaming Accelerator (IDXD)驱动程序。在只有一个活跃 CPU 的系统上,删除 idxd 驱动程序时会出现这个问题。在这种情况下,驱动程序的清理过程会尝试将性能监控单元(PMU)上下文迁移到另一个 CPU。但是,如果没有其他可用的 CPU,这会导致内核 oops-a serious 错误导致系统崩溃。
CVE-2024-36889
在 Linux 内核中,解决了以下漏洞:mptcp: ensure snd_nxt 在连接时正确初始化
CVE-2024-36978
在 Linux 内核的多q qdisc 功能中发现了一个越界写入缺陷。此漏洞允许本地用户崩溃或可能在系统上升级其权限。
CVE-2024-38556
在 Linux 内核中,解决了以下漏洞:net/mlx5: 添加一个超时来获取命令队列 semaphore
CVE-2024-39483
在 Linux 内核中,以下漏洞已被解决: KVM: SVM: SVM: WARN on vNMI + NMI window iff NMIs are outright masked
CVE-2024-39502
在 Linux 内核中,以下漏洞已被解决: ionic: fix use after netif_napi_del ()
CVE-2024-40959
在 Linux 内核中,以下漏洞已被解决:xfrm6: check ip6_dst_idev ()返回值 xfrm6_get_saddr ()
CVE-2024-42079
在 Linux 内核中,以下漏洞已被解决:gfs2: Fix NULL pointer dereference in gfs2_log_flush
CVE-2024-42272
在 Linux 内核中,以下漏洞已被解决:sched: act_ct: 处理 struct zones_ht_key 中的 padding
CVE-2024-42284
在 Linux kernel tipc. tipc_udp_addr2str ()中发现了一个安全漏洞,当 UDP 介质地址无效时,不会返回非零值,这会导致 tipc_media_addr_printf ()中的缓冲区溢出。

6.5. Red Hat Developer Hub 1.3.0

6.5.1. Red Hat Developer Hub 依赖项更新

CVE-2024-21529
dset 软件包中发现了一个安全漏洞。因为用户输入不正确,这个软件包的受影响版本会通过 dset 功能进行 Prototype Pollution vulnerable。此漏洞允许使用内置 Object 属性 proto 注入恶意对象属性,该属性会递归分配给程序中的所有对象。
CVE-2024-24790
Go 语言标准库 net/netip 中发现了一个安全漏洞。当使用映射到 IPv4 地址的 IPv6 时,方法 Is*()(IsPrivate ()、IsPublic ()等)的行为无法正常工作。意外行为可能会导致完整性和机密问题,特别是在使用这些方法控制对资源或数据的访问时。
CVE-2024-24791
Go 中发现了一个安全漏洞。net/http 模块错误处理来自 HTTP/1.1 客户端请求的特定服务器响应。此问题可能会导致连接无效,并导致拒绝服务。
CVE-2024-37891
在 urllib3 中发现了一个安全漏洞,即 Python 的 HTTP 客户端库。在某些配置中,urllib3 不将 Proxy-Authorization HTTP 标头视为执行身份验证材料的一个内容。此问题会导致在跨原始重定向上剥离标头。
CVE-2024-39008
在 fast-loops Node.js 软件包中发现了一个安全漏洞。此漏洞允许攻击者通过传递参数到通过内置属性编写的 objectMergeDeep 函数来改变从受影响的原型继承的所有对象的行为: proto。此问题可能会导致拒绝服务、远程代码执行或跨站点脚本。
CVE-2024-39249
async Node.js 软件包中发现了一个安全漏洞。在解析特殊制作的输入时,可能会通过自动注入函数触发服务(ReDoS)攻击。
CVE-2024-41818
在 currency.js 脚本的 fast-xml-parser 中发现了一个正则表达式拒绝服务(ReDoS)漏洞。通过发送特制的正则表达式输入,远程攻击者可能会导致拒绝服务状况。
CVE-2024-43788
Webpack via AutoPublicPathRuntimeModule 包括了 DOM Clobbering 漏洞。DOM Clobbering 是一种代码重新使用的攻击,攻击者可以首先在网页中通过看似的 benign HTML 标记来嵌入一个非脚本片段,例如,通过发布或评论来将其转换为可执行代码,并利用 gadgets (JS 代码的 JS 代码)将其转换为可执行文件代码。此漏洞可能会导致在包含 Webpack 生成的文件的 Web 站点上跨站点脚本(XSS),并允许用户使用不正确的清理名称或 ID 属性注入某些脚本的 HTML 标签。
CVE-2024-43799
Send 库中发现了一个安全漏洞。此漏洞允许通过传递给 SendStream.redirect ()函数的不受信任的输入来执行远程代码。
CVE-2024-43800
在 service-static 中发现了一个安全漏洞。此问题可能允许通过将 sanitized 不被信任的用户输入传递给 redirect ()来执行不受信任的代码。

6.5.2. RHEL 9 平台 RPM 更新

CVE-2023-52439
Linux 内核的 uio 子系统中发现了一个安全漏洞。uio_open 功能中的 use-after-free 内存缺陷允许本地用户崩溃或在系统上升级其权限。
CVE-2023-52884
在 Linux 内核中,解决了以下漏洞: Input: cyapa - 添加缺少的输入内核锁定来挂起/恢复功能
CVE-2024-6119
OpenSSL 中发现了一个安全漏洞。执行证书名称检查(例如,TLS 客户端检查服务器证书)可能会尝试读取无效的内存地址,从而导致应用程序进程出现异常终止。
CVE-2024-26739
在 Linux 内核中的 net/sched/act_mirred.c 中发现了一个 use-after-free 缺陷。这可能导致崩溃。
CVE-2024-26929
Linux 内核中的 qla2xxx 模块中发现了一个安全漏洞。在某些情况下,fcport 可以被释放两次,因为缺少了 fcport 的检查,从而导致空闲和系统崩溃,从而导致拒绝服务。
CVE-2024-26930
在 Linux 内核中发现了一个漏洞。在 drivers/scsi/qla2xxx/qla_os.c 中的 Linux 内核中存在指针 ha→vp_map 中的一个潜在的双引号。
CVE-2024-26931
Linux 内核中的 qla2xxx 模块中发现了一个安全漏洞。当系统处于内存压力下,且驱动程序无法分配内存来处理电缆拉取的错误恢复时,可以触发 NULL pointer dereference,从而导致系统崩溃和拒绝服务。
CVE-2024-26947
Linux 内核的 ARM 内存管理功能中发现了一个安全漏洞,某些内存布局会导致内核 panic。此漏洞允许指定或更改内存布局导致拒绝服务的攻击者。
CVE-2024-26991
Linux 内核中发现了一个安全漏洞。在检查属性时,可能会发生 lpage_info 溢出。这可能导致崩溃。
CVE-2024-27022
在 Linux 内核中发现了一个安全漏洞。当因为不正确的锁定而调用 fork 系统调用时,可能会出现竞争条件,触发警告,影响系统稳定性,并导致拒绝服务。
CVE-2024-35895
CVE-2024-35895 解决了 Linux 内核的 Berkeley Packet Filter (BPF)子系统中的漏洞,特别是在 sockmap 功能中。当 BPF 追踪程序可在各种中断上下文中执行时出现问题,请尝试从 sockmap 或 sockhash 映射中删除元素。此操作涉及在硬中断上下文中不安全使用的锁定,从而导致因为锁定在版本而导致潜在的死锁。BPF 追踪程序可以在所需锁定不是 hardirq-safe 的中断上下文中从 sockmap/sockhash 映射中删除元素,从而导致可能死锁。
CVE-2024-36016
Linux 内核的 n_gsm 驱动程序中发现了一个漏洞,它会影响 tty 子系统。它会在 GSM 多路中切换基本和高级选项模式时发生,从而导致潜在的越界内存写入。这是因为某些状态变量(如 gsm→lengsm→state )在模式更改时无法正确重置。此问题可能会导致内存崩溃。
CVE-2024-36899
在 Linux 内核中,以下漏洞已被解决: gpiolib: cdev: Fix use after free in lineinfo_changed_notify
CVE-2024-38562
在 Linux 内核中,以下漏洞已被解决: wifi: nl80211: Avoid 地址通过绑定数组索引进行计算
CVE-2024-38570
在 Linux 内核中,以下漏洞已被解决:gfs2: Fix potential glock use-after-free on unmount
CVE-2024-38573
在 Linux 内核中的 cppc_cpufreq_get_rate ()中发现了一个 NULL pointer dereference flaw。此问题可能会导致崩溃。
CVE-2024-38601
在 Linux 内核中,解决了以下漏洞: ring-buffer: Fix a races between the readers and resize checks
CVE-2024-38615
在 Linux 内核中,解决了以下漏洞:cpufreq: exit ()回调是可选的
CVE-2024-39331
Emacs 中发现了一个安全漏洞。当打开 Org 模式文件时,或启用了 Org 模式 时,可以不提示执行任意 shell 命令,当 Emacs 用作电子邮件客户端时,可以在预览电子邮件附件时触发此问题。
CVE-2024-40984
在 Linux 内核中,以下漏洞已被解决: ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs。您的内核非常正常"。
CVE-2024-41071
在扫描 SSID 时,Linux 内核的 mac80211 子系统中发现了一个越界缓冲区溢出。使用越界数组索引进行寻址计算可能会导致攻击者制作漏洞,从而完全破坏系统。
CVE-2024-42225
Linux 内核的 MediaTek WiFi 中发现了一个潜在的安全漏洞,它被重新使用未初始化的数据。此漏洞允许本地用户获得潜在的数据未经授权访问。
CVE-2024-42246
在 Linux 内核中,以下漏洞已被解决:net、sunrpc: Remap EPERM (如果 xs_tcp_setup_socket 中连接失败)
CVE-2024-45490
libexpat 的 xmlparse.c 组件中发现了一个安全漏洞。通过为 XML_ParseBuffer 功能提供负长度值,攻击者可以利用这个漏洞导致 XML 数据处理不正确。
CVE-2024-45491
在 xmlparse.c 中的 libexpat 的内部 dtdCopy 函数中发现了一个问题,在 UINT_MAX 等于 SIZE_MAX 的 32 位平台上可以有一个整数溢出。
CVE-2024-45492
在 xmlparse.c 中的 libexpat 的内部 nextScaffoldPart 功能中发现了一个安全漏洞。在 32 位平台上,它可以有一个整数溢出,其中 UINT_MAX 等于 SIZE_MAX。

第 7 章 已知问题

本节列出了 Red Hat Developer Hub 1.3 中已知的问题。

存储库可能会从各种源添加到 Developer Hub (比如在 app-config 文件中静态),或者在启用 GitHub 发现时动态添加。按照设计,批量导入插件将仅跟踪可从配置的 GitHub 集成访问的存储库。当 Bulk Import 和 GitHub Discovery 插件都被启用时,后者发现的存储库可能会在 Bulk Import 页面中列出。但是,尝试从 Bulk Import Jobs 中删除发现插件添加的存储库无效,因为从此存储库注册的任何实体可能仍然存在于 Developer Hub 目录中。不幸的是还没有已知的临时解决方案。

其他资源

7.2. OIDC 刷新令牌行为

当使用 Red Hat Single-Sign On 或 Red Hat Build of Keycloak 作为 OIDC 供应商时,默认的访问令牌生命周期设置为 5 分钟,这与 Developer Hub 中设置的令牌刷新宽限期对应。此 5 分钟宽限期是触发新刷新令牌调用的阈值。由于令牌始终接近过期,因此频繁刷新令牌请求会导致性能问题。

此问题将在 1.5 版本中解决。要防止性能问题,请通过将 Configure > Realm Settings > Access Token Lifespan 设置为大于五分钟(最好是 10 或 15 分钟)来增加 Red Hat Single-Sign On 或 Red Hat Build of Keycloak 服务器中的生命周期。

其他资源

7.3. 批量导入:添加的存储库计数不正确

只有前 20 个存储库(按字母顺序)可以在 Bulk Import Added Repositories 页面中显示。另外,显示 Added Repositories 的数量可能会出现错误。在以后的发行版本中,我们计划使用正确的分页来解决此问题。同时,作为一种临时解决方案,搜索仍可适用于所有 Added Repositories。因此,您仍然可以搜索任何 Added Repository,并使其在表中列出。

其他资源

7.4. 拓扑插件权限不会在 RBAC 前端 UI 中显示

仅与前端插件关联的权限不会显示在 UI 中,因为它们需要后端插件来公开权限框架已知的端点。作为临时解决方案,您可以使用 CSV 文件或直接调用 RBAC 后端插件的 REST API 来应用这些权限。受影响的插件包括 Topology (topology.view.read)、Tekton (tekton.view.read), ArgoCD (argocd.view.read)和 Quay (quay.view.read)。

其他资源

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部