裝置代理程式的安全性最佳實務 - AWS IoT Device Defender

裝置代理程式的安全性最佳實務

最低權限

代理程式程序應該只能獲得履行其職責所需的最低許可。

基本機制
  • 代理程式應以非根使用者身分來執行。

  • 代理程式應以專用使用者之方式在其自己之群組執行。

  • 使用者/群組應獲得所需資源的唯讀許可,以收集和傳輸指標。

  • 範例:範例代理程式的 /proc/sys 唯讀。

  • 如需有關如何將程序設定為以降低許可執行的範例,請參閱 Python 範例代理程式隨附的設定說明。

有多種知名 Linux 機制,可協助您進一步限制或隔離您的代理程式處理序:

運作彈性

代理程式處理序必須能迅速從意外運作錯誤和例外狀況中復原,不得當機或永久結束。程式碼需要從容地處理例外狀況,並且必須設定為在發生意外終止時自動重新啟動 (例如,由於系統重新啟動或未擷取到的例外狀況) 做為預防措施。

最少相依性

代理程式在其實作中必須使用最少的相依性 (也就是第三方程式庫)。如果因為任務的複雜性 (例如,Transport Layer Security) 而使程式庫的使用成為正當,只能使用維護良好的相依性並建立機制,以保持最新的相依性。如果新增的相依性包含代理程式未使用的功能,且預設為作用中 (例如,開放連接埠網域通訊端),請在您的程式碼中停用,或透過程式庫的組態檔案停用。

程序隔離

代理程式處理序必須只包含執行裝置指標收集和傳輸所需的功能。它不得裝載在其他系統處理序做為容器,或為其他範圍外的使用案例實作功能。此外,代理程式處理序必須避免建立傳入通訊管道,例如網域通訊端和網路服務連接埠,允許本機或遠端程序干擾其操作,並影響其完整性和孤立性。

隱匿性

代理程式處理序不得以關鍵字命名,例如指出用途和安全價值的 security (安全性)、monitoring (監控) 或 audit (稽核)。偏好使用一般程式碼名稱或隨機和每個裝置獨有的處理序名稱。為代理程式二進位程式碼所在目錄,以及處理序引數的任何名稱和值命名時,必須遵循相同的原則。

最少共用資訊

任何部署到裝置的代理程式成品,不得包含敏感資訊,如特許的憑證、偵錯和無效的程式碼,或是內嵌評論或文件檔案,其揭露有關伺服器端處理代理程式收集指標的細節,或其他後端系統的詳細資訊。

Transport Layer Security

若要建立 TLS 安全管道來處理資料傳輸,代理程式處理序必須強制執行所有用戶端的驗證,例如憑證鏈和網域名稱在應用程式層級驗證,如果沒有預設啟用的話。此外,代理程式必須使用根憑證存放區,其中包含信任憑證授權單位,但不包含屬於被入侵的憑證發行者的憑證。

安全部署

任何代理程式的部署機制,例如程式碼推送或同步,及包含二進位程式碼的儲存庫、原始碼及任何組態檔案 (包括信任的根憑證),必須控制存取權以防止未經授權的程式碼插入或竄改。如果部署機制倚賴網路通訊,則使用加密方法來保護傳輸之部署成品的完整性。

深入閱讀