跳至内容

Knative 后台安全

发布日期:2024-09-23

Knative 后台安全

作者:Ali Ok,红帽首席软件工程师

新增功能

在之前的 博客文章 中,我们讨论了如何将 Knative 集成到 Backstage。在这篇博客文章中,我们将讨论如何保护 Knative 事件网格插件与后端之间的通信。

以前,后端使用具有对 Kubernetes 集群的完全访问权限的服务帐户运行。这并不安全,因为后端可以访问集群中的任何资源。此外,后端没有身份验证机制,因此任何可以访问后端的人都可以访问 Kubernetes 资源,尽管它们只是只读的。

为了解决这些问题,我们做了两件事

  1. 后端现在使用具有有限权限的服务帐户。
  2. 后端现在需要一个令牌来进行身份验证(将其传递给 API 服务器),用于来自插件的每个请求。

工作原理

后台安全

与其他 Backstage 插件类似,我们希望插件管理员通过设置必要的项(如后端 URL 和令牌)来配置插件。这与 Backstage Kubernetes 插件 的方法类似,用户需要提供 URL 和令牌。

令牌存储在 Backstage 配置中,并在每个请求时传递给后端。后端使用此令牌对 Kubernetes API 服务器进行身份验证。该令牌是服务帐户令牌,具有列出集群中 Knative 事件资源的必要权限。

...
catalog:
  providers:
    knativeEventMesh:
      dev:
        token: '${KNATIVE_EVENT_MESH_TOKEN}'
        baseUrl: "http://eventmesh-backend.knative-eventing.svc:8080"
        schedule: # optional; same options as in TaskScheduleDefinition
          # supports cron, ISO duration, "human duration" as used in code
          frequency: { minutes: 1 }
          # supports ISO duration, "human duration" as used in code
          timeout: { minutes: 1 }

token 来自 KNATIVE_EVENT_MESH_TOKEN 环境变量。Backstage 支持配置文件中的环境变量,因此您可以在启动 Backstage 实例之前将令牌设置为环境变量。实际上,Backstage 有其他机制,包括配置文件、文件包含等。您可以查看 Backstage 文档 以获取更多信息。

有关如何创建 ServiceAccountClusterRoleClusterRoleBindingSecret 以及该 Secret 的令牌的文档,请参见 插件的自述文件

演示和快速入门

如果您想查看插件的实际运行情况,可以 安装 您 Kubernetes 集群中的后端和 Backstage 实例中的插件。

但是,要快速了解插件,您可以查看 演示视频。演示视频是使用 Ali Ok 的 演示存储库 中提供的快速入门录制完成的。

欢迎贡献

我们正在寻找贡献者来帮助我们改进插件和后端。如果您有兴趣贡献,请查看插件存储库的 自述文件。文档中介绍了如何启动后端、如何安装插件以及如何修改插件。

有一些问题被标记为“适合初学者”,我们希望得到您的帮助。如果您有兴趣贡献,请查看 适合初学者的问题

联系

如果您有任何疑问或反馈,请随时与我们联系。您可以在 CNCF Slack 中的 #knative 频道中找到我们。

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享以达到该目的。 了解更多。