本文将引导你了解保护专用 SQL 池(以前称为 SQL DW)的基础知识。 具体而言,本文首先介绍了如何使用专用 SQL 池(以前为 SQL DW)限制访问、保护数据和监视活动的资源。
连接安全性
连接安全性是指如何使用防火墙规则和连接加密来限制和安全与数据库的连接。
逻辑 SQL 服务器及其数据库都使用防火墙规则来拒绝未显式批准的 IP 地址的连接尝试。 若要允许来自应用程序或客户端计算机的公共 IP 地址的连接,必须先使用 Azure 门户、REST API 或 PowerShell 创建服务器级防火墙规则。
最佳做法是,应尽可能多地限制通过服务器级防火墙允许的 IP 地址范围。 若要从本地计算机访问专用 SQL 池(以前为 SQL DW),请确保网络上的防火墙和本地计算机允许 TCP 端口 1433 上的传出通信。
专用 SQL 池(前 SQL DW)使用服务器级 IP 防火墙规则。 不支持数据库级 IP 防火墙规则。 有关详细信息,请参阅 Azure SQL 数据库防火墙规则
与专用 SQL 池(以前为 SQL DW)的连接默认加密。 将忽略修改连接设置以禁用加密。
身份验证
身份验证是指在连接到数据库时如何证明身份。 专用 SQL 池(以前为 SQL DW)目前支持使用用户名和密码以及Microsoft Entra ID 的 SQL Server 身份验证。
为数据库创建服务器时,使用用户名和密码指定了“服务器管理员”登录名。 使用这些凭据,可以通过 SQL Server 身份验证以数据库所有者(或“dbo”)的身份在该服务器对任何数据库进行验证。
但是,最佳做法是,组织的用户应使用不同的帐户进行身份验证。 这样,便可以限制授予应用程序的权限,并降低恶意活动的风险,以防应用程序代码容易受到 SQL 注入攻击。
若要创建经过身份验证的 SQL Server 用户,请使用服务器管理员登录名连接到服务器上的 master 数据库,并创建新的服务器登录名。 最好在 master 数据库中创建用户。 在 master 中创建用户允许用户使用 SSMS 等工具登录,而无需指定数据库名称。 它还允许他们使用对象资源管理器查看服务器上的所有数据库。
-- Connect to master database and create a login
CREATE LOGIN ApplicationLogin WITH PASSWORD = 'Str0ng_password';
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;
然后,使用服务器管理员登录名连接到 专用 SQL 池(以前为 SQL DW), 并根据创建的服务器登录名创建数据库用户。
-- Connect to the database and create a database user
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;
若要授予用户执行其他操作(例如创建登录名或创建新数据库)的权限,请将用户分配到 master 数据库中的 Loginmanager
和 dbmanager
角色。
有关这些附加角色和对 SQL 数据库进行身份验证的详细信息,请参阅 管理 Azure SQL 数据库中的数据库和登录名。 有关使用 Microsoft Entra ID 进行连接的详细信息,请参阅 使用 Microsoft Entra 身份验证进行连接。
授权
授权是指在身份验证和连接后,你能在数据库中执行的操作。 授权权限由角色成员身份和权限决定。 作为最佳实践,应向用户授予所需的最低权限。 若要管理角色,可以使用以下存储过程:
EXEC sp_addrolemember 'db_datareader', 'ApplicationUser'; -- allows ApplicationUser to read data
EXEC sp_addrolemember 'db_datawriter', 'ApplicationUser'; -- allows ApplicationUser to write data
要连接的服务器管理员帐户是“db_owner”角色的成员,该角色拥有在数据库中执行任何操作的权限。 保存此帐户以部署架构升级和其他管理作。 使用具有更有限权限的“ApplicationUser”帐户,通过应用程序所需的最低权限从应用程序连接到数据库。
可通过多种方式进一步限制用户可以在数据库中执行的作:
- 精细的权限允许你控制可以在数据库中的各个列、表、视图、架构、过程和其他对象上执行的操作。 使用精细权限以拥有最大程度的控制,并授予必要的最低权限。
- 除db_datareader和db_datawriter以外的数据库角色可用于创建更强大的应用程序用户帐户或不太强大的管理帐户。 内置的固定数据库角色提供了一种授予权限的简单方法,但可能会导致授予比必要权限更多的权限。
- 存储过程 可用于限制可对数据库执行的操作。
以下示例授予对用户定义的架构的读取访问权限。
--CREATE SCHEMA Test
GRANT SELECT ON SCHEMA::Test to ApplicationUser
从 Azure 门户或使用 Azure 资源管理器 API 管理数据库和服务器由门户用户帐户的角色分配控制。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色。
加密
透明数据加密(TDE)通过加密和解密静态数据来帮助防范恶意活动的威胁。 加密数据库时,将加密关联的备份和事务日志文件,而无需对应用程序进行任何更改。 TDE 使用称为数据库加密密钥的对称密钥来加密整个数据库的存储。
在 SQL 数据库中,数据库加密密钥受内置服务器证书的保护。 对于每个服务器,内置服务器证书是唯一的。 Azure 每隔 90 天自动轮换这些证书。 使用的加密算法是 AES-256。 有关 TDE 的一般说明,请参阅 透明数据加密。
后续步骤
有关使用不同协议连接到仓库的详细信息和示例,请参阅“连接到专用 SQL 池”(以前为 SQL DW)。