新聞中心
用戶使用 ?kubectl?、客戶端庫(kù)或通過發(fā)出 REST 請(qǐng)求來訪問 Kubernetes API。 human用戶和 Kubernetes 服務(wù)帳戶都可以被授權(quán)訪問 API。 當(dāng)請(qǐng)求到達(dá) API 時(shí),它會(huì)經(jīng)歷幾個(gè)階段,如下圖所示:

專注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)岫巖免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
運(yùn)輸安全
在典型的 Kubernetes 集群中,API 服務(wù)于端口 443,受 TLS 保護(hù)。 API 服務(wù)器提供一個(gè)證書。 該證書可以使用私有證書頒發(fā)機(jī)構(gòu) (CA) 進(jìn)行簽名,也可以基于鏈接到公認(rèn) CA 的公鑰基礎(chǔ)設(shè)施進(jìn)行簽名。
如果您的集群使用私有證書頒發(fā)機(jī)構(gòu),您需要將該 CA 證書的副本配置到客戶端的 ?~/.kube/config? 中,以便您可以信任連接并確信它沒有被攔截。
您的客戶端可以在此階段出示 TLS 客戶端證書。
驗(yàn)證
建立 TLS 后,HTTP 請(qǐng)求將移至身份驗(yàn)證步驟。這在圖中顯示為步驟 1。集群創(chuàng)建腳本或集群管理員將 API 服務(wù)器配置為運(yùn)行一個(gè)或多個(gè) Authenticator 模塊。
身份驗(yàn)證步驟的輸入是整個(gè) HTTP 請(qǐng)求;但是,它通常會(huì)檢查標(biāo)頭和/或客戶端證書。
身份驗(yàn)證模塊包括客戶端證書、密碼和普通令牌、引導(dǎo)令牌和 JSON Web 令牌(用于服務(wù)帳戶)。
可以指定多個(gè)認(rèn)證模塊,依次嘗試每一個(gè),直到其中一個(gè)成功。
如果請(qǐng)求無法通過身份驗(yàn)證,則會(huì)以 HTTP 狀態(tài)代碼 401 拒絕該請(qǐng)求。否則,用戶將作為特定用戶名進(jìn)行身份驗(yàn)證,并且該用戶名可供后續(xù)步驟在其決策中使用。一些身份驗(yàn)證器還提供用戶的組成員身份,而其他身份驗(yàn)證器不提供。
雖然 Kubernetes 使用用戶名進(jìn)行訪問控制決策和請(qǐng)求日志記錄,但它沒有用戶對(duì)象,也沒有在其 API 中存儲(chǔ)用戶名或其他有關(guān)用戶的信息。
授權(quán)
在請(qǐng)求被驗(yàn)證為來自特定用戶之后,該請(qǐng)求必須被授權(quán)。 這在圖中顯示為步驟 2。
請(qǐng)求必須包含請(qǐng)求者的用戶名、請(qǐng)求的操作以及受該操作影響的對(duì)象。 如果現(xiàn)有策略聲明用戶有權(quán)完成所請(qǐng)求的操作,則該請(qǐng)求被授權(quán)。
例如,如果 Bob 具有以下策略,那么他只能讀取命名空間 ?projectCaribou ?中的 pod:
{
"apiVersion": "abac.authorization.kubernetes.io/v1beta1",
"kind": "Policy",
"spec": {
"user": "bob",
"namespace": "projectCaribou",
"resource": "pods",
"readonly": true
}
}如果 Bob 發(fā)出以下請(qǐng)求,則該請(qǐng)求被授權(quán),因?yàn)樵试S他讀取 ?projectCaribou ?命名空間中的對(duì)象:
{
"apiVersion": "authorization.K8S.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"resourceAttributes": {
"namespace": "projectCaribou",
"verb": "get",
"group": "unicorn.example.org",
"resource": "pods"
}
}
}如果 Bob 請(qǐng)求寫入(?create?或?update?)?projectCaribou ?命名空間中的對(duì)象,他的授權(quán)將被拒絕。如果 Bob 請(qǐng)求讀?。?get?)不同命名空間(例如 ?projectFish?)中的對(duì)象,那么他的授權(quán)將被拒絕。
Kubernetes 授權(quán)要求您使用通用 REST 屬性與現(xiàn)有的組織范圍或云提供商范圍的訪問控制系統(tǒng)進(jìn)行交互。使用 REST 格式很重要,因?yàn)檫@些控制系統(tǒng)可能會(huì)與 Kubernetes API 之外的其他 API 交互。
Kubernetes 支持 ABAC 模式、RBAC 模式、Webhook 模式等多種授權(quán)模塊。當(dāng)管理員創(chuàng)建集群時(shí),他們配置應(yīng)該在 API 服務(wù)器中使用的授權(quán)模塊。如果配置了多個(gè)授權(quán)模塊,Kubernetes 會(huì)檢查每個(gè)模塊,如果有任何模塊授權(quán)請(qǐng)求,則請(qǐng)求可以繼續(xù)。如果所有模塊都拒絕該請(qǐng)求,則該請(qǐng)求被拒絕(HTTP 狀態(tài)代碼 403)。
準(zhǔn)入控制
準(zhǔn)入控制模塊是可以修改或拒絕請(qǐng)求的軟件模塊。除了授權(quán)模塊可用的屬性外,準(zhǔn)入控制模塊還可以訪問正在創(chuàng)建或修改的對(duì)象的內(nèi)容。
準(zhǔn)入控制器對(duì)創(chuàng)建、修改、刪除或連接(代理)對(duì)象的請(qǐng)求進(jìn)行操作。準(zhǔn)入控制器不會(huì)對(duì)僅讀取對(duì)象的請(qǐng)求進(jìn)行操作。配置多個(gè)準(zhǔn)入控制器時(shí),按順序調(diào)用。
這在圖中顯示為步驟 3。
與身份驗(yàn)證和授權(quán)模塊不同,如果任何準(zhǔn)入控制器模塊拒絕,則請(qǐng)求會(huì)立即被拒絕。
除了拒絕對(duì)象,準(zhǔn)入控制器還可以為字段設(shè)置復(fù)雜的默認(rèn)值。
一旦請(qǐng)求通過了所有準(zhǔn)入控制器,就會(huì)使用相應(yīng) API 對(duì)象的驗(yàn)證例程對(duì)其進(jìn)行驗(yàn)證,然后將其寫入對(duì)象存儲(chǔ)(如步驟 4 所示)。
Auditing
Kubernetes auditing提供了一組與安全相關(guān)的、按時(shí)間順序排列的記錄,記錄了集群中的操作順序。 集群審核用戶、使用 Kubernetes API 的應(yīng)用程序以及控制平面本身生成的活動(dòng)。
API 服務(wù)器端口和 IP
前面的討論適用于發(fā)送到 API 服務(wù)器安全端口的請(qǐng)求(典型情況)。 API 服務(wù)器實(shí)際上可以在 2 個(gè)端口上服務(wù):
默認(rèn)情況下,Kubernetes API 服務(wù)器在 2 個(gè)端口上提供 HTTP:
- 本地主機(jī)端口:
- 用于測(cè)試和引導(dǎo),以及主節(jié)點(diǎn)的其他組件(調(diào)度程序、控制器管理器)與 API 對(duì)話
- 沒有 TLS
- 默認(rèn)為 8080 端口
- 默認(rèn) IP 是 localhost,使用 ?
--insecure-bind-address? 標(biāo)志進(jìn)行更改。 - 請(qǐng)求繞過身份驗(yàn)證和授權(quán)模塊。
- 由準(zhǔn)入控制模塊處理的請(qǐng)求。
- 受需要擁有主機(jī)訪問權(quán)限的保護(hù)
- “安全端口”:
- 盡可能使用
- 使用 TLS。 使用 ?
--tls-cert-file? 設(shè)置證書,使用 ?--tls-private-key-file? 標(biāo)志設(shè)置密鑰。 - 默認(rèn)為端口 6443,使用 ?
--secure-port? 標(biāo)志進(jìn)行更改。 - 默認(rèn) IP 是第一個(gè)非本地主機(jī)網(wǎng)絡(luò)接口,使用 ?
--bind-address? 標(biāo)志進(jìn)行更改。 - 由身份驗(yàn)證和授權(quán)模塊處理的請(qǐng)求。
- 由準(zhǔn)入控制模塊處理的請(qǐng)求。
- 身份驗(yàn)證和授權(quán)模塊運(yùn)行。
本文題目:創(chuàng)新互聯(lián)kubernetes教程:KubernetesAPI訪問控制
文章地址:http://m.5511xx.com/article/djcsgpd.html


咨詢
建站咨詢
