You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure SQL Server强制非Azure IP通过SSMS使用Office 365登录

配置Azure SQL Server实现外部IP需Azure AD(Office 365)验证、Azure内部IP可使用SQL账号访问

核心思路

通过启用Azure AD身份验证、IP防火墙规则区分访问来源、登录触发器限制SQL账号访问范围三个环节配合,实现:

  • Azure内部服务(如Web Apps)可使用SQL账号直接连接
  • 外部IP连接必须通过Azure AD(Office 365)凭据验证,即便SQL账号密码正确也无法登录

1. 启用Azure SQL Server的Azure AD身份验证

  • 登录Azure门户,定位到目标SQL Server
  • 进入设置 > Azure Active Directory,设置Azure AD管理员(可选择单个用户或安全组)并保存。这一步是让SQL Server支持Azure AD身份验证方式。

2. 配置IP防火墙规则

  • 进入SQL Server的设置 > 防火墙和虚拟网络
  • 配置两条关键规则:
    • 允许Azure服务访问:勾选允许Azure服务和资源访问此服务器,这条规则会放行Azure内部服务的连接请求
    • 外部IP规则:添加需要开放的外部IP范围(比如员工办公IP),不要直接开放所有IP,确保只有指定外部IP能尝试连接

3. 创建登录触发器限制SQL账号的访问来源

在SQL Server中执行以下T-SQL脚本,创建服务器级登录触发器:

CREATE TRIGGER BlockSQLAuthFromExternalIP
ON ALL SERVER WITH EXECUTE AS '你的AzureAD管理员账号'
FOR LOGON
AS
BEGIN
    -- 判断当前登录账号为SQL账号(非Azure AD账号),且连接IP不在Azure内部IP范围
    IF ORIGINAL_LOGIN() NOT LIKE 'AzureAD%'
       AND EXISTS (
           SELECT 1
           FROM sys.dm_exec_connections
           WHERE session_id = @@SPID
               -- 排除Azure内部常用IP段,可根据实际情况补充完整Azure公网/私有IP范围
               AND client_net_address NOT IN ('10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16')
       )
    BEGIN
        -- 拒绝非Azure IP的SQL账号登录请求
        ROLLBACK;
    END
END;

说明:AzureAD%是Azure AD账号的默认命名格式,若你的Azure AD账号命名规则不同,可调整匹配逻辑;Azure IP范围可根据实际使用的Azure区域补充完整。

4. 验证配置效果

  • 外部IP测试:用SSMS选择SQL Server身份验证输入正确账号密码,会被触发器拒绝;切换为Azure Active Directory - 通用与MFA(或其他Azure AD验证方式),输入Office 365凭据即可正常登录。
  • Azure内部测试:在Web Apps中使用SQL账号连接数据库,可正常访问。

内容的提问来源于stack exchange,提问作者Ongun23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:15:31