跳到內容

安全性

節點間通訊

多節點 vLLM 部署中節點之間的所有通訊預設情況下都是不安全的,必須透過將節點置於隔離網路中來保護。這包括

  1. PyTorch 分散式通訊
  2. KV 快取傳輸通訊
  3. 張量、流水線和資料並行通訊

節點間通訊的配置選項

以下選項控制 vLLM 中的節點間通訊

1. 環境變數:

  • VLLM_HOST_IP:設定 vLLM 程序進行通訊的 IP 地址

2. KV 快取傳輸配置:

  • --kv-ip:KV 快取傳輸通訊的 IP 地址(預設值:127.0.0.1)
  • --kv-port:KV 快取傳輸通訊的埠(預設值:14579)

3. 資料並行配置:

  • data_parallel_master_ip:資料並行主節點的 IP(預設值:127.0.0.1)
  • data_parallel_master_port:資料並行主節點的埠(預設值:29500)

關於 PyTorch 分散式的注意事項

vLLM 使用 PyTorch 的分散式功能進行部分節點間通訊。有關 PyTorch 分散式安全考慮的詳細資訊,請參閱 PyTorch 安全指南

PyTorch 安全指南中的要點

  • PyTorch 分散式功能僅用於內部通訊
  • 它們不適用於不受信任的環境或網路
  • 出於效能考慮,未包含授權協議
  • 訊息以未加密方式傳送
  • 連線從任何地方接受,未經檢查

安全建議

1. 網路隔離:

  • 將 vLLM 節點部署在專用的隔離網路上
  • 使用網路分段防止未經授權的訪問
  • 實施適當的防火牆規則

2. 配置最佳實踐:

  • 始終將 VLLM_HOST_IP 設定為特定的 IP 地址,而不是使用預設值
  • 配置防火牆以僅允許節點之間必要的埠

3. 訪問控制:

  • 限制對部署環境的物理和網路訪問
  • 為管理介面實施適當的身份驗證和授權
  • 對所有系統元件遵循最小許可權原則

安全性與防火牆:保護暴露的 vLLM 系統

儘管 vLLM 旨在允許不安全的網路服務隔離到私有網路中,但有些元件(例如依賴項和底層框架)可能會開啟在所有網路介面上監聽的不安全服務,有時這些服務超出了 vLLM 的直接控制範圍。

一個主要問題是使用 torch.distributed,vLLM 利用它進行分散式通訊,包括在單個主機上使用 vLLM 時。當 vLLM 使用 TCP 初始化(參見 PyTorch TCP 初始化文件)時,PyTorch 會建立一個 TCPStore,該 TCPStore 預設監聽所有網路介面。這意味著,除非採取額外的保護措施,否則這些服務可能對透過任何網路介面訪問您的機器的任何主機開放。

從 PyTorch 的角度來看,任何 torch.distributed 的使用都應預設視為不安全的。這是 PyTorch 團隊已知且有意為之的行為。

防火牆配置指南

保護 vLLM 系統的最佳方法是仔細配置防火牆,以僅暴露必要的最小網路攻擊面。在大多數情況下,這意味著

  • 阻止除 API 伺服器監聽的 TCP 埠之外的所有入站連線。

  • 確保用於內部通訊的埠(例如 torch.distributed 和 KV 快取傳輸的埠)只能從受信任的主機或網路訪問。

  • 切勿將這些內部埠暴露給公共網際網路或不受信任的網路。

請查閱您的作業系統或應用平臺文件,獲取具體的防火牆配置說明。

報告安全漏洞

如果您認為在 vLLM 中發現了安全漏洞,請按照專案的安全政策進行報告。有關如何報告安全問題以及專案安全政策的更多資訊,請參閱 vLLM 安全政策