Elasticsearch 中如何限制和指定 IP 位址的訪問?

在現代的微服務架構中,保護系統不受未授權訪問是非常重要的,尤其是在閘道層。 極限閘道(INFINI Gateway)作為我們服務架構的入口,它的安全性直接影響到整個系統的穩定與安全。

極限閘道提供了強大的IP訪問控制功能,允許你靈活地控制哪些IP可以訪問你的服務,以及哪些IP必須被拒絕。

注意:開源非付費版本 Elasticsearch 不具備這個功能。

本文將帶你一步步瞭解如何使用極限閘道來限制或指定允許/拒絕的IP位址,説明你增強網關的安全性。

1. 什麼是IP訪問控制?

IP 存取控制是一種安全機制,它允許你基於用戶端的IP位址來決定是否允許訪問你的服務。 極限閘道通過 ip_access_control 配置來啟用和管理這一功能。 你可以通過設定以下兩種方式來管理客戶端的訪問:

  • 白名單:只允許指定的IP位址訪問。
  • 黑名單:拒絕指定的IP位址訪問。

這兩種方式可以單獨使用,也可以結合使用,確保只有可信的IP位址能夠訪問你的服務。

2. 如何設定 IP 存取控制?

在極限閘道中,配置IP訪問控制非常簡單。 你只需要在路由配置中增加 ip_access_control 節點,啟用控制功能,並指定需要允許或拒絕的IP位址。

啟用IP存取控制

下面是一個簡單的範例,展示如何啟用IP訪問控制:

router:
  - name: my_router
    default_flow: async_bulk
    ip_access_control:
      enabled: true
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

在上面的配置中,enabled: true 就是啟用IP訪問控制的關鍵。 之後,你可以選擇進一步配置允許或拒絕的IP位址。

3. 配置白名單:只允許特定IP訪問

如果你希望只允許某些特定IP位址能夠訪問你的服務,可以使用 白名單配置。 這意味著,只有列出的IP位址可以訪問你的閘道服務,其他IP位址會被自動拒絕。

假設你只希望IP位址133.37.55.22能夠訪問服務,其他的IP都不能訪問,配置示例如下:

router:
  - name: my_router
    default_flow: async_bulk
    ip_access_control:
      enabled: true
      client_ip:
        permitted:
          - 133.37.55.22
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

在上面的配置中,client_ip.permitted 下列出了被允許訪問的IP位址。 只有IP位址為133.37.55.22的請求會通過,其他IP位址的請求都會被自動拒絕。

實際案例配置截圖:

00

驗證結果如下:

00

00

00

4. 配置黑名單:拒絕特定IP訪問

如果你希望某些特定IP位址不能訪問你的閘道服務,可以使用黑名單配置。 這意味著,列出的IP位址會被拒絕訪問,而其他未列出的IP位址將能夠正常訪問。

例如,假設你希望拒絕IP位址133.37.55.22訪問服務,配置示例如下:

router:
  - name: my_router
    default_flow: async_bulk
    ip_access_control:
      enabled: true
      client_ip:
        denied:
          - 133.37.55.22
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

在這個配置中,client_ip.denied 下列出了被拒絕訪問的IP位址。 任何來自 133.37.55.22 的請求都會被閘道直接拒絕,其他 IP 位址的請求則不會受到影響。

實際案例配置截圖參考:

图片圖片

實際驗證截圖如下:

图片圖片

由於IP位址被設置為黑名單,導致用戶端寫入報錯。

Error inserting data: AuthorizationException(403, 'Access Forbidden.\n')
  • 1.

5. 配置同時使用白名單和黑名單

你也可以將 白名單和 黑名單 結合起來使用。 例如,允許某些特定IP位址訪問,同時拒絕某些其他的IP位址。

假設你想允許 133.37.55.22 訪問,但拒絕 192.168.1.1 的訪問,配置如下:

router:
  - name: my_router
    default_flow: async_bulk
    ip_access_control:
      enabled: true
      client_ip:
        permitted:
          - 133.37.55.22
        denied:
          - 192.168.1.1
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

在這個配置中,133.37.55.22 會被允許訪問,而 192.168.1.1 會被拒絕訪問。

6. 使用IP位址訪問控制的場景

1)保護敏感服務: 如果你有一些只允許特定客戶端訪問的敏感服務,可以通過白名單來確保只有合法的客戶端能夠訪問。

2)防止惡意訪問: 黑名單可以説明你封堵已知的惡意IP位址,防止攻擊者通過嘗試訪問閘道來對系統造成危害。

3)靈活的訪問管理: 你可以根據業務需求動態地調整允許或拒絕的IP位址,確保閘道始終處於安全狀態。

7. 小結

IP 訪問控制是極限閘道提供的一項非常實用的安全功能,它能説明你控制誰能夠訪問你的服務。 通過簡單的配置,你可以指定哪些IP位址可以訪問(白名單),以及哪些IP位址不能訪問(黑名單)。 合理使用這項功能,可以有效地提高系統的安全性,防止未經授權的訪問。