使用 Microsoft Entra ID 启用数据库身份验证
每个安全数据库的两个组件是身份验证和授权。
身份验证是证明用户所声明身份的过程。 某个用户使用用户帐户连接到数据库。 当用户尝试连接到数据库时,需要提供用户帐户和身份验证信息。 将使用以下两种身份验证方法之一对用户进行身份验证:
- SQL 身份验证 - 使用此身份验证方法,用户将提交用户帐户名和关联的密码来建立连接。 对于与登录名关联的用户帐户,此密码存储在 master 数据库中;或对于没有与登录名关联的用户帐户,此密码存储在包含这一类用户帐户的数据库中。
- Microsoft Entra 身份验证 - 使用此身份验证方法时,用户将提交用户帐户名称,并请求服务使用 Microsoft Entra ID 中存储的凭据信息。
可以在 master 数据库中创建用户帐户,并在服务器上的所有数据库中授予权限,也可以在数据库本身中创建它们(称为包含的数据库用户)。 通过使用包含的数据库,你可以获得增强的可移植性和可伸缩性。
登录名和用户:在 Azure SQL 中,数据库中的用户帐户可以与 master 数据库中存储的登录名相关联,也可以是单个数据库中存储的用户名。
- 登录名是 master 数据库中的单个帐户,一个或多个数据库中的用户帐户可以关联到该帐户。 使用登录名时,用户帐户的凭据信息将与该登录名一起存储。
- 用户帐户是任何数据库中的单个帐户,该帐户可以但不一定要关联到登录名。 使用未关联到登录名的用户帐户时,凭据信息将与该用户帐户一起存储。
访问数据和执行各种操作所需的授权是使用数据库角色和显式权限进行管理的。 授权是指为用户分配权限,它决定了该用户可以执行哪些操作。 授权是由用户帐户的数据库角色成员身份和对象级权限控制。 最佳做法是,应向用户授予所需的最低权限。 最佳做法是,应用程序应使用专用帐户进行身份验证。 这样,便可以限制授予应用程序的权限,并在应用程序代码容易受到 SQL 注入攻击的情况下降低恶意活动的风险。 建议的方法是创建包含的数据库用户,使应用程序能够直接向数据库进行身份验证。
创建新数据库后的现有登录名和用户帐户
首次部署 Azure SQL 时,你可以为特殊类型的管理登录(服务器管理员)指定登录名和密码。在部署期间,将在 master 数据库和用户数据库中进行以下登录名和用户配置:
- 使用指定的登录名创建拥有管理特权的 SQL 登录名。 登录名是用于登录到 SQL 数据库、SQL 托管实例和 Azure Synapse 的单个帐户。
- 此登录名对所有数据库拥有完全管理权限,充当服务器级主体。 此登录名具有所有可用权限,且不受限制。 在 SQL 托管实例中,会将此登录名添加到 sysadmin 固定服务器角色(Azure SQL 数据库中不存在此角色)。
- 当此帐户登录到数据库时,它们将与每个用户数据库中存在的特殊用户帐户
dbo
(用户帐户)匹配。 dbo 用户拥有数据库中的所有数据库权限,并且是db_owner
固定数据库角色的成员。
若要确定逻辑服务器的服务器管理员帐户,请打开 Azure 门户,然后浏览到服务器或托管实例的属性选项卡。
创建服务器管理员帐户的名称后,无法对其进行更改。 若要重置服务器管理员的密码,请转到 Azure 门户,单击“SQL Server”,从列表中选择服务器,然后单击“重置密码”。 若要重置 SQL 托管实例的密码,请转到 Azure 门户,然后依次单击实例和“重置密码”。 也可以使用 PowerShell 或 Azure CLI。