如何將 Dataverse 以「只讀權限」開放給指定 Microsoft 帳號

| PowerPlatform | 1 Reads

在 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