如何在Azure App Service的连接字符串中隐藏用户名和密码?
隐藏Azure App Service连接字符串中明文密码的方法
下面是两种实用的Azure原生方案,无需明文存储密码:
方案一:用Azure Key Vault存储密码
- 新建一个Azure Key Vault实例,在Vault内添加「机密」,将数据库密码
myPassword作为机密值保存,给机密设置一个易识别名称(比如DB-Password)。 - 给你的App Service配置Key Vault访问权限:在Key Vault的「访问策略」中,添加App Service对应的服务主体,授予其「机密权限」中的「获取(Get)」权限。
- 修改App Service配置里的连接字符串,把明文密码替换为Key Vault机密的引用格式,示例如下:
保存配置后,App Service会自动从Key Vault拉取真实密码,配置面板中只会显示引用字符串,不会暴露明文密码。Server=tcp:myserver.database.windows.net,1433;Database=myDataBase;User ID=mylogin@myserver;Password=@Microsoft.KeyVault(VaultName=你的密钥库名称;SecretName=DB-Password);Trusted_Connection=False;Encrypt=True;
方案二:用托管标识直接认证(适用于Azure SQL Database)
如果你的数据库是Azure SQL Database,可以彻底移除连接字符串中的密码:
- 在App Service的「标识」面板中,开启「系统分配托管标识」开关,保存后会生成专属服务主体。
- 登录SQL数据库,执行以下SQL命令为该托管标识添加数据库用户并配置权限:
可根据实际业务需求调整角色权限(比如只读/读写等)。CREATE USER [你的App Service名称] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [你的App Service名称]; ALTER ROLE db_datawriter ADD MEMBER [你的App Service名称]; - 修改连接字符串,删除
User ID和Password字段,添加托管标识认证参数:
后续App Service会通过托管标识自动完成数据库认证,全程无需密码。Server=tcp:myserver.database.windows.net,1433;Database=myDataBase;Trusted_Connection=False;Encrypt=True;Authentication=Active Directory Managed Identity;
内容的提问来源于stack exchange,提问作者Jennifer
相关产品推荐
相关产品推荐

