ref: https://dlorenc.medium.com/improving-tofu-with-transparency-da674aa2879d
本篇文章要介紹的是一種名為 TOFU 的認證機制,其全名為 Trust-On-First-Use.
要探討這個機制前,作者先列舉一個情境
假設你人要到火車站去找一個名為 Alice 的人交換手提箱,你要如何於火車站正確的找到 Alice?
# Nothing
最基本的情況就是你看到每個人都詢問,你是不是 Alice,但是任何人都可以說謊假裝自己是 Alice,因此惡意攻擊者跟 Alice
一樣都可以輕鬆回答你「我就是 Alice」,顯而易見這種機制基本上沒有辦法幫助我們找到 Alice,也沒有辦法分辨到底眼前的人是惡意攻擊者還是 Alice。
一種改善的機制就是 PKI (Public Key Infrastructure),該機制的概念是
1. 有一個第三方服務會發行相關的 ID 證件,該 ID 證件難以偽造 (譬如 Certificate Authorities)
2. 你信賴這個第三方服務
所以你到火車站之後,每遇到一個人就要求對方出示其 ID,並且請第三方服務幫忙驗證這個 ID 證件是否合法,透過這種概念來找到到底誰是 Alice。
這種機制運作起來沒有問題,唯一的問題就是找到一個可信任的第三方服務相對複雜且困難。
有沒有一種相對簡單又有點有效的機制? 就是本篇要探討的 TOFU
假設情境改成,今天需要頻繁的到火車站去找 Alice 交換行李箱,這件事情會重複非常多次。這種情境下,我們可以
記住第一次遇到號稱自己是 Alice 的那個人,接下來每次都找該人交易。
簡單來說就是,相信第一次遇到的人,並且記住該人的狀態與面貌,接下來每次交易都直接尋找上次熟悉的面孔。
網路世界來說,一個非常知名使用 TOFU 的軟體就是 SSH。
SSH 使用者第一次連線到遠方 Server 時會相信自己連接到的是正確的 Server,同時將 Server 本身的指紋資訊給存入到本地快取。
因此接下來每次連接到該 SSH 的時候,就直接比較 Server 的指紋是否一致來確定是否連線。
這個機制聽起來很可怕,不過對於這種「很難預測第一次連線的 Server 是誰的狀態」的情境是滿堪用的,畢竟不容易一開始就被偽裝攻擊。
另外一個使用 TOFU 機制的概念就是 supply-chain security,假設你要透過 Packager Manager 來使用不同版本的 Package
這種情境下系統要如何信任每次抓到的 Package 都是正確的?
透過 TOFU 的機制將每個 Package 的 Hash 值都存放 local,這種情況下就可以去比對第二次,第三次下載的內容是否一致。
不過對於 CI 環境下,要一直維持 local cache 實在不容易,因此 Trust-On-First-Use 就會演化成另外一種 Trust-On-Every-Use.
文章後續還介紹 golang 生態系的 go get 是採用何種機制去信任每次下載的 library,對於這篇文章有興趣的不要錯過
golang介紹 在 矽谷牛的耕田筆記 Facebook 的精選貼文
Cloud Native 這個詞近年來非常熱門,CNCF 甚至也有針對這個詞給出了一個簡短的定義,然而對於每個使用者來說,要如何實踐這個定義則是百家爭鳴。我認為很認真地去探討到底什麼樣才算 Cloud Native 其實就跟很認真的探討什麼是 DevOps 一樣,就是一個沒有共識,沒有標準答案的問題。
本篇文章從 CNCF 的定義衍伸出 Cloud Native 帶來的優勢,並且針對這個領域介紹了十三種不同面向的科技樹,每個科技樹也都介紹了幾個常見的解決方案。
好處:
1. Speed
作者認為 Cloud Native 的應用程式要具有快速部署與快速開發的特性,擁有這些特性才有辦法更快地去根據市場需求而上線面對。眾多的雲端廠商都提供不同的解決方案讓部署應用程式愈來愈簡單,而 Cloud Native 相關的工具則是大量採用抽象化的方式去描述這類型的應用程式,讓需求可能更簡單與通用的部署到不同環境中。
2. Scalability and Availability
Cloud Native 的應用程式應該要可以無痛擴張來對面不論是面對一百個或是一百萬個客戶。底層所使用的資源應該都要根據當前的需求來動態配置,避免無謂的金錢成本浪費。此外自動化的 Failover 或是不同類型的部署策略(藍綠/金絲雀..等)也都可以整合到 Cloud native 的工具中。
3. Quality
Cloud Native 的應用程式建置時應該要保持不變性,這特性使得應用程式本身能夠提供良好的品質一致性。此外大部分的 Cloud Native 工具都是開放原始碼專案,這意味者使用時比較不會遇到 vendor lock-ins 的問題。
以下是作者列出來認為 Cloud Native 生態系中不可或缺的十三種面向,以及該面向中幾個知名專案。
相關領域
1. Microservices (Node.js/Kotlin,Golang)
2. CI/CD (Gitlab CICD/ Github Actions)
3. Container (Docker/Podmna/LXD)
4. Container Orchestration (Kubernetes/Google Cloud Run)
5. Infrasturcutre as Code (Terraform/Pulumi)
6. Secrets (Vault /Sealed Secrets)
7. Certificates (cert-manager/Google managerd certificates)
8. API Gateway (Ambassador/Kong)
9. Logging (EKF/Loki)
10. Monitoring (Prometheus/Grafana/Datadog)
11. Alerting (Prometheus Alertmanager/Grafana Alerts)
12. Tracing (Jaeger/Zipkin)
13. Service Mesh (Istio/Consul)
https://medium.com/quick-code/how-to-become-cloud-native-and-13-tools-to-get-you-there-861bcebb22bb
golang介紹 在 軟體開發學習資訊分享 Facebook 的最佳解答
NT 370 特價中
在 Golang 中認真進行微服務設計和開發所需的一切。從設計到營運的衡量標準
這不是對 Go 概念的介紹,這是在13個多小時的影片和資源中揭示的真實生活和業界經驗,你不可能輕易在網上找到。
https://softnshare.com/golang-the-ultimate-guide-to-microservices-in-go-part-1/
golang介紹 在 14 擴充套件Web 框架 的推薦與評價
Contribute to doggy8088/build-web-application-with-golang-zhtw ... 第十三章介紹了如何開發一個Web 框架,透過介紹MVC、路由、日誌處理、配置處理完成了一個基本的 ... ... <看更多>
golang介紹 在 看板Stock 文章列表- 批踢踢實業坊 的推薦與評價
4-4(已被stuppi刪除) <golang>. -. 11/24. 9. (本文已被刪除) [justforsing]. -. 11/24. 20. [新聞] 中鋼:鋼市春節後迎新動能. ... <看更多>
golang介紹 在 學習Golang 的心得- Receiver - 技術雜記Technology Notes 的推薦與評價
介紹. 程式語言共通的特性像是for-loop, if-else, declaration 之類的又或是go 的type 宣告是在後面 var num int , 而java 是 Int number ... <看更多>