本篇是一個 Kubernetes 的入門介紹文,探討 Kubernetes 內要如何透過 SSL/TLS 憑證來加強應用程式之間的連線。
本篇文章不使用任何第三方套件,反而是從 Kubernetes 內建的資源功能出發去探討,理解 Kubernetes 的能力與極限其實長久下來對於評估各種專案都滿有幫助的。
Kubernetes 的 Secret 除了使用 base64 作為編碼技術外,其實本身也提供不少類型方便管理人員使用,譬如本文提到的 tls 類型, container registry credential 以及最廣泛使用的 generic 等。
Secret(tls類型)本身創建時會吃兩個參數,分別是 tls.crt 與 tls.key,接者這類型的 secret 可以與 ingress 進行整合,將 TLS 給掛載到 Ingress 物件中並且同時執行 TLS Termination,讓 Ingres 與外部連線使用 HTTPS 而內部服務則使用 HTTP 來溝通。
文章中提到如何透過 openssl 創建一個 self-signed 的憑證,並且針對 self-signed 的特性進行討論,其列出了四個 self-signed 的缺點
1. 瀏覽器連接到這些 self-signed 憑證的網站時都會露出警告告知使用者,因此這類型的憑證不適合任何正式生產環境使用
2. 因為 self-signed 就是開發者自行創造,缺少第三方可信任機關的認證,因此惡意攻擊者可以輕鬆換掉服務上的簽證,畢竟瀏覽器本來就覺得簽證有問題,無法分辨到底是先前的自簽憑證還是被替換的憑證。
3. 第三方CA都會針對發行的憑證給予一些保固與服務,這部分是自簽沒有辦法擁有的
4. 愈來愈多的使用者會不太願意瀏覽與使用沒有合法且信任憑證的網站
作者提到 Kubernetes 內部雖然有一個 CA,但是不推薦把任何服務相關的憑證都跟其扯上關係,
因為該 CA 是給 Kubernetes 內部控制平面使用的,譬如 kubelet, API Server, Controller, Scheduler 等元件彼此溝通中間使用的。
文章最後作者示範透過 cfssl 的該指令幫一個內部服務創建一個憑證,由於內部服務會透過 Kubernetes Service 提供的 DNS 來存取,因此創建憑證時會於 CN 欄位補上 alternative 的名稱,把 service.svc.... 之類的全部都補上。
https://medium.com/avmconsulting-blog/how-to-secure-applications-on-kubernetes-ssl-tls-certificates-8f7f5751d788
base64編碼 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
今天這篇文章是一個入門介紹文,跟大家介紹一下 Secret 這個物件。與 ConfigMap 一樣, Secret 也是 Kubernetes 內建的一個特別儲存單元,用法完全與 ConfigMap 類似,但是最大的差異在於其本身的內容必須要透過 base64 進行編碼以及該物件本身會放在 tmpfs 而非真正的檔案系統下。
但是也就是這個編碼以及 Secret 這個名詞很容易讓人搞混,以為把所有的東西都放到 Secret 就安全無誤,實際使用上才會發現這並沒有很安全。
因此本篇介紹完會探討 Secret 的使用方式,以及實務上可以怎麼使用
1. 透過 yaml 這種 declarative 的方式來描述 secret 的內容,這種格式下也有多種用法
a. [removed] tls, docker-registry。
如果你有使用過 imagePullSecrets 這種類型來存取非公開的 contaienr registry 的話,就會需要使用 docker-registry 這種類型來存放相關的存取資訊。
由於上面提到的 base64 都是編碼,並非加密,因此如果有任何加密的需求,請一定要考慮使用不同的解決方案,譬如 Vault, Sealed Secrets, Helm Secrets 等不同的解決方案,千萬不要把 secrets 的內容直接編碼就放到公開的 git repo 上,這樣是完全沒有安全性可言的。
如果對於 secrets 這個物件還不太熟的,可以參考這篇文章看看各種基本用法
https://medium.com/better-programming/how-to-use-kubernetes-secrets-for-storing-sensitive-config-data-f3c5e7d11c15
base64編碼 在 純靠北工程師 Facebook 的最讚貼文
#純靠北工程師3vd
----------
首席資深工程師在公司群組說「我在做了字串加解密的工具,有需要可以拿去用喔!」
打開一看,原來只做了 base64 編碼轉換。
我是不是該離職了?
----------
🗳️ [群眾審核] https://kaobei.engineer/cards/review
👉 [GitHub Repo] https://github.com/init-engineer/init.engineer
📢 [匿名發文] https://kaobei.engineer/cards/create
🥙 [全平台留言] https://kaobei.engineer/cards/show/5017
base64編碼 在 編碼和解碼Base64 | 他山教程,只選擇最優質的自學材料 的推薦與評價
b 字首用於表示值是位元組物件。 要對這些位元組進行Base64 編碼,我們使用 base64.b64encode() 函式: placeholderCopy import base64 ... ... <看更多>
base64編碼 在 Golang 中的Base64 編碼和解碼 - Calvert's murmur 的推薦與評價
Base64 是一種二進位轉文字編碼方案。它用可列印的ASCII 字串格式對二進位資料進行編碼。當需要透過僅設計用來處理文字資料無法正確處理二進位資料的 ... ... <看更多>
base64編碼 在 Alvin's note - 好工具分享!Base64編碼主要是針對某些系統中 ... 的推薦與評價
好工具分享!Base64編碼主要是針對某些系統中只能使用ASCII字符。 所以Base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種方法。 ... <看更多>