Azure SQL Server不公开暴露,远程开发者与Azure App Service访问方案咨询
实现步骤(Azure SQL 限定访问配置)
一、先关公共访问,避免数据库暴露
- 登录Azure门户,找到你的Azure SQL Server
- 进入「网络」设置页,把「公共网络访问」改成「禁用」
- 保存后,数据库就不会对外公开了
二、开发者远程访问配置(两种可选方案)
方案1:Azure Bastion跳板访问(推荐,不用管开发者本地IP)
- 在SQL Server所在的虚拟网络里部署Azure Bastion服务
- 给每个开发者创建Azure AD账号,分配「Bastion使用者」或「虚拟网络参与者」权限(尽量最小化,别给太高权限)
- 开发者通过Azure门户的Bastion连接到虚拟网络内的跳板VM,或者直接用Bastion的SQL代理功能访问数据库
- 在SQL Server的「网络」设置里,把虚拟网络的地址范围加到「专用网络访问」的允许列表
方案2:专用终结点 + 点到站点VPN(适合本地工具直连)
- 给Azure SQL Server创建专用终结点,关联到你的虚拟网络
- 配置点到站点(P2S)VPN,生成VPN配置文件发给每个开发者,让他们在本地设备上安装并连接到Azure虚拟网络
- SQL Server的网络设置里只允许专用终结点所在的虚拟网络访问
三、Azure App Service 访问配置
方案1:虚拟网络集成(简单直接)
- 打开你的App Service的「网络」设置,开启「虚拟网络集成」,关联到SQL Server专用终结点所在的虚拟网络
- 确保App Service的出站流量能访问这个虚拟网络里的SQL Server
- 在SQL Server的「网络」设置里,把App Service所在子网的地址范围加到允许列表
方案2:托管标识认证(更安全,不用存密码)
- 给App Service启用系统分配的托管标识(或者用户分配的,按需选)
- 登录SQL Server,执行SQL语句给这个托管标识加权限:
CREATE LOGIN [你的App Service托管标识名称] FROM EXTERNAL PROVIDER; USE [你的数据库名称]; CREATE USER [你的App Service托管标识名称] FOR LOGIN [你的App Service托管标识名称]; -- 按需添加权限,比如只读+读写 ALTER ROLE db_datareader ADD MEMBER [你的App Service托管标识名称]; ALTER ROLE db_datawriter ADD MEMBER [你的App Service托管标识名称]; - 在App Service的配置里,修改数据库连接字符串,用托管标识认证:
Server=tcp:<你的SQL Server名称>.database.windows.net,1433;Database=<你的数据库名称>;Authentication=Active Directory Managed Identity;
四、收尾:权限最小化检查
- 定期核对SQL Server的访问列表,确保只有指定的开发者(通过VPN/Bastion的虚拟网络范围)和App Service的子网/托管标识能访问
- 给开发者分配SQL数据库的最小必要权限,别给管理员权限
内容的提问来源于stack exchange,提问作者TechiRA
相关产品推荐
相关产品推荐

