簡體   English   中英

如何在 k8s 中為非服務帳戶創建不記名令牌

[英]How to create a bearer token for a non service account in k8s

我對 kubernetes 相當陌生,我正在嘗試創建對其特定命名空間的訪問權限有限的普通用戶。

我已遵循文檔證書簽名請求/普通用戶,並且我已經成功創建了一個測試用戶,並且我能夠限制用戶的權限。 我試圖了解我是否可以為該用戶提供對儀表板的訪問權限,並且只能看到他自己的資源,例如只能看到他的命名空間。

通過我的過程,我發現所有文檔都提到您需要有一個服務帳戶才能訪問儀表板創建示例用戶

然后我繼續閱讀服務帳戶管理服務帳戶 “用戶帳戶是為人類服務的。服務帳戶是為在 pod 中運行的進程提供的。”

在社區的一個相關問題中, 有沒有辦法在 Kubernetes 中為普通用戶創建令牌? . 同樣,這個問題的答案是創建一個服務帳戶,但正如官方文檔中所記錄的那樣,我們應該將服務帳戶用於在 pod 上運行的進程。

我對這個話題有點困惑,如果用戶(非管理員)應該能夠訪問儀表板並查看與他綁定的角色相同的資源,是否有人可以分享最佳實踐和更多信息?

創建bearer token並連接到Kubernetes Dashboard的最常見方法是使用ServiceAccount

但是,據我所知,如果您想為User Account創建不Bearer Token ,您必須使用Static 令牌文件

在您希望允許user account訪問Kubernetes Dashboard的情況下,您必須考慮使用授權 header選項。

通過 HTTP 訪問 Dashboard 時,使用授權 header 是使 Dashboard 充當用戶的唯一方法。 請注意,由於普通的 HTTP 流量容易受到 MITM 攻擊,因此存在一些風險。

要使儀表板使用授權 header,您只需在對儀表板的每個請求中傳遞 Authorization: Bearer。 這可以通過在儀表板前面配置反向代理來實現。 代理將負責與身份提供者進行身份驗證,並將請求 header 中生成的令牌傳遞給儀表板。 請注意,Kubernetes API 服務器需要正確配置才能接受這些令牌。

出於測試目的,您可以使用允許您修改請求標頭的插件。

邊注

Authorization header will not work if Dashboard is accessed through API server proxy 訪問Accessing Dashboard指南中描述的kubectl proxyAPI Server訪問儀表板的方式都不起作用。 這是因為一旦請求到達 API 服務器,所有額外的標頭都會被丟棄。

reverse proxy的例子是Kublr 您可以在 Kubernetes 博客中的 Leveraging Client Certificates and Bearer Tokens to Authenticate 中找到更好的描述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM