EF Core应用与数据库通信安全及TLS1.2使用情况咨询
通信安全基础验证
你当前使用的连接字符串已经配置了传输层加密的核心规则:
Server=tcp:**,1433;Initial Catalog=**;Persist Security Info=False;User ID=**;Password=**;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Encrypt=True强制EF Core底层的SqlClient驱动对所有和数据库的通信流量做TLS加密,不会出现明文传输的SQL语句、认证凭据、查询结果等敏感数据TrustServerCertificate=False要求验证数据库服务端的证书合法性,有效避免中间人攻击,即使流量被截获也无法解密和篡改内容
TLS 1.2 协议使用确认
现有环境默认行为
你使用的netcoreapp3.1 运行时,自带的Microsoft.Data.SqlClient驱动(EF Core操作数据库的底层依赖)默认优先使用TLS 1.2协议发起连接协商,只要你连接的数据库服务端支持TLS 1.2(Azure SQL默认已全量支持TLS 1.2),当前通信已经默认使用TLS 1.2,不会协商到TLS 1.0/1.1等废弃版本。
强制确认方案
如果需要100%确保不会使用低版本TLS,可以做以下配置:
- 在连接字符串中追加参数
MinProtocol=Tls12,强制驱动最低使用TLS 1.2建立连接,直接拒绝低版本协议的协商请求 - 在Azure Function的启动代码中添加全局配置:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;,强制所有对外网络请求都使用TLS 1.2协议
额外通信安全优化建议
- 如果使用的是Azure SQL服务,可配置数据库防火墙仅放行Azure Function的出站IP段,减少数据库的公网暴露面
- 替换连接字符串中的账号密码配置为Azure托管身份认证,避免明文密钥泄露风险
- 生产环境关闭EF Core的敏感数据日志配置,避免调试日志中泄露SQL查询参数等敏感内容
内容的提问来源于stack exchange,提问作者Jason_Hough
相关产品推荐
相关产品推荐

