Python Snowflake 连接器的缓存密码

cache passcode for python snowflake connector

提问人:x89 提问时间:10/6/2022 更新时间:6/7/2023 访问量:525

问:

为了连接我的雪花数据库,我使用密码(使用 Duo)进行身份验证,因为启用了 MFA

con = snowflake.connector.connect(
    user='',
    password='',
    account='',
    warehouse='',
    database='',
    schema='',
    passcode='011415'
)

但是,每次我想运行我的 python 脚本时,我都需要刷新 Duo 应用程序中的密码,然后在脚本中重新输入新密码。

有什么方法可以避免每次都重复该步骤?密码可以被卡西吗?

例如,当我使用 Dbeaver 时,它会向我的 Duo 应用发送通知,一旦我批准它,在接下来的 24 小时内我不需要在那里重新进行身份验证,当然,除非我关闭计算机。

python snowflake-cloud-data-platform 多因素身份验证 duosecurity

评论


答:

0赞 Lukasz Szozda 10/6/2022 #1

Python 连接器 - 使用多重身份验证 (MFA)

Snowflake 支持缓存 MFA 令牌,包括将 MFA 令牌缓存与 SSO 相结合。

使用 MFA 令牌缓存最大程度地减少身份验证期间的提示数 — 可选

MFA 令牌缓存有助于减少在连接到 Snowflake 并对其进行身份验证时必须确认的提示数,尤其是在相对较短的时间间隔内进行多次连接尝试时。

缓存的 MFA 令牌的有效期最长为 4 小时。

0赞 PJGaetan 6/7/2023 #2

我也在寻找答案,如果将来有人在寻找它。

此解决方案不在官方文档中,但您可以使用client_request_mfa_tokenDBT 对其雪花连接器使用相同类型的模式。

请注意,根据文档,您最多有 4 小时的缓存期。

对于某些 Snowflake 提供的客户端,您可以将 MFA 令牌缓存长达 4 小时。有关更多信息,请参阅使用 MFA 令牌缓存最大程度地减少身份验证期间的提示数 - 可选

kawrgs = {
    "authenticator": "externalbrowser",
    "client_request_mfa_token": True,
    # ...

}
with snowflake.connector.connect(**kawrgs):
    pass