【问题标题】:security used for communication the DB within EF Core用于在 EF Core 中与数据库通信的安全性
【发布时间】:2021-11-02 14:16:27
【问题描述】:
我需要知道在哪里可以找到有关从 EF Core 应用程序向数据库发送请求时使用的安全性的信息。我正在使用带有 .NET (netcoreapp3.1) 的 Azure 函数。这是我的连接字符串,尽管我需要了解有关通信流量的更多信息,尽管我已经加密了数据,即
Server=tcp:,1433;Initial Catalog=;Persist Security Info=False;User
ID=;Password=;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection
超时=30;");
任何帮助都会很棒,干杯!
更新我需要知道是否正在使用 TLS1.2。
【问题讨论】:
标签:
c#
entity-framework-core
【解决方案1】:
连接字符串的重要部分是encrypt=true - 这会强制客户端使用安全、加密的连接。正如您随后发现的那样,数据库服务器负责确定接受哪些协议 - 在 Azure 中,您可以将数据库服务器配置为至少接受 TLS 1.0、1.1 或 1.2,这是在防火墙和虚拟下的服务器级别设置的网络。
documentation states:
加密
为 true 时,如果服务器安装了证书,SQL Server 将对客户端和服务器之间发送的所有数据使用 SSL 加密。公认的值是真、假、是和否。有关详细信息,请参阅连接字符串语法。
从 .NET Framework 4.5 开始,当 TrustServerCertificate 为 false 且 Encrypt 为 true 时,SQL Server SSL 证书中的服务器名称(或 IP 地址)必须与连接字符串中指定的服务器名称(或 IP 地址)完全匹配。否则,连接尝试将失败。
【解决方案2】:
刚刚在 Azure DB 上看到,您可以选择最小的 tls 版本,因此设置为 1.2,它将拒绝任何不在 1.2 的连接,因此这表明 EF Core 使用 tls 1.2 进行传输,因为它不拒绝。