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 可下載: