讓 KIBANA 使用者可以匯出 CSV 並下載


Kibana 匯出報表功能預設使用舊版角色 reporting_user 控管,權限較粗略。 本文介紹如何啟用新版權限 feature_reporting.generate,讓報表匯出權限更細緻可控。

建立測試資料

首先,我們先在 Elasticsearch 匯入一筆測試資料,這個步驟只是為了有資料可以測試下載,隨便寫些甚麼都好:

POST /test-export-csv/_doc
{
  "@timestamp": "2025-04-16T06:42:00.220Z",
  "AgentName": "art",
  "Speaker": "john",
  "MessageText.Text": "恭喜報名成功🎉,請留意通知!",
  "id": 132187942,
  "@version": "1"
}

關閉舊版 Reporting 權限機制

kibana.yml 中新增以下設定:

xpack.reporting.roles.enabled: false

若使用 Docker Compose,可以在 docker-compose.yml 中加入環境變數:

  kibana:
    image: docker.elastic.co/kibana/kibana:8.6.1
    environment:
      - SERVERNAME=kibana
      - ELASTICSEARCH_HOSTS=https://es01:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=changeme
      - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
      - XPACK_REPORTING_ROLES_ENABLED=false

這樣設定之後,便可以使用 自訂角色與功能權限(如 feature_reporting.generate) 來細節控管使用者是否能夠產生報表。

測試流程與結果

本地 POC 測試流程如下:

新增一個角色,並給予以下權限:

  • Discover:all
  • Dashboard:all
  • Canvas:all
  • Visualize:all

新增使用者並套用該角色,登入後可以看到 Stack Management 出現。

在 Discover 頁面,可以使用「Generate CSV」產生報表:

進入 Stack Management > Reporting,可看到剛剛產生的 CSV 報表,點右側 Icon 可下載: