有不同的方式可以使用 Power Apps 連線 到 SQL Server 並進行驗證。 本文概述概念,有助於選擇如何使用符合應用程式需求的安全性方法連線到 SQL Server。
這很重要
安全隱含連線功能已於 2024 年 1 月發行。 Microsoft 強烈建議目前使用隱含連線的所有應用程式轉換成安全的隱含連線,並撤銷與使用者共用的連線。
明確、隱含和安全隱含連線之間的差異
每當您使用連線到 SQL Server 的 Power Apps 建立應用程式時,都會建立與 SQL Server 的連線。 當這類應用程式發佈並與其他人共用時,應用程式和連線都會部署至這些使用者。 換句話說,應用程式和連線對共用應用程式的使用者來說都是可見的。
用於此類連線的驗證方法可以是 明確 或 隱含的。 我們也可以說這種聯繫是明確或隱含地共享的。
- 明確共用連線表示應用程式的終端使用者必須使用自己的明確認證向 SQL Server 進行驗證。 通常,此驗證會在幕後發生,做為 Microsoft Entra 或 Windows 驗證交握的一部分。 使用者甚至不會注意到何時進行驗證。
- 隱含共用連線表示使用者在建立應用程式時隱含使用應用程式製作者用來連線和驗證資料來源的帳戶認證。 終端使用者的認證 不會 用於驗證。 每次使用者執行應用程式時,他們都會使用作者建立應用程式時使用的認證。
- 安全的隱含共用連線是指應用程式的終端使用者隱含使用應用程式製作者在建立應用程式時用來連線和驗證資料來源的帳戶認證的案例。 這表示不會使用使用者自己的認證來進行驗證。 相反地,當使用者執行應用程式時,他們會使用應用程式作者建立應用程式時所用的認證。 請務必注意,最終使用者無法直接存取連線,且應用程式僅允許存取一組有限的動作和表格。
以下四種連線驗證類型可與 Power Apps 的 SQL Server 搭配使用:
| 驗證類型 | Power Apps 連線方法 |
|---|---|
| 整合型 Microsoft Entra | Explicit |
| SQL Server 驗證 | 隱含/安全隱含 |
| Windows 驗證 | 隱含/安全隱含 |
| Windows 驗證 (非共用) | Explicit |
隱含連線共用風險
所有新應用程式都會自動使用新的安全隱含連線。 不過,使用舊版「隱含連線」的應用程式時,應用程式及其連線都會部署至使用者,這表示 使用者可以根據這些連線撰寫新的應用程式。
當作者使用 安全的隱含連線時,表示不會共用任何連線,也不會收到一般使用者接收連線物件。 這可消除一般使用者作者重複使用連線來建立新應用程式的風險。 相反地,應用程式會使用知道應用程式且僅與該特定應用程式通訊的 Proxy 連線。 Proxy 連線允許有限的動作 (建立、讀取、更新、刪除) 和存取應用程式中發佈應用程式時定義的特定資料表。 因此,只有授權的動作和存取權會授與一般使用者。
舊式的簡單隱含連線實際上會將連線物件散發給一般使用者。 例如,如果您建立的應用程式會篩選掉您不希望使用者看到的資料。 但是,過濾掉的數據存在於數據庫中。 但您依賴您設定的篩選器來確保最終使用者不會看到某些資料。
同樣地,使用舊式簡單隱含連線時,在您部署應用程式之後,使用者可以在他們建立的任何新應用程式中使用與您的應用程式一起部署的連線。 在新的應用程式中,使用者可以看到您在應用程式中篩選掉的資料。 請務必使用新的安全隱含連線。
這很重要
將較舊的隱含共用連線部署至一般使用者後,您可能在共用的應用程式中放置的限制 (例如篩選器或唯讀存取) 對一般使用者建立的新應用程式不再有效。 終端使用者將擁有驗證允許的任何權限,作為隱含共用連線的一部分。 因此,當您將應用程式轉換為使用安全隱含連線時, 您也 必須撤銷與應用程式共用的連線。 系統管理員可以取得與 COE 工具組隱含共用連線的應用程式報告。
用戶端和伺服器安全
您不能依賴透過篩選或其他用戶端作業來確保資料的安全性。 需要安全過濾資料的應用程式必須確保使用者識別和過濾同時發生在伺服器上。
在使用者身分識別和安全性方面,請使用 Microsoft Entra ID 等服務,而不是依賴應用程式內設計的篩選。 此設定可確保伺服器端篩選器如預期般運作。
下圖說明應用程式內的安全性模式在用戶端和伺服器端安全性模型之間有何不同。
在用戶端安全性應用程式模式中,[1] 使用者只會向用戶端的應用程式進行驗證。 然後 [2] 應用程式會要求服務的資訊,而 [3] 服務只會根據資料要求傳回資訊。
在伺服器端安全性模式中,[1] 使用者會先向服務進行驗證,以便服務知道使用者。 然後,當從應用程式進行呼叫時 [2],服務 [3] 會使用目前使用者的已知身分識別來適當地篩選資料,並 [4] 傳回資料。
上述隱含的部門共用案例是這兩種模式的組合。 使用者必須使用 Microsoft Entra 認證登入 Power Apps 服務。 此行為是伺服器安全性應用程式模式。 使用者會使用服務上的 Microsoft Entra 身分識別來識別。 因此,應用程式僅限於 Power Apps 已正式共用應用程式的使用者集。
不過,與 SQL Server 的隱含共用連線是用戶端安全性應用程式模式。 SQL Server 只知道使用了特定的使用者名稱和密碼。 例如,任何用戶端篩選都可以使用相同的使用者名稱和密碼的新應用程式來略過。
若要安全地篩選伺服器端的資料,請使用 SQL Server 中的內建安全性功能,例如資料列的資料 列層級安全性 ,以及特定使用者對特定物件 (例如資料行) 的 拒絕 許可權。 此方法會使用 Microsoft Entra 使用者身分識別來篩選伺服器上的資料。
一些現有的企業服務使用了一種方法,即在商務資料層中擷取使用者身分識別,其方式與 Microsoft Dataverse 大致相同。 在此情況下,商務層可能會或可能不會使用 SQL Server 的資料列層級安全性,並直接拒絕功能。 如果沒有,通常是使用預存程式或檢視來啟用安全性。
商務層 (在伺服器端) 會使用已知的使用者 Microsoft Entra 身分識別,以 SQL Server 主體的形式叫用預存程序,並篩選資料。 不過,Power Apps 目前不會連線到預存程序。 商務層也可以叫用使用 Microsoft Entra 身分識別作為 SQL Server 主體的檢視。 在此情況下,請使用 Power Apps 連線到檢視,以便在伺服器端篩選資料。 僅向使用者公開檢視可能需要 Power Automate 流程進行更新。