【问题标题】:How to secure pandas methods when communicating with a Postgres database?与 Postgres 数据库通信时如何保护 pandas 方法?
【发布时间】:2015-12-06 05:00:14
【问题描述】:

Python Pandas 有两个to_sqlread_sql 方法,可用于与数据库通信。

我正在连接到 Postgres 数据库。 Pandas 似乎使用SQL Alchemy and psycopg2 进行通信。

使用create_engine('mysql+mysqlconnector://user:password@amazon_endpoint:port/database_name',connect_args={'sslmode':'require'}, echo=True) 时,我收到AttributeError: Unsupported argument 'sslmode' 错误。

然后我看到以下帖子:12 并将代码修改为create_engine('mysql+mysqlconnector://user:password@amazon_endpoint:port/database_name?ssl_ca=/home/user/Downloads/rds-combined-ca-bundle.pem')。现在连接正常,我可以连接到数据库。这是否意味着连接现在是安全的?有什么方法可以确认吗?

【问题讨论】:

    标签: python postgresql pandas sqlalchemy


    【解决方案1】:

    我不认为默认情况下连接是安全的,除非您的 Postgres 实例已配置为需要安全连接。首先,您的实例需要使用 SSL 支持构建,然后告诉客户端安全连接是一件简单的事情。来自the documentation

    PostgreSQL 原生支持使用 SSL 连接来加密客户端/服务器通信以提高安全性。这需要在客户端和服务器系统上都安装 OpenSSL,并且在构建时启用 PostgreSQL 中的支持(参见第 15 章)。

    在编译了 SSL 支持后,可以通过在 postgresql.conf 中将参数 ssl 设置为 on 来启动 PostgreSQL 服务器并启用 SSL。服务器将在同一个 TCP 端口上侦听正常连接和 SSL 连接,并将与任何正在连接的客户端协商是否使用 SSL。默认情况下,这是客户的选择;请参阅第 19.1 节,了解如何设置服务器以要求对部分或所有连接使用 SSL。

    当您使用to_sqlread_sql 时,向它传递一个使用sslmode=require 设置的SQLAlchemy 连接。 This question 提供完整的 sn-p 用于设置您的连接:

    db = create_engine(
      'postgresql+pg8000://user:pass@hostname/dbname',
      connect_args={'sslmode':'require'},
      echo=True
    ).connect()
    

    【讨论】:

    • 对意外的回复编辑感到抱歉。您的回复帮助我得到了结果(我更新了票以反映这一点)。有什么方法可以确认连接是安全的吗?
    • 如果您要连接到 Postgres,那么您指定 MySQL 协议有点奇怪。我想确认的唯一方法是找到一些详细的连接输出或嗅探您的网络流量。
    • 我在亚马逊上有一个 MySQL 和 Postgres 实例。检查连接时,我检查了两者并复制了 mysql 连接器代码:P。感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2021-01-14
    • 2021-09-09
    • 1970-01-01
    相关资源
    最近更新 更多