1. 修改配置文件
修改superset中的config.py配置文件孩哑,將PUBLIC_ROLE_LIKE_GAMMA改為T(mén)rue。
注釋意思:
授予公共角色與GAMMA角色相同的權(quán)限集瘟栖。
如果想讓匿名用戶查看,可以設(shè)置這里半哟,在儀表盤(pán)對(duì)特定數(shù)據(jù)集的授權(quán)顯示,也在這里設(shè)置寓涨。
2. 去掉X-Frame-Options限制
避免iframe跨站訪問(wèn)問(wèn)題。
3. 加入數(shù)據(jù)庫(kù)權(quán)限這里加入所有數(shù)據(jù)庫(kù)權(quán)限
其中:
?can explore on Superset為導(dǎo)出圖表
?can explore json on Superset為導(dǎo)出圖表json
?all database access on all_database_access訪問(wèn)所有數(shù)據(jù)庫(kù)權(quán)限戒良,也可以設(shè)置單個(gè)
4. iframe嵌入
5. iframe跨域集成時(shí)遇到難題
第一道墻
首先,認(rèn)識(shí)一下 X-Frame-Options。
The X-Frame-Options
HTTP 響應(yīng)頭是用來(lái)給瀏覽器 指示允許一個(gè)頁(yè)面 可否在 <frame>
, <iframe>
, <embed>
或者 <object>
中展現(xiàn)的標(biāo)記译打。站點(diǎn)可以通過(guò)確保網(wǎng)站沒(méi)有被嵌入到別人的站點(diǎn)里面,從而避免 clickjacking 攻擊奏司。
X-Frame-Options 有三個(gè)可能的值:
X-Frame-Options: deny # 表示該頁(yè)面不允許在 frame 中展示,即便是在相同域名的頁(yè)面中嵌套也不允許韵洋。
X-Frame-Options: sameorigin # 表示該頁(yè)面可以在相同域名頁(yè)面的 frame 中展示竿刁。
X-Frame-Options: allow-from https://www.baidu.com/ # 表示該頁(yè)面可以在指定來(lái)源的 frame 中展示搪缨。
在0.27中保持這個(gè)配置項(xiàng)為空即可,在master中遠(yuǎn)遠(yuǎn)不夠副编。
第二道墻
這么修改后可能還會(huì)遇到在打開(kāi)iframe時(shí)出現(xiàn)錯(cuò)誤
這里的原因可能是——開(kāi)啟public角色的訪問(wèn)權(quán)限后,真正放到iframe中還需要解決跨域問(wèn)題痹届,而老版本中對(duì)http_headers配置項(xiàng)的修改不起作用呻待,只能直接對(duì)explore_json去除csrf保護(hù)队腐。
添加配置文件中的??
WTF_CSRF_EXEMPT_LIST = [
"superset.views.core.explore_json"
]
再次訪問(wèn)有效,所以在master版本中柴淘,主要是依靠對(duì)特定接口取消保護(hù)來(lái)達(dá)到目的迫淹。
第三道墻
如果使用nginx進(jìn)行部署的話,還需要配置 nginx 發(fā)送 X-Frame-Options 響應(yīng)頭为严,把下面這行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options sameorigin always;
注意:
修改配置項(xiàng)http_headers為 {"X-Frame-Options": ""} 對(duì)授權(quán)無(wú)用,但對(duì)限制有用梗脾;
-
用戶訪問(wèn)不在自己角色可能訪問(wèn)的數(shù)據(jù),只是權(quán)限問(wèn)題炸茧,可能報(bào)錯(cuò):