在 K8s 的管理過(guò)程中,像 Secret 這種資源并不好維護(hù),KubeSeal 提供了一種相對(duì)簡(jiǎn)單的方式來(lái)對(duì)原始 Secret 資源進(jìn)行加密,并通過(guò)控制器進(jìn)行解密,以此來(lái)規(guī)避 Secret 泄露風(fēng)險(xiǎn)。
安裝
安裝 KubeSeal
$wgethttps://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.0/kubeseal-0.18.0-linux-amd64.tar.gz $tar-xvfkubeseal-0.18.0-linux-amd64.tar.gz $cpkubeseal/usr/local/bin/ $kubeseal--version
安裝controller
$kubectlapply-fhttps://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.0/controller.yaml
執(zhí)行上述命令之后會(huì)在 kube-system 命名空間下啟動(dòng)一個(gè)控制器 Pod:
$kgetpod-nkube-system|grepseal sealed-secrets-controller-b9fb75d85-k4csm1/1Running07h28m
Pod 啟動(dòng)之后,使用端口轉(zhuǎn)發(fā)映射到本地:
$kubectl-nkube-systemport-forwardsvc/sealed-secrets-controller8080:8080
使用方式
生成加密文件
首先在本地創(chuàng)建一個(gè)名為 secret-example.yaml 的文件,編碼前的 secret 字段為:mysupersecret
apiVersion:v1 kind:Secret metadata: name:secret-example data: secret:bXlzdXBlcnNlY3JldAo=
使用如下命令將 secret-example.yaml,轉(zhuǎn)換為加密后的文件 sealed-secret-example.yaml
$kubeseal--secret-filesecret-example.yaml--sealed-secret-filesealed-secret-example.yaml
sealed-secret-example.yaml 的內(nèi)容如下,spec.encryptedData.secret 就是加密后的內(nèi)容:
apiVersion:bitnami.com/v1alpha1 kind:SealedSecret metadata: creationTimestamp:null name:secret-example namespace:kube-system spec: encryptedData: secret:AgB1ZZg8+J+0HLymOQZdTfWVQZiNkhm5X6WULJuBAAEaQQNhM8i2TV2I1SgKT4sUOCRv90XA1oeFld3XoGPjvYE3leOD1cvK1dDVqno6mNLRziokISk/9fB3cVE2GVgyCud//M53xNpVemDufgsJS2q/KGIOeNEijk9ZM2FaKoLDwtPaVNL0NfmC2xne2XtWJp+/eMOREhbubQhnj5M/Se75axazviuDNf6Ss9fAuR38Msd5DXnKBtyrckEHSa8TDn8ErssOh0ogX14e0/ThN3EWJecSBtx7Xfd0m90+vjmvWevMag442349aquR/qLo0mg40mhcCqSBw/MjaIGZ2F5XRufG1WEP43OgLMTixN2lLSU3eYTrv5t075taI9WJgoOl0DD8UA74EMpX7RMKTiXD6C0XngKmMKg5fUK7JNLFfwHMRPi4zNTwJa9ViDyD0iAJrGGbmMso/nHEtwOtrLE5Rrf0kLQ5N6Lj57gOBdqu903/vDM4Jm695GvEWL2aR3ShOxasHCuZeXj8Q5+KYWeF9sySiJH8bwEtaw6x7j9AxBOwjxWYD0Jvj9KhtlqBa4okSDc3bcgRKGhsSXQx6jOumI5rj+V542hkB6Z8JOtJ17VmzR6XDQDmqSl1FqqwKD5n5yUy5Kf6pJYBnsgKn3TzesQ6JfQbyRLTh1Pn3odOYCnp+Ixbd0Tgn0n5m0KO3RX0hiwGoe0hObIZcsF36g== template: data:null metadata: creationTimestamp:null name:secret-example namespace:kube-system
可以將加密后的文件保存到 Gitlab。
創(chuàng)建加密文件:
$kcreate-fsealed-secret-example.yaml sealedsecret.bitnami.com/secret-examplecreated $kgetsealedsecrets.bitnami.com NAMEAGE secret-example6s
在創(chuàng)建完加密文件之后,Controller 會(huì)解密并生成對(duì)應(yīng)的 secret:
$kgetsecrets|grepsecret-example secret-exampleOpaque12m15s
查看由 Controller 生成的 secret 資源內(nèi)容,可以看到 data.secret 與上面創(chuàng)建的 secret-example.yaml 文件內(nèi)容一致:
$kgetsecretsecret-example-oyaml apiVersion:v1 data: secret:bXlzdXBlcnNlY3JldAo= kind:Secret metadata: creationTimestamp:"2022-06-10T0040Z" name:secret-example namespace:kube-system ownerReferences: -apiVersion:bitnami.com/v1alpha1 controller:true kind:SealedSecret name:secret-example uid:57a5b691-9bb5-4dac-800a-1a1baa878299 resourceVersion:"675560" uid:e0db31ad-082b-4596-9fd0-28cc810d86f4 type:Opaque
注:SealedSecret 和對(duì)應(yīng)的 secret 資源必須位于相同的命名空間
TIPs
kubeseal 支持如下API:
Route | Description |
---|---|
/healthz | Health check route useful for the readiness and liveness probes and for creating an external probe; for example with blackbox exporter. |
/metrics | Endpoint for the Prometheus to retrieve the controller’s metrics. |
/v1/verify | Validates a secret. |
/v1/rotate | Rotates the secret. |
/v1/cert.pem | Retrieves the public certificate. |
上例中 Controller 用的證書(shū)是自己生成的,還可以指定自己的證書(shū),更方便遷移和管理
使用 KubeSeal 可能會(huì)有一種困惑,如果用戶(hù)直接掛載其他命名空間的 secret,那么這樣可能會(huì)導(dǎo)致 secret 泄露。官方對(duì)此有作解釋?zhuān)缈梢酝ㄟ^(guò) RBAC 限制用戶(hù)可以訪問(wèn)的命名空間以及資源類(lèi)型。
-
控制器
+關(guān)注
關(guān)注
114文章
17048瀏覽量
183519 -
編碼
+關(guān)注
關(guān)注
6文章
967瀏覽量
55617 -
端口
+關(guān)注
關(guān)注
4文章
1046瀏覽量
32821
原文標(biāo)題:如何使用 KubeSeal 高效加密和管理 Kubernetes 集群的 Secret
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
深圳特信屏蔽器|4G5G手機(jī)信號(hào)屏蔽器:如何高效應(yīng)對(duì)信息泄露風(fēng)險(xiǎn).
STM32系列單片機(jī)可以讓自己的GPIO去控制自己的RESET嗎?有什么風(fēng)險(xiǎn)?可以規(guī)避嗎?
關(guān)于手機(jī)串號(hào)泄露會(huì)造成什么風(fēng)險(xiǎn)
什么是錫須?錫須的危害是什么?如何規(guī)避錫須?
怎樣選擇合適的服務(wù)器規(guī)避風(fēng)險(xiǎn)
高危預(yù)警!雅虎30億用戶(hù)數(shù)據(jù)被竊,千萬(wàn)中國(guó)用戶(hù)信息遭遇危機(jī)
可穿戴藍(lán)牙設(shè)備存在泄露隱私的風(fēng)險(xiǎn)?
智能電視存在隱私泄露風(fēng)險(xiǎn) 這個(gè)問(wèn)題不容忽視
人臉識(shí)別技術(shù)成常態(tài)防疫好幫手,謹(jǐn)慎信息泄露風(fēng)險(xiǎn)等
“刷臉”如何規(guī)避安全風(fēng)險(xiǎn)?
【openssl】從openssl的常用接口淺談【內(nèi)存泄漏】

【開(kāi)獎(jiǎng)】無(wú)懼可穿戴產(chǎn)品數(shù)據(jù)泄露風(fēng)險(xiǎn) 安全芯片護(hù)您周全

評(píng)論