利用這些 Microsoft SQL 安全範例,比較 Data API 建構器(DAB)如何認證 SQL、驗證使用者,以及強制執行每位使用者的存取權限。 每個範例都是自成一體的,但整個系列從基本憑證逐步延伸到使用者委派的 Azure SQL 存取。
選擇快速入門
從符合你目標的問題開始。
| 如果您想要... | 請使用此快速入門 |
|---|---|
| 學習最簡單的 DAB 轉 SQL 連線模式 | 使用者名稱/密碼 |
| 從 Azure 配置中移除 SQL 密碼 | 受控識別 |
| 在要求登入之前新增 Microsoft Entra 權杖驗證 | Microsoft Entra |
| 在 DAB 中透過代幣聲明來過濾資料列 | DAB 政策 |
| 透過資料庫強制的列層級安全性來過濾 SQL 中的資料列 | SQL 列層級安全性 |
| 讓 Azure SQL 直接認證登入用戶 | 代表使用者存取 Azure SQL |
決策樹
- 你只需要基本的工作樣本嗎?
- 使用 使用者名稱/密碼。
- 你想要無需密碼的 DAB 轉 Azure SQL 存取嗎?
- 使用 受管理身份(Managed ID)。
- 你需要 DAB 來驗證 Microsoft Entra 令牌嗎?
- 請使用Microsoft Entra。
- 已登入的使用者是否只能看到自己的資料列?
- 如果 DAB 應該強制執行過濾器,請使用 DAB 政策。
- 如果 SQL 應該強制執行這個過濾器,請使用 SQL 列層級的安全。
- 稽核日誌或資料庫政策是否需要實際登入的使用者作為 SQL 身份?
比較安全模型
DAB 驗證提供者欄顯示 runtime.host.authentication.provider 的有效值。 若設定省略此設定,DAB 則使用 Unauthenticated。 除了使用者名稱/密碼和 On-Behalf-Of 範例之外,在本機執行時會使用 SQL 認證,而部署至 Azure 時則會使用受控識別。 代理範例也會將 data-source.user-delegated-auth.provider 設定為 EntraId。
| 快速入門 | 使用者對網頁應用程式 | 網頁應用程式到 DAB | DAB 認證提供者 | DAB 轉為 SQL |
|---|---|---|---|---|
| 使用者名稱/密碼 | 匿名 | 匿名 | Unauthenticated |
SQL 憑證 |
| 受控識別 | 匿名 | 匿名 | Unauthenticated |
Azure 中的受控識別 |
| Microsoft Entra | 匿名 | 匿名 | EntraId |
Azure 中的受控識別 |
| DAB 政策 | Microsoft Entra 登入 | 持有者令牌 | EntraId |
Azure 中的受控識別 |
| SQL 列層級安全性 | Microsoft Entra 登入 | 持有者令牌 | EntraId |
Azure 中的受控識別 |
| 代表 Azure SQL | Microsoft Entra 登入 | 持有者令牌 | EntraId |
Azure SQL 的使用者委派權杖 |