跳至內容

Knative Backstage 安全性

發佈於:2024-09-23

Knative Backstage 安全性

作者:Ali Ok,Red Hat 首席軟體工程師

有什麼新功能?

在之前的部落格文章中,我們討論了如何將 Knative 與 Backstage 整合。在這篇部落格文章中,我們將討論如何保護 Knative Event Mesh 外掛程式和後端之間的通訊。

先前,後端以具有完整 Kubernetes 叢集存取權的服務帳戶執行。這並不安全,因為後端可以存取叢集中的任何資源。此外,後端沒有任何身份驗證機制,因此任何可以存取後端的人都可以存取 Kubernetes 資源,儘管它們僅是唯讀的。

為了解決這些問題,我們做了兩件事

  1. 後端現在使用具有有限權限的服務帳戶。
  2. 後端現在需要一個權杖來驗證(將其傳遞到 API 伺服器),以便處理來自外掛程式的每個請求。

它是如何運作的?

Backstage 安全性

與其他 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 }

tokenKNATIVE_EVENT_MESH_TOKEN 環境變數取得。Backstage 支援組態檔案中的環境變數,因此您可以在啟動 Backstage 實例之前將權杖設定為環境變數。實際上,Backstage 還有其他機制,包括組態檔案、檔案包含等等。您可以查看Backstage 文件以獲取更多資訊。

如何在外掛程式的讀我檔案中記錄如何建立 ServiceAccountClusterRoleClusterRoleBindingSecret 和該 Secret 的權杖。

示範和快速入門

如果您想查看外掛程式的實際運作情況,您可以在您的 Kubernetes 叢集中安裝後端,並在您的 Backstage 實例中安裝外掛程式。

但是,為了更快地了解外掛程式,您可以查看示範影片。示範影片是使用 Ali Ok 的示範儲存庫中提供的快速入門錄製的。

歡迎投稿

我們正在尋找貢獻者來幫助我們改進外掛程式和後端。如果您有興趣貢獻,請查看外掛程式儲存庫的讀我檔案。如何在其中記錄啟動後端、安裝外掛程式以及修改外掛程式。

有一些問題被標記為適合新手入門,我們正在尋求協助。如果您有興趣貢獻,請查看適合新手入門的問題

聯絡方式

如果您有任何問題或意見回饋,請隨時與我們聯繫。您可以在CNCF Slack#knative 頻道中找到我們。

我們使用分析和 Cookie 來了解網站流量。關於您使用我們網站的資訊會與 Google 分享以用於該目的。了解更多。