fbpx

Vault ㄧ GM Cruise 保護自動駕駛汽車和製造者

在工程師的日常工作流程中建立安全性是一項巨大的挑戰。為了成為一名傑出的資安工程師,特別是在建立自主機器人時,您必須提供平穩的安全性。


本篇文章將介紹我們採用哪些措施,以確保負責建造和部署自動駕駛汽車的人員能夠在世界級的內建安全性下操作。然後,我們將討論如何把為人類建立的相同系統用於機器人。 

自動駕駛汽車管理政策和配置的安全目標

我們保護自動駕駛汽車的安全目標是什麼?我們不僅要考慮車輛,還要考慮整體情況。車輛本身可以安全行駛,所有外圍系統也互相影響,而這都是關鍵。我們如何保護車輛?我們如何保護所有重要的組件?我們需要一個健康的安全生態系統。

平穩的變更

我們主要的安全目標是減少摩擦,平穩的變更。所以如果我們想出新的計畫,它需要盡可能順利的實施。我們希望透過提供易於使用、出色的解決方案來改進這一點。

信任和保護

信任和保護是資訊安全行業的兩大要點,我們希望信任和保護所有資料,因此需要了解資料來源,才可以保護密鑰。

準備好開發新工具

這意味著您會發現系統間的差異,並為此開發新工具。
擁有 Vault 後,您將會發現系統中的差距,並準備好為這些差距開發工具。

操作流程

以前我們是這樣操作的:有個文件存在於程式碼儲存庫中,我們有這些標準的複雜性和基本型別,例如加密操作。通常,到目前為止,如果您還沒有使用 Vault,那麼您會有很多工具。也許您喜歡使用 OpenSSL 命令行來加密文件。也許你喜歡使用一些 Python 包裝器。關鍵是,所有工具都是不一致的,所以 A 團隊用 GPG 加密,B 團隊沒有,所以當你需要共享文件時,你只好去 Stack Overflow 上查找它。


如果我們要運用一個安全工具,比方說,一些不容易閱讀和理解且困惑的二進制協議,那麼您實現的安全工具可能不會那麼成功。

設定用戶期望

用戶、終端用戶或工程師應該多久進行一次身份驗證?也許是 22 小時,也許是一天一次,也許這對一個企業來說是不可接受的。例如,開發團隊的產品 X 每 14 小時進行一次身份驗證以訪問密鑰,與每 2 小時密碼輪換的機器人,可以讓開發軟體檢查令牌並自動更新,有顯著的差異。


我們可以設定期望,讓企業採用 Vault 來處理這個大型專案,需要在 X 週期進行身份驗證。例如對 Vault 進行身份驗證以獲取身份令牌來證明使用者身分。


既然我們已經為開發團隊和終端用戶組設定期望,您將在合理的時間週期內進行身份驗證,並且您將執行 2FA。Onboarding 政策非常重要,因此我制定了這四個 onboarding 問題,您可以在企業中採用和使用。

  1. 確定將由 Vault 儲存/操作的資料類型
  2. 確定誰將管理這些資料
  3. 識別並記錄誰(或什麼)可以訪問資料
    從第一天開始,您可能會放入一些密鑰,然後用戶可以使用它。如果您沒有明確定義誰擁有或誰負責維護,並從一開始就設定政策和身份驗證邊界,那麼您將遇到困難。
  4. 識別並實施適當的身份驗證和檢索

如果身份驗證更為複雜,例如我有一個雲端實例。無論是需要身份驗證的平台,您都需要識別並設定它。一旦你確定了這一點,如果你有解決方案,你就交付它。如果沒有,就要去找別的解決方案並實施它。幸運的是,Vault 已經建立了一百萬種不同的身份驗證供您使用。

三步驟提升您的身份驗證

如何選擇預設路徑結構?您如何選擇儲存密鑰的位置?哪個團隊管理預設路徑和執行概念?

管理政策和配置

管理政策和配置十分重要,從政策和管理的角度來看,我們以文件結構的方式建立 Vault 配置的實體表示。而為什麼我們要配置像 Vault 這樣的應用程式,而不是使用配置來定義 Vault?如果我們手動完成所有操作,並且不可持續?


因此我們編寫了一個自定義應用程式,它橫越了文件系統架構,它類似於 Vault API 的樣子。您可以在那裡定義這些值。它可以為您提供了一種更改追蹤的方法,使安全操作人員對內部結構、預設路徑連結、Vault 和 API、schema 有更透徹的了解。


也許您在 Vault 中一直使用更進階的抽象命令列,並且您不太確定儲存和檢索事物的預設路徑。當有人來問您做的 XYZ 預設路徑是什麼時,它可以追蹤您的配置和更加熟悉 internal。

端到端測試

如果沒有適當的端到端測試,Vault 會是什麼?假設您的公司將製造一堆機器人,這些機器人也會與 Vault 對話。在此過程中,您檢查基本的健康指標,一切順利。通常,一旦 Vault 叢集的採用率增加,它將成為所有應用程式關鍵的路徑。然而,這開始讓一些人擔心,但主要是必須維護該叢集的人。


強烈建議您確定 Vault 與您的應用程式或基礎架構的關係和執行措施。假設您平常的工作流程是驗證、寫入、讀取和刪除密鑰。例如,您想持續建立一些存在 Vault 外部的流程或測試框架。當完成後,它會問你:每個步驟都成功了嗎?每個請求的時間表是什麼?


這對兩件事非常有幫助。如果有一個問題開始浮現,您可以在有人進入您的 Slack channel 並使 security 更危險之前識別出來。此外,您可以識別特定時間內的使用情況。

大規模設定政策

接下來,我們將討論我們如何處理大規模的政策。假設您有一組應用程式伺服器。通常的標準是:應用程式 A 上線,您為應用程式 A 編寫政策。應用程式 A 分佈在 500 台伺服器上,它們都使用相同的 permissions path。只要給他們政策,它會照常檢查。在這種情況下,我們每天要運轉數百個機器人。安全操作人員需要建立一個 (自訂回呼函式)webhook,現在機器人 700-2,000 不會被建立,因為這通常是個過程。我必須運行 create _policy.py 命令檔生成一些數字,並建立政策。


作為 Vault Enterprise 的客戶,我們使用請求的實時 Sentinel 分析來簡化政策。以前,它是多對一,現在這個機器人可以發出請求,變成一對多。 Sentinel 將分析該請求,並查看請求中的一些屬性是否與嘗試提出的請求相匹配?
create_policy.py 已經過時了,因為你有一個新的很酷的、自動化的東西來處理它。我們大規模運用 SSH。典型的 SSH 範式有兩種執行方式,無論是您的 SSH 直接進入機器人,還是擴展和縮短一係列的系統,您只需要一人,操作員或管理員,他們就可以訪問任意數量的系統。典型的範式是,您有一個主機集中訪問,它會發送到您環境中的 X 台主機(一台訪問所有系統)。


常見的做法是,我有一個用戶名和密碼或一個 SSH 密鑰,有人必須將它分散到這 100 萬個節點。而我有一個 two-factor 供應商的推送通知。問題點尤其是在規模上,隨著用戶的添加和刪除,您必須管理叢集主機中的所有外部資料。如果它是虛擬機,甚至是機器人,假設我們不是在製造汽車,而是在製造無人機或類似的東西。每次都必須更改訪問權限,將機器人帶入並更新某個公用金鑰,這不是長久之計。


SSH EasyPass 是一個更永續的模型 。對於曾經去過在東岸世界上最大的遊樂園 Cedar Point 的任何人來說,EasyPass 的概念是:您擁有一張 free pass。概念有點類似,但從您已經投資了用戶採用此 Vault 工作流程的角度來看,您需要支付額外費用。當他們進行身份驗證時,他們已經習慣擁有這個令牌,可以讓他們現在做與 SSH 之類的事情。

頒發憑證

頒發憑證有兩種方法。您可以使用公開憑證頒發機構的方式。我需要一個憑證來證明我們正在開發新事物。現在有了 PKI 後端,我們可以利用第三方 CA。或者您也可以建立自己的憑證頒發機構。


這對人類和機器人都有好處。對機器人與人類來說都很容易,但可能也沒那麼容易。從機器人或系統的角度來看,我們已經向 Vault 進行了身份驗證,我們擁有這個令牌,現在我們要做的就是提出請求憑證。我們已經實現了憑證信任鏈並頒發了憑證,對用戶也是如此。您不用擔心 openssl-req 命令。進行簡單的 API 調用,就可以獲得憑證。您甚至不必制定 CSR。


 
本文翻譯自:Vault at GM Cruise: Securing Autonomous Vehicles and the Humans Who Build Them
參考更多 HashiCorp Vault 相關資訊:www.omniwaresoft.com.tw/hashicorp_vault/ 

相關文章