本文提供安全最佳做法,說明如何在 Google Cloud上管理及執行物聯網 (IoT) 後端。在物聯網解決方案中,物聯網後端會將邊緣裝置連線至其他資源。本文著重於下列 IoT 後端:Message Queuing Telemetry Transport (MQTT) 代理程式和 IoT 平台。
本文件是系列文件之一,提供有關 Google Cloud 上的 IoT 架構,以及從 IoT Core 遷移的資訊。本系列的其他文件包括:
- 已連結裝置架構總覽 Google Cloud
- Google Cloud獨立 MQTT 代理程式架構
- IoT 平台產品架構 Google Cloud
- 在 Google Cloud 上執行 IoT 後端的最佳做法(本文)
- 裝置在 Pub/Sub 架構上 Google Cloud
- 自動佈建及設定邊緣和裸機系統與伺服器的最佳做法
本文提供最佳做法,說明如何佈建及管理裝置憑證、驗證及存取控制邊緣裝置,以及允許 IoT 邊緣裝置存取 Google Cloud 資源。
IoT 架構
IoT 架構包含多項服務,可供您佈建及管理裝置憑證、驗證及控管邊緣裝置的存取權,以及允許邊緣裝置存取 Google Cloud 資源。本文將討論兩種 IoT 後端架構:一種使用 MQTT 代理程式,另一種使用 IoT 平台。這兩個後端的主要安全差異在於裝置身分和裝置管理。IoT 平台會將這些功能納入系統,但 MQTT 代理程式需要您提供這些功能。
下圖說明 IoT 架構。
架構會顯示下列三項程序所需的服務:
憑證佈建:您必須完成這項程序,才能準備設定邊緣裝置。
驗證和授權,包括邊緣裝置和 MQTT 代理程式或 IoT 平台用來相互驗證的驗證機制。
邊緣裝置與 Google Cloud 服務之間的連線,也就是邊緣裝置為連線至雲端資源及上傳或下載資料而完成的工作。
本文主要著重於佈建和驗證的安全防護最佳做法。
此架構結合了下列服務和功能:
- 部署在環境邊緣的邊緣裝置 (例如醫療器材),且地理位置靠近要處理的資料。邊緣裝置會與 IoT 後端進行雙向連線,因此可以傳送及接收 IoT 後端的訊息。
- IoT 後端,可以是 MQTT 代理程式或 IoT 平台。
- MQTT 代理程式提供安全介面,供邊緣裝置使用 MQTT 通訊協定連線。MQTT 代理程式缺乏裝置身分和裝置管理功能,必須仰賴外部系統提供這些功能。
- IoT 平台是雲端應用程式,邊緣裝置會連線至該平台並與其通訊。IoT 平台提供安全介面,供邊緣裝置使用 MQTT 通訊協定連線。每個 IoT 平台都有自己的安全防護實作方式,決定如何驗證及授權邊緣裝置,以及如何管理裝置身分。
- 集中式憑證存放區,用於存放所有邊緣裝置的憑證。
- 邊緣裝置必須存取的雲端資源。
佈建邊緣裝置
邊緣裝置必須先佈建憑證,才能連線至後端工作負載。有兩種主要情況會決定如何佈建憑證:
如果解決方案採用商用通用裝置,您可以在購買裝置後完全掌控佈建程序。
如果您使用自建裝置,初始佈建程序會在裝置製造期間進行,您必須將佈建程序與供應商和製造商整合。
無論是哪種情況,您都必須建立裝置憑證,並使用連結至根憑證授權單位 (CA) 的信任鏈結。這些憑證可驗證裝置身分,確保裝置上的更新和修改是由可信的行為者執行。使用憑證授權單位 (例如憑證授權單位服務) 完成下列工作:
- 以安全方式產生及儲存根 CA 憑證。
- 如有必要,請產生及儲存從屬 CA 憑證,用於簽署裝置憑證。
- 要求及簽署裝置憑證。
- 視需要設定並將權限分配給下層 CA,授予供應商和製造商。
- 如果不再需要裝置憑證,或懷疑裝置遭駭,請撤銷憑證。
如要佈建裝置憑證,請完成下列工作:
如果裝置具備防竄改的硬體式安全解決方案,例如安全元件 (SE) 或硬體安全模組 (HSM),可將私密金鑰儲存在本機,且私密金鑰絕不會對外公開,請按照下列步驟操作:
- 使用裝置支援的硬體式安全解決方案,產生公開/私密金鑰組。
- 使用憑證簽署要求 (CSR) 要求憑證。
如果您未使用硬體式安全解決方案產生公開/私密金鑰組,請改用 CA 產生金鑰和憑證。詳情請參閱「使用自動產生的金鑰」。使用這個方法下載的憑證已簽署。
產生並簽署裝置憑證後,請在邊緣裝置上安裝已簽署的裝置憑證,並將憑證儲存在中央憑證存放區,例如 Secret Manager。
詳情請參閱「如何使用 CA 服務部署安全可靠的公開金鑰基礎架構 (PDF)」。 Google Cloud
如要瞭解其他佈建最佳做法,請參閱「自動佈建及設定邊緣和裸機系統與伺服器的最佳做法」。
有三種憑證可用於保護 IoT 解決方案:
根 CA 憑證是系統中所有其他憑證的信任鏈根層級。後端工作負載會使用根憑證驗證用戶端憑證,邊緣裝置則會使用根憑證驗證伺服器憑證。您必須將根憑證發布至 IoT 後端和邊緣裝置。
中繼 CA 憑證提供信任鏈結,可追溯至根 CA。您可以使用中繼 CA 進行佈建,或滿足作業需求,例如授予製造商中繼 CA 的存取權,或實作彈性的 CA 管理程序。
伺服器憑證用於保護 IoT 後端公開的端點。您擁有端點需要支援的不同加密演算法的伺服器憑證。伺服器憑證會連結至根 CA。密碼管理工具會管理及儲存伺服器憑證的私密和公開部分。您必須使用伺服器憑證和對應的私密金鑰,設定 IoT 後端。
用戶端憑證用於識別邊緣裝置。每個邊緣裝置至少有一個用戶端憑證,也就是說,環境中的邊緣裝置越多,您擁有的憑證就越多。用戶端憑證會連結至根 CA。您必須將用戶端憑證發布至邊緣裝置和 IoT 後端。
使用 HSM 或 SE 產生裝置憑證的程序
下圖說明使用 HSM 或 SE 時,如何佈建裝置憑證。
在此圖中,會發生下列步驟:
- 邊緣裝置會在硬體中產生公開金鑰組。
- 下載公開金鑰,並為該金鑰建立憑證簽署要求 (CSR)。
- 您將 CSR 傳送給 CA,要求核發憑證。
- CA 會完成下列動作:
- 簽署憑證。
- 將簽署的憑證傳回給供應商。
- 佈建程式會完成下列動作:
- 將簽署的憑證傳送至邊緣裝置。
- 將簽署的憑證儲存在中央憑證存放區。
- 邊緣裝置會將憑證儲存在安全的位置。
使用 CA 產生裝置憑證的程序
下圖顯示使用憑證授權單位時,裝置憑證的佈建方式。
在此圖中,會發生下列步驟:
- 供應商要求 CA 傳送裝置的簽署憑證。
- CA 會完成下列動作:
- 產生公開/私密金鑰組,並簽署公開金鑰。
- 將裝置憑證和私密金鑰傳回給佈建者。
- 佈建程式會完成下列動作:
- 將憑證和私密金鑰傳送至邊緣裝置。
- 將憑證和私密金鑰儲存在中央憑證存放區。
- 邊緣裝置會將憑證和私密金鑰儲存在安全的位置。
如要將私密金鑰儲存在單一位置 (裝置),請避免將私密金鑰儲存在中央密碼存放區。不過,如果將私密金鑰儲存在中央密鑰存放區以外的位置,且您無法存取私密金鑰,裝置就必須再次完成佈建程序。
簽署憑證前先驗證裝置
如要在裝置上或使用憑證授權單位產生裝置憑證,裝置和憑證授權單位必須互相通訊及驗證。
如果沒有適當的驗證,CA 可能會誤信惡意裝置。舉例來說,如果攻擊者知道如何連線至憑證授權單位的憑證簽署基礎架構,可能會部署惡意裝置,要求憑證授權單位簽署憑證。如果沒有裝置驗證機制,CA 可能會簽署惡意裝置提供的憑證。如果 CA 簽署了憑證,惡意裝置就能以信任裝置的身分與後端通訊。
為協助您防止惡意裝置與 CA 通訊,建議採取下列行動:
- 為尚未受信任的裝置導入驗證機制。
- 確認要求驗證的裝置是否為正版。
- 在裝置要求 CA 產生新憑證或簽署現有憑證之前,先確認裝置是否為正品。
在佈建程序的這個階段實作驗證機制相當困難。您無法依據裝置憑證驗證裝置,因為裝置尚未取得 CA 簽署的憑證。缺少已簽署憑證的原因如下:
- 裝置尚未產生憑證。
- 裝置尚未將 CSR 傳送至 CA。
- CA 尚未將簽署的憑證傳回裝置。
解決這個問題的方法之一,是擴充裝置佈建程序,針對要驗證或需要驗證的每個裝置執行下列操作:
- 產生佈建憑證,僅用於向憑證簽署基礎架構驗證裝置。
- 使用 CA 簽署佈建憑證。
- 將簽署的佈建憑證儲存在裝置的 SE 或 HSM 中。
- 將簽署的佈建憑證儲存在後端。 Google Cloud
裝置必須先出示佈建憑證,才能取得 CA 憑證簽署基礎架構的存取權。該裝置必須出示憑證,供您驗證完整性和真實性,並判斷憑證是否與儲存在 Google Cloud 後端的其中一個佈建憑證相符。如果驗證成功,裝置就能存取 CA 的憑證簽署基礎架構,並繼續進行憑證佈建程序。
佈建憑證和完全信任的憑證有所不同。佈建憑證只會授予最少量的服務和基礎架構存取權。建立佈建憑證後,CA 會先驗證裝置是否為正版,再將其視為完全信任的裝置,並核發完全信任的憑證。
這個程序的擴充功能是,您可以搭配 CA 使用裝置製造商可存取的從屬 CA,簽署佈建憑證。舉例來說,製造商可能會在裝置完成製造程序後,簽署裝置的佈建憑證。接著,您可以驗證這些簽章,確認裝置是否為正品。
如果裝置在佈建前遭到入侵,建議您從後端移除對應的佈建憑證,這樣裝置就無法啟動程序來取得完全信任的憑證,因為裝置無法向 CA 進行驗證。 Google Cloud
裝置 ID 最佳做法
本節說明裝置 ID 的最佳做法。
搭配 MQTT 代理程式使用識別資訊提供者
MQTT 代理程式會使用外掛程式、資料庫和檔案提供的裝置憑證,驗證邊緣裝置。 如要以系統化且可擴充的方式管理裝置身分,請使用識別資訊提供者 (IdP)。IdP 會管理所有裝置的身分和憑證,並做為裝置身分的主要可靠資料來源。
如要在 MQTT 代理程式中更新裝置 ID,請實作系統專屬的整合層。如要進一步瞭解如何管理裝置憑證,請參閱「佈建邊緣裝置」。
使用物聯網平台的數位身分做為可靠資料來源
IoT 平台具備安全功能,可管理裝置身分和憑證,並驗證及授權嘗試存取平台的裝置。這些安全功能可確保只有授權裝置能存取 IoT 平台,並確保資料完整性。
確認 IoT 平台管理的裝置 ID 代表 IoT 平台管理的所有裝置的主要事實來源。IoT 解決方案中需要裝置身分識別資訊的其他元件,應仰賴 IoT 平台的安全系統。IoT 平台會授予裝置存取權,並在整個 IoT 解決方案中傳播任何安全性變更。
網路連線的最佳做法
確保網路連線安全非常重要,原因如下:
- 安全網路可確保裝置連線至正確的後端。舉例來說,安全網路可防止DNS 詐騙,這類攻擊會嘗試將裝置連線導向攻擊者控制的惡意後端。
- 安全網路可確保第三方無法讀取您的資料流量。 舉例來說,安全網路可以防範中間人攻擊,避免攻擊者讀取裝置與後端之間的流量。
使用傳輸層安全標準 (TLS),保護邊緣裝置與後端工作負載之間的網路通訊。
使用 mTLS 擴充 TLS,實作雙向驗證機制,讓連線雙方都能確認彼此身分。
如需使用 TLS 的操作說明,請參閱 Google Cloud上的獨立 MQTT 代理程式架構和 Google Cloud上的 IoT 平台產品架構。
MQTT 代理程式的憑證管理最佳做法
本節說明使用 MQTT 代理程式時,管理憑證的最佳做法。
集中儲存憑證
在中央位置儲存及管理伺服器憑證和裝置憑證。具體來說,請務必採取下列控管措施:
- 所有裝置及其憑證的清單,以及伺服器端點及其憑證。
- 憑證的額外資訊,例如效期。
- 可新增及移除裝置憑證,讓裝置使用新憑證連線。
- 中央憑證存放區的存取權,可限制後端不同角色對憑證執行的操作。
使用密鑰儲存和管理解決方案,例如 Secret Manager 或 HashiCorp Vault。Secret Manager 可讓您為裝置憑證建立版本、更新及失效,並管理憑證的存取權政策。
如果是 IoT 平台,請使用 Secret Manager API 存取權實作憑證存取權。
保護邊緣裝置上的憑證
如要在邊緣裝置上儲存憑證和金鑰,請使用本機受信任的執行環境或憑證儲存區,保護憑證並封鎖未經授權的存取要求。如需在裝置上儲存機密資料,請使用快閃加密等技術加密該資料,並儲存在防竄改元件中,防止未經授權的資料擷取作業。
將中央憑證儲存區與 MQTT 代理程式憑證儲存區同步
MQTT 代理程式必須存取用戶端憑證,才能進行憑證式驗證,因此您必須將 MQTT 代理程式的憑證存放區與中央憑證存放區同步。確認中央憑證存放區的變更 (例如新增、更新及刪除憑證) 已與 MQTT 代理程式憑證存放區同步。MQTT 代理程式會使用憑證儲存區,例如 MySQL、PostgresDB 和 Java Key Store。請根據 MQTT 代理程式使用的憑證存放區,確保存在下列程序:
- 這個程序會監控中央憑證存放區的變更,並通知同步程序。
- 這個程序會擷取中央憑證存放區的變更,並將這些變更同步至 MQTT 代理程式使用的憑證存放區。
使用 Secret Manager 做為憑證存放區時,您可以透過事件通知進行監控。您可以將同步處理程序實作為事件通知的接聽程式。
安全地將憑證發布至邊緣裝置
使用 MQTT 代理程式時,請將根憑證和用戶端憑證發布至邊緣裝置。發布憑證時,請務必保護通訊管道,以免流量遭到攔截。
我們主要透過下列管道發放認證:
- 透過現有通訊管道,從 IoT 後端直接連線至邊緣裝置。
- 邊緣裝置要求及下載憑證的間接路徑。
在憑證發布期間,您需要下列元件:
- 集中管理憑證的憑證存放區。
- 發布協調器:負責傳送憑證,並追蹤每個邊緣裝置的發布程序。
- 邊緣裝置上的更新處理常式,可接收或下載憑證,並將其儲存在裝置上。
在邊緣裝置的佈建程序中,以及需要輪替憑證時,發布憑證。
在佈建程序中,請確保佈建者可透過加密管道 (例如 SSH) 直接存取邊緣裝置,並使用 SCP 等工具。由於裝置未運作,您可以直接將憑證推送至邊緣裝置。
輪替憑證時,請使用 MQTT 代理程式做為發布協調器與邊緣裝置之間的通訊管道。使用其他管道將憑證下載到裝置上。為盡量減少運作中邊緣裝置的中斷情形,請使用間接憑證發布路徑。這個程序包含下列邏輯步驟:
- 發布協調員會從憑證存放區取得存取憑證。
- 發布協調器會將憑證存取憑證和下載網址等額外資訊,一併推送至邊緣裝置。
- 裝置端更新處理常式會接收存取憑證,並暫時儲存資訊,然後確認收到憑證。
- 裝置處於非使用中狀態時,更新處理常式會協調憑證下載作業。更新處理常式會使用存取憑證,從憑證儲存區下載憑證。
- 下載憑證後,更新處理常式會繼續執行憑證輪替程序,詳情請參閱「憑證輪替」一節。
使用 Secret Manager 做為中央憑證儲存空間時,您可以產生短期存取權杖,授予及限制憑證存取權。詳情請參閱「安全地將存取權杖發布至裝置」。
為避免憑證在傳輸過程中外洩,請加密邊緣裝置與 MQTT 代理程式之間的連線。詳情請參閱「網路連線最佳做法」。
自動輪替憑證
為限制外洩憑證造成的損害,請產生有效期限有限的憑證,並在憑證到期前輪替憑證。對於大規模的 IoT 部署作業,請實作自動憑證輪替程序,在舊憑證到期前,持續為裝置更新憑證。如果部署的裝置沒有有效憑證,裝置可能會停止運作,這不僅會造成高昂的修復費用,還會對 IoT 解決方案的整體功能造成負面影響。
邊緣裝置必須與 MQTT 代理程式建立雙向連線,才能確保裝置可以傳送訊息至 MQTT 代理程式,並接收來自 MQTT 代理程式的訊息。
在憑證輪替期間,您需要下列元件:
- 這項監控程序會定期掃描您的憑證庫存,找出即將到期的憑證。監控程序會針對即將到期的憑證觸發憑證輪替。
- 啟動及監督憑證輪替的輪替程序。
- 邊緣裝置上的裝置憑證輪替處理常式,可與 MQTT 代理程式通訊,並在裝置上執行憑證輪替步驟。
如要輪替憑證,IoT 解決方案會完成下列步驟:
- 輪替程序會將初始化訊息傳送至邊緣裝置,啟動憑證輪替。
- 裝置憑證輪替處理常式會將回應傳回輪替作業,確認初始化訊息。
- 輪替程序會向 CA 要求新憑證。這項要求與憑證佈建要求類似,但金鑰和 CSR 是以 MQTT 代理程式訊息的形式傳送。
- 從 CA 收到新憑證後,輪替作業會將憑證發布至中央憑證存放區和邊緣裝置。此外,也會將憑證同步至 MQTT 代理程式的憑證存放區。
- 裝置憑證輪替處理常式會儲存新憑證,並使用新憑證初始化與 MQTT 代理程式的新連線。
- 建立新連線後,裝置憑證輪替處理常式會將完成訊息傳送至 MQTT 代理程式。
- 收到完成訊息後,輪替程序會使中央憑證存放區中的舊憑證失效。
為保護輪替程序期間傳送的憑證,請使用專屬的 MQTT 主題進行憑證輪替。限制只有輪替作業和邊緣裝置可以存取這些主題。
為避免憑證輪替程序在執行階段發生失敗情形,請啟用變更和進度的持續性。
如要進一步瞭解如何使用 Secret Manager 輪替密鑰,請參閱「密鑰輪替」一文。
IoT 平台憑證管理的最佳做法
如果您使用 IoT 平台,請使用平台提供的憑證更新和發布機制。為進行備份,您可以定期將 IoT 平台中的憑證匯出至次要密鑰儲存空間,例如 Secret Manager。
使用 MQTT 代理程式進行驗證的最佳做法
在相互驗證程序中,後端工作負載會驗證邊緣裝置的身分,邊緣裝置則會驗證後端工作負載的身分。後端工作負載確認邊緣裝置的身分後,後端工作負載會授權裝置存取資源。
下列各節說明使用 MQTT 代理程式時,驗證方法的最佳做法。
選擇 MQTT 代理程式的驗證方法
不同的 IoT 後端支援不同的驗證方法。常用的方法如下:
- 使用者名稱和密碼驗證:邊緣裝置會提供使用者名稱和密碼,驗證自身身分。
- 權杖式驗證:使用加密的安全權杖驗證邊緣裝置的身分。
- 自訂驗證機制:實作自訂機制,驗證邊緣裝置的身分。
根據 MQTT 標準,MQTT 代理程式預設支援使用者名稱和密碼驗證,適用於 MQTT CONNECT
封包。
MQTT CONNECT
封包也包含 Client Identifier
欄位,可用於向 MQTT 代理程式專屬識別用戶端。Edge 裝置建立連線時,會將 MQTT CONNECT
封包傳送至 MQTT 代理程式。
除了 MQTT
CONNECT
封包中的使用者名稱、密碼和用戶端 ID 欄位,MQTT 5.0 還支援強化驗證,可讓您建構挑戰-回應驗證流程。MQTT 5.0 允許邊緣裝置和 MQTT 代理程式之間進行多次AUTH
封包交換。
搭配使用者名稱和密碼驗證使用密碼存放區
如要進行使用者名稱和密碼驗證,請將 MQTT 代理程式設定為使用密碼儲存空間。密碼儲存區提供集中式位置,可管理連線至 MQTT 代理程式的所有邊緣裝置密碼。根據預設,MQTT 規格中的使用者名稱、密碼和用戶端 ID 欄位為選填。因此,請設計驗證機制,確認使用者名稱、密碼和用戶端 ID 欄位是否位於 MQTT
CONNECT
封包中。
請確保密碼在靜態和傳輸時都經過加密,方法如下:
在閒置狀態下,儲存無法還原的密碼加密雜湊值。如要進一步瞭解密碼雜湊,請參閱「帳戶驗證和密碼管理最佳做法」。
在傳輸期間,加密邊緣裝置與 MQTT 代理程式之間的連線。詳情請參閱「網路連線最佳做法」。
考慮採用權杖式驗證
使用權杖驗證時,邊緣裝置會將權杖傳送至 MQTT 代理程式進行驗證。裝置可以自行產生權杖,或從其他驗證服務取得權杖。與密碼相比,權杖的效期較短:權杖只在一段時間內有效,且有明確的到期日。驗證權杖時,請務必檢查是否過期。
JSON Web Token (JWT) 是實作權杖式驗證的方法。邊緣裝置可以產生 JWT,並向 MQTT 代理程式進行驗證。JWT 會嵌入 MQTT CONNECT 封包中,做為密碼欄位。
JWT 的優點如下:
- JWT 可讓您選擇用於簽署權杖的加密演算法。JWT 適用於資源受限的邊緣裝置,您可以使用 ECC 等資源密集度較低的加密演算法簽署權杖。
- 私密金鑰只會在邊緣裝置上使用,絕不會與其他方共用。相較於使用者名稱和密碼驗證 (透過連線傳送憑證,且需要加密資料),私密金鑰可讓這個方法更加安全。
考慮使用自訂驗證機制
部分 MQTT 代理程式支援不同的驗證機制和通訊協定。舉例來說,如果 MQTT 代理程式支援自訂驗證機制,您可以設定代理程式支援下列項目:
- 業界標準驗證通訊協定,例如 OpenID Connect、安全宣告標記語言 (SAML)、LDAP、Kerberos 和簡單驗證與安全層 (SASL)。這些通訊協定會將裝置驗證作業委派給現有的身分識別提供者。部分 MQTT 代理程式支援強化驗證和可擴充的驗證機制,可用於擴充 MQTT 代理程式,支援新的通訊協定和身分識別提供者。
- 憑證式相互驗證。部分 MQTT 代理程式支援雙向驗證機制,例如以 mTLS 為基礎的驗證。
裝置存取權控管和授權最佳做法
由於 MQTT 通訊協定的發布端和訂閱端通訊模式,裝置存取控制項是使用 MQTT 主題定義。MQTT 主題可控管裝置與 IoT 後端的通訊方式。每個 IoT 後端都有不同的存取控制和授權實作方式,因此請參閱 IoT 後端說明文件,瞭解如何設定 MQTT 主題。
使用單一用途的服務帳戶存取 Google Cloud 資源
資源存取權 是由 IAM 允許政策管理,這些政策會將資源存取許可與一組主體繫結。 Google Cloud 常見的主體包括使用者帳戶、服務帳戶和群組。應用程式或運算工作負載通常會使用服務帳戶,對雲端資源發出授權 API 呼叫。服務帳戶可讓 IoT 邊緣裝置存取雲端資源。
由於裝置 ID 是由 IoT 後端管理,您必須對應 IoT 後端和 IAM 之間的 ID,邊緣裝置才能存取Google Cloud 資源。
如果您要管理大量裝置,每個專案的服務帳戶數量限制會導致裝置和服務帳戶之間無法直接建立一對一對應關係。 Google Cloud
請改為建立與 IoT 解決方案需要存取的雲端資源連結的服務帳戶,詳情請參閱建立單一用途的服務帳戶。舉例來說,請為下列每個用途建立專屬服務帳戶:
- 下載軟體更新套件
- 上傳大型媒體檔案
- 從延遲串流擷取資料
如要實作「最低權限」,請確保每個服務帳戶僅具備足夠的存取權,可支援其用途。舉例來說,如果服務帳戶是用來下載軟體套件,請只授予 Cloud Storage bucket 的讀取權限。
安全地將存取權杖發送給裝置
通常邊緣裝置會使用 MQTT 與 IoT 平台通訊。不過,在特定用途中,裝置可能需要直接存取Google Cloud 資源。舉例來說,你可以嘗試下列做法:
- 如要下載內容,邊緣裝置只需要在下載過程中擁有 Cloud Storage 值區的唯讀存取權。
- 如要將資料上傳至 Cloud Storage bucket,邊緣裝置必須具備該 bucket 的寫入權限。
在這些情況下,請使用 Workload Identity 聯盟,透過存取權杖授予資源存取權。 Google Cloud Workload identity federation 可免除在邊緣裝置上佈建任何雲端專屬憑證的需求,並根據需求動態分配存取權。
如要將雲端資源的存取權權杖發布至裝置,請在裝置身分識別提供者和Google Cloud之間設定工作負載身分聯盟。如要支援 Workload Identity 聯盟,請確保 IoT 後端符合Workload Identity 聯盟需求,並遵循符合您用途的安全性最佳做法。
如要使用工作負載身分聯盟存取 Google Cloud 資源,邊緣裝置必須實作 OAuth 2.0 權杖交換工作流程,包括下列步驟:
- 裝置會呼叫安全權杖服務,並提供自己的裝置憑證。
- 安全權杖服務會驗證 Edge 裝置提供的憑證,確認 Edge 裝置的身分,並使用裝置身分識別提供者。
- 如果身分驗證成功,安全權杖服務會將存取權杖傳回邊緣裝置。
- 邊緣裝置會使用該權杖模擬單一用途服務帳戶,並取得短期有效的 OAuth 2.0 存取權杖。
- 裝置會使用短期 OAuth 2.0 存取權杖向 Google Cloud API 進行驗證,並取得所需雲端資源的存取權。
如要限制短期存取權杖只能存取 Cloud Storage 中的特定值區和物件,請使用憑證存取權界線。憑證存取權界線可限制短期憑證的存取權,並在存取權權杖遭盜用時,盡量減少 Cloud Storage 值區中公開的資源數量。
Workload Identity 聯盟可安全地將雲端存取權授予邊緣裝置,且具備可擴充性。如要進一步瞭解驗證,請參閱「Google 的驗證方式」。
監控及稽核雲端資源存取權
啟用 Cloud 稽核記錄,即可在邊緣裝置透過已驗證的 API 要求存取雲端資源時,建立記錄檔項目。Cloud 稽核記錄可讓您監控邊緣裝置在Google Cloud上執行的重要動作。此外,Cloud 稽核記錄也會建立稽核追蹤記錄和記錄檔,供您調查任何問題。詳情請參閱模擬服務帳戶以存取 Google Cloud。
後續步驟
- 進一步瞭解物聯網技術總覽。
參閱本系列的其他文件:
Google Cloud獨立 MQTT 代理程式架構
進一步瞭解使用服務帳戶的最佳做法
貢獻者
作者:
- Charlie Wang | 雲端解決方案架構師
- Marco Ferrari | 雲端解決方案架構師