Kong系列-13-官方開源插件介紹

Kong官方預置大量的插件,可以在Kong Hub查看官方插件,其中有三類插件,官方開發的開源插件;第三方開發的開源插件;適用於Kong Enterprise的收費插件。其中官方開發的開源插件有35個。

plugin hub

Kong安裝完成後已經預置了開源插件的代碼,可以在/usr/local/share/lua/5.1/kong/plugins目錄查看。也可以在Kong的github代碼庫https://github.com/Kong/kong/tree/master/kong/plugins中查看代碼。

cd /usr/local/share/lua/5.1/kong/plugins

ls
acl              datadog                      ldap-auth        rate-limiting          syslog
aws-lambda       file-log                     loggly           request-size-limiting  tcp-log
azure-functions  hmac-auth                    log-serializers  request-termination    udp-log
base_plugin.lua  http-log                     oauth2           request-transformer    zipkin
basic-auth       ip-restriction               post-function    response-ratelimiting
bot-detection    jwt                          pre-function     response-transformer
correlation-id   key-auth                     prometheus       session
cors             kubernetes-sidecar-injector  proxy-cache      statsd

tree key-auth/
key-auth/
├── daos.lua
├── handler.lua
├── migrations
│   ├── 000_base_key_auth.lua
│   ├── 001_14_to_15.lua
│   ├── 002_130_to_140.lua
│   └── init.lua
└── schema.lua

1 directory, 7 files

以下給出官方開源插件的簡單介紹。

認證Authentication

  • Basic Authentication:這是個基礎的認證功能,服務端設置用戶和密碼,客戶端發送請求時在header設置用戶和密碼,服務端接收到以後對請求進行校驗,如果通過,則處理請求,否則返回401 Unauthorized。
  • Key Authentication:向服務或者路由添加Key Authentication,請求中需要攜帶API Key進行Key的驗證。
  • LDAP Authentication:到LDAP服務器中認證用戶和密碼,需要在Proxy-Authorization或者Authorization請求header中包含用戶名和密碼的base64編碼。
  • JWT:支持RS256和ES256算法。
  • HMAC Authentication:可以用來保證數據的完整,客戶端把內容通過散列/哈希算法算出一個摘要,並把算法和內容以及摘要傳送給服務端,服務端按照該算法也算一遍,和摘要對比,如果一樣就認證內容是完整的,如果不一樣認爲內容被篡改了。
  • OAuth 2.0 Authentication:支持OAuth2服務端功能,支持授權碼模式、客戶端模式、隱式模式和密碼模式。
  • Session:可用於管理通過Kong API網關代理的API的瀏覽器會話,它爲會話數據存儲、加密、續訂、到期和瀏覽器Cookie提供配置和管理。

安全Security

  • Bot Detection:是用來篩選發送請求的客戶端(瀏覽器)的,針對是User-Agent請求header,這個其實主要是針對機器人或者爬蟲的,支持黑白名單。
  • CORS:支持跨源資源共享。
  • IP Restriction:就是通過設置IP白名單和黑名單,根據源IP來對一些請求進行攔截和防護。支持單IP、多IP或者CIDR(192.168.23.35/24) 。

流量控制Traffic Controll

  • ACL:和Base-auth、Key-Auth等插件配合,只有符合ACL策略的用戶可以訪問上游服務。
  • Proxy Cache:可以根據配置的HTTP Code、Method、content_type來緩存響應實體。它可以根據consumer或者API緩存。
  • Rate Limiting:在給定的秒、分鐘、小時、日、月或年的時間內可以發出多少HTTP請求。
  • Request Size Limiting:如果請求的body小於設定大小字節,則接受、否則拒絕。
  • Request Termination:可以暫停客戶端訪問Service或者Route。
  • Response Rate Limiting:可以根據上游服務返回的自定義響應頭來限制可以進行的請求數,在給定的秒、分鐘、小時、天、月或年限制請求。

分析和監控Analytics和Monitoring

  • Datadog
  • Prometheus
  • Zipkin

轉換Transformations

  • Correlation ID:通過在報文頭中添加一個UUID將HTTP請求和迴應關聯起來。
  • Request Transformer:在將請求轉發給上游服務之前,轉換客戶端發送的請求。可以對Method、Header、querystring和body執行remove -> rename -> replace -> add -> append(按以上順序優先)動作。
  • Response Transformer:在將響應返回給客戶端之前,轉換上游服務發送響應。可以對header或者json body執行remove -> rename -> replace -> add -> append(按以上順序優先)動作。

日誌Logging

  • File Log:將請求和響應數據記錄到磁盤上的日誌文件中(不建議使用)。
  • HTTP Log:將請求和響應數據轉發到http服務器。
  • Loggly:將請求和響應數據通過UDP轉發到Loggly服務器。Loggly是一款日誌集中管理軟件。
  • StatsD:將對Service、Route的度量指標信息轉發給StatsD服務。StatsD是一款數據採集工具。
  • Syslog:將請求和響應數據轉發到syslog服務器。
  • TCP Log:將請求和響應數據轉發到TCP服務器。
  • UDP Log:將請求和響應數據轉發到UDP服務器。
發佈了49 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章