使用这些Microsoft SQL 安全示例来比较数据 API 生成器(DAB)如何向 SQL 进行身份验证、验证用户并强制实施每用户访问。 每个示例都可独立使用,但该系列的内容从基本凭据逐步过渡到用户委托的 Azure SQL 访问。
选择快速入门
从与目标匹配的问题开始。
| 如果你希望... | 使用此快速入门 |
|---|---|
| 了解最简单的 DAB 到 SQL 连接模式 | 用户名/密码 |
| 从Azure配置中删除 SQL 密码 | 托管标识 |
| 在需要登录之前添加Microsoft Entra令牌验证 | Microsoft Entra |
| 使用令牌声明筛选 DAB 中的行 | DAB 策略 |
| 使用数据库强制行级别安全性筛选 SQL 中的行 | SQL 行级别安全性 |
| 让Azure SQL直接对已登录用户进行身份验证 | 代表Azure SQL |
决策树
- 你是否只需要一个基本可用的示例?
- 使用 用户名/密码。
- 您是否希望实现 DAB 到 Azure SQL 的无密码访问?
- 使用 托管标识。
- 是否需要 DAB 来验证Microsoft Entra令牌?
- 使用 Microsoft Entra。
- 登录用户是否只能查看各自的行数据?
- 如果 DAB 应强制实施筛选器,请使用 DAB 策略。
- 如果 SQL 应强制实施筛选器,请使用 SQL 行级别安全性。
- 审核日志或数据库策略是否需要实际登录用户作为 SQL 标识?
- 使用 代表Azure SQL。
比较安全模型
DAB 身份验证提供程序 列显示 runtime.host.authentication.provider 的生效值。 如果配置省略此设置,则 DAB 使用 Unauthenticated。 除了用户名/密码和代表示例外,本地运行使用 SQL 凭据,Azure部署使用托管标识。 “on-behalf-of”示例还会将 data-source.user-delegated-auth.provider 设置为 EntraId。
| 快速入门 | 用户到 Web 应用 | Web 应用程序迁移到 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 的用户委派令牌 |
相关内容
- 快速入门:将数据 API 生成器与 SQL 配合使用
- 数据 API 生成器中的 Microsoft Entra ID 身份验证
- 授权概述
- 配置代理身份验证