PYODBC + MS SQL SERVER 连接 Encrypt=yes 未连接

Sco*_*ott 5 python sql-server odbc sqlalchemy pyodbc

我们有一个在 aws centos ECS 实例上运行的 python Flask 应用程序。我们正在尝试在 Linux 上使用 odbc 17 通过 PYODBC 与数据库建立加密连接。当本地运行时,我们只使用 SQL 服务器驱动程序。目前我们有代码:

params = urllib.parse.quote_plus(driver;server;user;pwd;...;Encrypt=yes)

SQLALCHEMY_DATABASE_URI="mssql+PYODBC:///?odbc_connect=%s" %params
Run Code Online (Sandbox Code Playgroud)

我们在服务器上启用了 tls。该连接在 Windows 上本地运行,但无法部署在 Linux 中。目前正在使用“yes”而不是“true”进行部署。我们还将尝试使用“trustedserverconnection=yes”。任何有关此过程的见解将不胜感激!

更新:最新错误,连接字符串属性“trustservercertificate”无效

Sco*_*ott 11

我们最终实现了第二个连接参数:

TrustServerCertificate=YES

显然,这并不理想,因为我们希望拥有良好的安全实施实践。在未来的状态中,我们需要将其设置为 false 并将我们的 ssl pem 文件放入 Linux ssl 存储中。

希望这对某人有帮助。在使用 MS SQL Server 查找 pyodbc 文档时遇到一些问题。


sfu*_*qua 5

根据此文档,pyodbc 将连接字符串传递给底层 ODBC 驱动程序。Microsoft 的文章Using Connection String keywords with SQL Server Native Client 记录了EncryptTrustServerCertificate属性。TrustServerCertificate在生产数据库中通常应避免该设置;但是,在测试与使用自签名证书的开发数据库的加密连接时,它非常有用。例如,SQL Server 的默认安装使用自签名证书,并且需要此设置。

在我的mssql+pyodbc连接字符串中,我只是?Encrypt=yes&TrustServerCertificate=yes根据需要附加。请注意,如果您在问号后已有其他设置,?请使用&代替?,例如:?Trusted_Connection=yes&Encrypt=yes&TrustServerCertificate=yes