如何將 Dataverse 以「只讀權限」開放給指定 Microsoft 帳號
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1339
在 Power Platform 中,如果希望某位使用者只能查看 Dataverse 資料、不能新增、修改或刪除,直覺上可能會想找一個類似「Read Only Member」的設定。
但 Dataverse 並沒有提供一個可以直接套用到整個環境的「只讀成員」按鈕。實際上,需要透過 Security Role(安全性角色) 控制資料權限,再將該角色分配給指定使用者。
本文整理完整操作流程,並說明一個容易令人困惑的現象:
為什麼某些使用者沒有被分配任何 Security Role,卻仍然會出現在環境的使用者清單中?
一、Dataverse 的權限控制方式
Dataverse 的使用者存取大致可以拆成兩個層次:
1. 使用者是否存在於環境中
當帳號被同步或加入 Dataverse 環境後,會出現在:
Power Platform 管理中心
→ 環境
→ 設定
→ 使用者與權限
→ 使用者
出現在這個清單中,只代表:
Dataverse 已經識別到這個帳號。
這並不代表該使用者已經能讀取或操作業務資料。
2. 使用者實際擁有哪些資料權限
真正決定使用者能否查看、建立、修改或刪除資料的,是:
Security Role
Security Role 可以針對每張 Dataverse Table 設定:
-
Read
-
Create
-
Write
-
Delete
-
Append
-
Append To
-
Assign
-
Share
因此,「加入環境」和「取得資料權限」是兩件不同的事情。
二、建立 Dataverse 只讀角色
如果只想讓使用者查看所有自訂業務表,可以建立一個自訂角色,例如:
Dataverse資料參照專用
建議以 Basic User 為基礎複製,而不是完全從空白建立。原因是 Basic User 內含一些開啟 App、載入檢視及儲存個人介面設定所需的最低系統權限。
建立後,針對需要開放的自訂表設定:
| 權限 | 設定 |
|---|---|
| Read | Organization |
| Create | None |
| Write | None |
| Delete | None |
| Append | None |
| Append To | None |
| Assign | None |
| Share | None |
其中:
Read = Organization
表示可以讀取該表中的所有記錄。
不建議把所有 Dataverse 系統表都設成 Organization Read,因為系統表中可能包含:
-
使用者資訊
-
流程設定
-
郵件或活動資料
-
稽核資料
-
App 與 Solution 的中繼資料
-
系統設定資訊
比較安全的做法是:
所有業務需要使用的自訂表設為只讀,系統表維持 Basic User 原本的最低權限。
如果表格數量很多,也可以使用 Power Platform CLI、PowerShell 或 Dataverse Web API 批量設定,避免逐張表手動修改。
三、將指定使用者加入環境
在 Power Platform 管理中心選擇目標環境後,進入:
設定
→ 使用者與存取權限
→ 使用者
如果目標帳號尚未出現在清單中,點擊:
+ 使用者的新增
輸入帳號,例如:
[email protected]
系統通常會檢查以下條件:
-
Microsoft Entra ID 中的帳號有效
-
使用者具有有效授權
-
如果環境綁定了 Security Group,使用者必須是該群組成員
加入成功後,帳號會出現在環境使用者清單中。
但此時只是將帳號加入環境,還沒有授予 Dataverse 資料權限。
四、將只讀角色分配給使用者
在使用者清單中選中目標帳號,然後點擊:
セキュリティ ロールの管理
也就是「管理安全性角色」。
在角色清單中勾選:
Dataverse資料參照專用
最後點擊:
保存
保存後,該使用者就會取得角色中定義的 Dataverse 只讀權限。
五、日後如何更改使用者的角色
如果之後要調整某位使用者所擁有的角色,可以回到:
環境
→ 設定
→ 使用者與存取權限
→ 使用者
選中使用者後,再進入:
セキュリティ ロールの管理
接著:
-
勾選要新增的角色
-
取消勾選不再需要的角色
-
點擊保存
這裡修改的是:
某個使用者目前被分配了哪些角色。
六、如何修改角色本身的權限
如果不是要換使用者的角色,而是要調整「只讀角色可以看哪些表」,則應進入:
環境
→ 設定
→ 使用者與存取權限
→ Security Roles
→ Dataverse資料參照專用
然後修改各張表的權限並保存。
例如,可以將某張新增的業務表加入只讀範圍:
Read:Organization
Create:None
Write:None
Delete:None
修改角色本身後,所有已經擁有該角色的使用者都會立即受到影響,不需要重新分配角色。
因此需要區分:
修改某個人的角色:到「使用者」畫面。
修改角色本身能做什麼:到「Security Roles」畫面。
七、為什麼沒有任何 Role 的使用者仍會出現在環境中?
這是 Dataverse 中很容易產生誤解的地方。
某位使用者即使沒有直接分配任何 Security Role,仍然可能出現在環境使用者清單中。
常見原因包括:
1. 使用者已被同步進 Dataverse
當帳號符合環境存取條件時,系統可能會將其同步成 Dataverse User。
這只代表 Dataverse 中存在該使用者記錄,並不代表該使用者可以讀取業務資料。
2. 使用者曾經登入或存取環境
部分帳號可能在首次登入或嘗試存取 App 時,被系統自動建立為環境使用者。
這類機制通常稱為即時使用者建立或同步。
3. 使用者透過 Team 或 Entra Group 間接取得角色
Security Role 不一定直接分配給個人,也可能分配給:
-
Dataverse Team
-
Microsoft Entra Group Team
使用者只要是該 Team 或群組的成員,就可能間接取得角色權限。
這種情況下,個人角色畫面中可能看不到直接勾選的角色,但執行時仍具有相應權限。
八、如何確認使用者到底有沒有權限
可以選中使用者,點擊:
診断を実行
也就是執行診斷。
診斷可以協助確認:
-
使用者是否能存取環境
-
授權是否有效
-
使用者是否被停用
-
是否受到 Security Group 限制
-
是否缺少必要權限
此外,還需要分別檢查:
使用者 → Security Role 管理
確認直接分配的角色,以及:
設定 → 使用者與存取權限 → Team
確認是否透過 Team 或群組繼承角色。
九、Security Role 的權限是累加的
Dataverse 的多個 Security Role 並不會互相覆蓋或限制,而是採用:
權限累加
例如某位使用者同時擁有:
只讀角色
以及:
可以修改資料的角色
那麼該使用者最終仍然可以修改資料。
只讀角色不會把其他角色的 Write 或 Delete 權限抵消。
因此,為使用者配置只讀權限時,除了勾選自訂只讀角色,也應確認沒有同時分配:
-
System Administrator
-
System Customizer
-
其他具有 Write 或 Delete 權限的角色
-
透過 Team 繼承的高權限角色
需要注意的是,Environment Maker 主要控制建立 App、Flow 等能力,和 Dataverse 記錄的讀寫權限並不是完全相同的概念,但也不應隨意分配給單純的資料閱覽使用者。
十、最終整理
如果要讓某個指定 Microsoft 帳號只讀 Dataverse,標準流程是:
建立自訂只讀 Security Role
↓
將業務表的 Read 設為 Organization
↓
將 Create、Write、Delete 等設為 None
↓
把 Microsoft 帳號加入環境
↓
將只讀角色分配給該使用者
↓
檢查是否還有其他直接或間接角色
而「使用者出現在環境清單中」只能表示:
Dataverse 已經認識這個帳號
不能直接推導出:
該使用者已經具有 Dataverse 資料存取權
真正決定其可以做什麼的,仍然是 Security Role,以及透過 Team 或 Entra Group 繼承的權限。
This article was last edited at