iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
生成式 AI

從系統設計切入,探索 GenAI 在企業中的實踐系列 第 26

[Day26] 防止惡意攻擊:如何通過 VPC 和 Load Balancer 保護核心服務

  • 分享至 

  • xImage
  •  

隨著生成式 AI 系統日益複雜,安全性成為設計過程中的一個重要議題。例如,當我們開發一個核心的 generator 服務來處理文本或圖像生成時,這些服務每次請求都會消耗 API token。如果服務對外暴露,可能會面臨惡意攻擊者的頻繁請求,導致 token 快速耗盡,甚至可能引發 DDoS 攻擊,使服務無法正常運行。因此,為了保護這類關鍵服務,我們需要通過虛擬私有網絡(VPC)將服務隔離在內部,並通過負載均衡器來管理流量,限制只有內部授權的服務能夠訪問 generator 服務。

除了安全性之外,微服務之間的通信方式也是系統設計中的核心。在微服務架構中,各個服務之間的通信可以分為同步和異步兩類。同步通信通常用於即時的請求和回應,而異步通信則允許服務之間解耦,適合處理高並發和延遲容忍的場景。在實踐中,我們常常依賴 API Gateway、Service Mesh 等工具來進行同步通信管理,而 RabbitMQ 等消息隊列則是典型的異步通信解決方案。接下來的部分,我將介紹如何結合 VPC 和 Load Balancer 的實作,來保護 GenAI generator 服務免受外部攻擊,同時確保內部通信的高效性和安全性。

實作教學:如何利用 VPC 和 Load Balancer 保護 GenAI 服務

以下以 GCP 服務為例說明。

  1. 建立 VPC 並將 generator 服務加入其中
    • 確保 generator 服務只能在內部網絡中運行,並限制外部對其存取。
    • 步驟:
      1. 在 GCP 管理平台中,進入 generator 服務所屬的 Cloud Run。
      2. 選擇 Edit & Deploy Revision,進入服務配置頁面。
      3. 進入 Networking 標籤頁,勾選 Connect to a VPC for outbound traffic,選擇事先設置的 VPC。
      4. 確保 VPC 隔離了該服務,避免外部無授權請求對其進行存取。
        這樣,外部流量將無法直接訪問 generator 服務,僅允許內部網絡中的其他微服務通過授權方式連接該服務。
  2. 設置 Reserved Proxy-Only Subnets
    • 為 Load Balancer 設置專用的子網,從而管理內部流量並保護 generator 服務不被外部濫用。
    • 步驟:
      1. 在 VPC 設置中,創建子網並選擇 Reserved proxy-only subnets for load balancing
      2. 確保子網和 generator 服務位於相同的地區,以便負載均衡器能夠正確分發流量。
  3. generator 服務設置為 Internal 模式
    • 僅允許內部服務通過 VPC 連接 generator 服務,阻止來自外部的未授權存取。
    • 步驟:
      1. generator 服務的 Cloud Run 介面,找到 Ingress Control。
      2. Ingress 設置為 Internal,確保該服務只能通過內部 VPC 連接,防止外部網絡的攻擊者發送惡意請求來消耗 token。
  4. 使用 Load Balancer 將合法請求路由至 generator 服務
    • 使用 Load Balancer 來管理合法流量,並將來自前端應用的請求路由到內部的 generator 服務。
    • 步驟:
      1. 在 GCP 中創建一個新的負載均衡器,選擇 Application Load Balancer 並將類型設置為 Internal。
      2. 設定負載均衡的 Backend,選擇 Serverless network endpoint group (Cloud Run) 作為後端服務,並指定 generator 服務。
      3. 配置 VPC 子網,並將內部授權的請求引導到 generator,以保證僅合法的流量可以進入該服務。
  5. 測試 generator 服務的內部訪問
    • 通過負載均衡器進行內部訪問,並測試系統是否正確工作。
    • 步驟:
      1. 使用 curl 測試內部流量是否能夠正確連接到 generator 服務:
        curl -H "Host: generator-release-efzli6hwua-de.a.run.app" \
        http://<hostname>:<port>/generate-text
        
      2. 發送 POST 請求,測試文本生成 API,並驗證 token 是否被正常消耗:
        curl -i -X POST \
        -H "Host: generator-release-efzli6hwua-de.a.run.app" \
        -H "Content-Type: application/json" \
        -d '{"prompt": "生成一段關於未來科技的描述"}' \
        http://<hostname>:<port>/generate-text
        

通過這樣的架構設計,我們能夠在保護 generator 服務免受外部攻擊的同時,確保合法請求仍然能夠正常運行,防止惡意請求濫用 API token 或造成服務崩潰。這樣的安全措施對於任何涉及高資源消耗的 GenAI 服務來說,都是很重要的。負載均衡器與 VPC 的結合,不僅提升了內部微服務之間的安全通信,也保證了系統的高效性和穩定性。


ref.


上一篇
[Day25] 使用 CometML 管理 RAG 實驗參數與結果
下一篇
[Day27] OpenAPI 規範:基礎介紹與 FastAPI 的自動化 API 配置
系列文
從系統設計切入,探索 GenAI 在企業中的實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言