Knative 后台安全 ¶
发布日期:2024-09-23
Knative 后台安全 ¶
作者:Ali Ok,红帽首席软件工程师
新增功能 ¶
在之前的 博客文章 中,我们讨论了如何将 Knative 集成到 Backstage。在这篇博客文章中,我们将讨论如何保护 Knative 事件网格插件与后端之间的通信。
以前,后端使用具有对 Kubernetes 集群的完全访问权限的服务帐户运行。这并不安全,因为后端可以访问集群中的任何资源。此外,后端没有身份验证机制,因此任何可以访问后端的人都可以访问 Kubernetes 资源,尽管它们只是只读的。
为了解决这些问题,我们做了两件事
- 后端现在使用具有有限权限的服务帐户。
- 后端现在需要一个令牌来进行身份验证(将其传递给 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 文档 以获取更多信息。
有关如何创建 ServiceAccount
、ClusterRole
、ClusterRoleBinding
、Secret
以及该 Secret
的令牌的文档,请参见 插件的自述文件。
演示和快速入门 ¶
如果您想查看插件的实际运行情况,可以 安装 您 Kubernetes 集群中的后端和 Backstage 实例中的插件。
但是,要快速了解插件,您可以查看 演示视频。演示视频是使用 Ali Ok 的 演示存储库 中提供的快速入门录制完成的。
欢迎贡献 ¶
我们正在寻找贡献者来帮助我们改进插件和后端。如果您有兴趣贡献,请查看插件存储库的 自述文件。文档中介绍了如何启动后端、如何安装插件以及如何修改插件。
有一些问题被标记为“适合初学者”,我们希望得到您的帮助。如果您有兴趣贡献,请查看 适合初学者的问题。
联系 ¶
如果您有任何疑问或反馈,请随时与我们联系。您可以在 CNCF Slack 中的 #knative 频道中找到我们。