容器服務(wù)Kubernetes版ACK集成KMS憑據(jù)
容器服務(wù)安裝憑據(jù)Kubernetes插件(ack-secret-manager)后,您可以在插件中配置KMS憑據(jù)名稱,插件將定期從KMS中讀取最新的憑據(jù)值,緩存在Kubernetes集群中。從而可以按照使用Kubernetes原生Secret的方式使用托管在KMS中的動(dòng)態(tài)Secret,避免敏感數(shù)據(jù)在應(yīng)用開(kāi)發(fā)構(gòu)建流程中的傳播和泄露。
操作步驟
安裝憑據(jù)Kubernetes插件。
容器服務(wù)Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)
登錄容器服務(wù)管理控制臺(tái),在應(yīng)用市場(chǎng)中定位到ack-secret-manager。
在ack-secret-manager頁(yè)面右上角,單擊一鍵部署。
在彈出面板中,選擇集群、命名空間和發(fā)布名稱可保持默認(rèn)值,然后單擊下一步。
在參數(shù)配置頁(yè)面,設(shè)置相應(yīng)參數(shù),然后單擊確定。
參數(shù)
說(shuō)明
示例值
command.backend
對(duì)接的外部密鑰管理系統(tǒng)后端。當(dāng)前僅支持阿里云KMS,配置為alicloud-kms。
alicloud-kms
command.region
從指定地域獲取secret憑據(jù)。
cn-hangzhou
command.disablePolling
關(guān)閉從KMS后端自動(dòng)同步拉取最新的憑據(jù)內(nèi)容。默認(rèn)false。
false
command.pollingInterval
從KMS后端同步存量secret實(shí)例的間隔時(shí)間。
120s
創(chuàng)建成功后,會(huì)自動(dòng)跳轉(zhuǎn)到目標(biāo)集群的ack-secret-manager頁(yè)面,檢查安裝結(jié)果。若下圖中所有資源創(chuàng)建成功,則表明組件安裝成功。
容器服務(wù)自建Kubernetes集群
訪問(wèn)ack-secret-manager安裝。
在KMS中創(chuàng)建憑據(jù)。
支持所有憑據(jù)類型。具體操作,請(qǐng)參見(jiàn)管理及使用通用憑據(jù)、管理及使用RAM憑據(jù)、管理及使用RDS憑據(jù)或管理及使用ECS憑據(jù)。
在憑據(jù)Kubernetes插件中設(shè)置訪問(wèn)KMS的權(quán)限。
通過(guò)Shared KMS訪問(wèn)
適用于KMS實(shí)例中的憑據(jù),或非KMS實(shí)例中的憑據(jù)(即舊版本KMS中,無(wú)需購(gòu)買KMS實(shí)例也能創(chuàng)建的憑據(jù))。
在RAM創(chuàng)建可用于訪問(wèn)KMS憑據(jù)的自定義權(quán)限策略。策略內(nèi)容示例如下,您也可以根據(jù)需要按需設(shè)置,具體請(qǐng)參考使用RAM實(shí)現(xiàn)對(duì)資源的訪問(wèn)控制。
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" }
為容器服務(wù)工作負(fù)載或Pod授權(quán)。
方式
在集群對(duì)應(yīng)的 WorkerRole中添加權(quán)限
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
定位到目標(biāo)集群,單擊操作列的詳情。
在集群資源頁(yè)簽,單擊Worker RAM角色中對(duì)應(yīng)的命名為KubernetesWorkerRole-******的角色名稱,會(huì)自動(dòng)跳轉(zhuǎn)到RAM角色對(duì)應(yīng)的控制臺(tái)頁(yè)面,綁定上面創(chuàng)建的自定義策略。
通過(guò)RRSA實(shí)現(xiàn)Pod維度的授權(quán)
通過(guò)KMS實(shí)例Endpoint訪問(wèn)({kmsInstanceId}.cryptoservice.kms.aliyuncs.com)
僅適用于KMS實(shí)例中的憑據(jù)。如果您使用KMS實(shí)例管理憑據(jù),并且希望訪問(wèn)KMS的網(wǎng)絡(luò)限制在您的VPC內(nèi),推薦使用本方式。具體操作,請(qǐng)參見(jiàn)創(chuàng)建應(yīng)用接入點(diǎn)。
說(shuō)明通過(guò)KMS實(shí)例Endpoint訪問(wèn)前,請(qǐng)將容器服務(wù)工作負(fù)載或Pod的VPC綁定到KMS實(shí)例。具體操作,請(qǐng)參見(jiàn)同地域多VPC訪問(wèn)KMS實(shí)例。
在憑據(jù)Kubernetes插件中設(shè)置protocol(訪問(wèn)KMS的協(xié)議)、endpoint(接入點(diǎn))、client key(身份認(rèn)證方式)、SecretName(憑據(jù)名稱)等信息。詳細(xì)內(nèi)容,請(qǐng)參見(jiàn) ack-secret-manager。
后續(xù)操作
為了進(jìn)一步保護(hù)從KMS讀取后緩存在Kubernetes集群中的Secret,您可以對(duì)Kubernetes集群Secret進(jìn)行一鍵加密。具體操作,請(qǐng)參見(jiàn)使用KMS一鍵加密Kubernetes集群Secret。
一鍵加密也可以加密保護(hù)Kubernetes集群中的其他靜態(tài)Secret,這些靜態(tài)Secret通常為系統(tǒng)Secret。