小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

PowerBI開發(fā) 第十五篇:Power BI的行級安全

 敬鋒 2023-05-02 發(fā)布于廣東

Power BI支持行級安全(Row-Level Security,RLS)的權(quán)限控制,用于限制用戶對Dashboard、報表和DataSet的訪問。用戶瀏覽的報表是相同的,但是看到的數(shù)據(jù)卻是不同的。

RLS內(nèi)部通過DAX函數(shù) username() 和 userprincipalname()來實(shí)現(xiàn),RLS使得PowerBI能夠在行級別上對用戶訪問的數(shù)據(jù)進(jìn)行限制。這兩個函數(shù)在PowerBI Desktop中返回的都是用戶的信息,只不過格式不同:

  • username() :返回 domain\user_name
  • userprincipalname() :返回 user_name@domain.com

這兩個函數(shù)在PowerBI Service中返回的格式是相同的:user_name@domain.com。如果需要發(fā)布到PowerBI Service中,建議使用 userprincipalname()函數(shù)來創(chuàng)建過濾規(guī)則。

一,實(shí)現(xiàn)RLS的組件

RLS的主要組件是:Users、Roles和Rules。用戶訪問數(shù)據(jù)時,RLS按照角色中定義的規(guī)則對用戶的訪問進(jìn)行控制。

  • Users:瀏覽報表的用戶,使用user name 或 email address 來唯一標(biāo)識。
  • Roles:用戶屬于Role,一個角色是一個Rule的容器。
  • Rules:規(guī)則(Rule)是過濾數(shù)據(jù)的斷言(Predicate)。 

在PowerBI Desktop中創(chuàng)建角色和規(guī)則,當(dāng)發(fā)布到PowerBI Service中時,角色和規(guī)則也會發(fā)布到PowerBI Service中,報表開發(fā)人員需要在PowerBI Service中對DataSet的Security進(jìn)行配置。

二,創(chuàng)建用戶權(quán)限表和關(guān)系

實(shí)現(xiàn)RLS的關(guān)鍵一步是配置用戶權(quán)限表,用戶權(quán)限表用于指定用戶有權(quán)限訪問的數(shù)據(jù),而關(guān)系是RLS能夠起作用的基礎(chǔ),通過關(guān)系的交叉過濾功能實(shí)現(xiàn)用戶訪問數(shù)據(jù)的行級控制。

舉個例子,有如下用戶權(quán)限表:

在本例中,我們在規(guī)則中使用userprincipalname()函數(shù),UserName列是用戶的郵件地址,Product列是用戶可以訪問的產(chǎn)品類型,一個User可以訪問多個Product。該表和DimProductCategory創(chuàng)建關(guān)系時,設(shè)置為“many to 1”的雙向關(guān)系,通過UserName來過濾用戶可以訪問的Product。

三,創(chuàng)建角色和規(guī)則

有了用戶權(quán)限配置表之后,接下來就是創(chuàng)建角色和規(guī)則,角色是用戶的集合,角色中的所有用戶遵守相同的規(guī)則;規(guī)則是定義用戶是否有訪問數(shù)據(jù)的權(quán)限。

在Modeling 選項(xiàng)卡中,選擇“Manager Roles”:

點(diǎn)擊“Create”按鈕,創(chuàng)建一個Role,并命名角色。從Tables列表中添加Filter,在“Table filter DAX expression” 中輸入DAX表達(dá)式,也就是創(chuàng)建規(guī)則,用于對用戶進(jìn)行過濾:

為了確保規(guī)則的正常運(yùn)行,點(diǎn)擊“View as Roles”,查看規(guī)則運(yùn)行的情況:

也可以選擇Other user,輸入一個用戶名稱,檢查規(guī)則對該用戶產(chǎn)生的效果。

四,管理角色和規(guī)則

在創(chuàng)建角色時,可以創(chuàng)建一個admin的角色,可以訪問所有的數(shù)據(jù),設(shè)置DAX表達(dá)式:

UserName='admin@domain.com'

對于其他用戶,其訪問數(shù)據(jù)的權(quán)限受到限制,創(chuàng)建常規(guī)的角色,設(shè)置DAX表達(dá)式:

UserName = userprincipalname()

把PowerBI發(fā)布到PowerBI Service中,需要在數(shù)據(jù)模型中管理RLS。在PowerBI Service的Datasets中,點(diǎn)擊Security,把用戶添加到角色中:

把用戶或用戶組添加到角色中,用戶組中的用戶有權(quán)限訪問報表。在訪問報表時,userprincipalname()函數(shù)返回的是用戶的郵件地址,而不是用戶組的郵件地址,從而實(shí)現(xiàn)用戶的權(quán)限控制:

報表管理人員,可以創(chuàng)建一個用戶組,把用戶組添加到角色中,并通過用戶組來管理User對報表的訪問,以實(shí)現(xiàn)RLS。

 

參考文檔:

Row-level security (RLS) with Power B

USERPRINCIPALNAME – show user name and use it in RLS (DAX – Power Pivot, Power BI)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多