OCSP 配置¶
本主题概述了 OCSP、其在 Snowflake 中的用途,以及帮助诊断 OCSP 问题的信息。
本主题内容:
概述¶
Snowflake 使用在线证书状态协议 (OCSP) 来提供最大的安全性,以确定当 Snowflake 客户端尝试通过 HTTPS 连接到端点时是否会吊销证书。
在根证书颁发机构 (CA) 颁发中间证书之前,Snowflake 使用 OCSP 评估信任链中的每个证书。确保不会吊销每个证书有助于 Snowflake 在身份验证过程中与受信任的参与者建立安全连接。
根据您的客户端或驱动程序版本以及本页描述的配置,可以关闭 OCSP 并调整 OCSP 确定吊销证书时发生的操作。
故障打开或故障关闭行为¶
目前,在 OCSP 事件期间,就 Snowflake 客户端或驱动程序响应方面,用户可以选择两种行为中的任何一种。
故障打开
故障关闭
故障打开¶
在评估 OCSP CA 响应方面,Snowflake 默认支持 故障打开 方法。故障打开方法具有以下特点:
指示吊销证书的响应会导致连接失败。
任何其他证书错误或状态的响应都允许连接发生,但表示日志中的消息处于
WARNING
级别,并具有 JSON 格式的相关详细信息。
用户可以监控特定驱动程序或连接器的日志,以确定故障打开日志事件的频率。
这些事件日志可以与 Snowflake 状态页面 (https://status.snowflake.com) 结合起来以确定最佳操作方案,例如暂时限制客户端访问或转向 故障关闭 行为。
目前,故障打开默认方法适用于以下客户端和驱动程序版本。
客户端/驱动程序 |
版本 |
---|---|
SnowSQL |
v1.1.79 或更高版本 |
Python Connector |
v1.8.0 或更高版本 |
JDBC 驱动程序 |
v3.8.0 或更高版本 |
ODBC 驱动程序 |
v2.19.0 或更高版本 |
SQL Alchemy |
将 Python Connector 升级到 v1.8.0 或更高版本 |
Spark |
v2.4.14 或更高版本(如果使用 Maven 或 SBT 构建 Spark 应用程序)。. JDBC v3.8.0 或更高版本(如果将 JAR 文件复制到 Spark 集群)。. 请求 Databricks 升级其 Spark 连接器(如果使用 Databricks 内置 Spark 连接器)。 |
Go 驱动程序 |
v1.2.0 或更高版本 |
Node.js |
v1.2.0 或更高版本 |
备注
Snowflake 不支持 .NET 驱动程序的 OCSP 检查。相反,.NET 使用自己的框架来检查 HTTPS 证书的有效性。
故障关闭¶
故障关闭行为对于解释 OCSP CA 响应具有更大的限制。出于任何原因,如果客户端或驱动程序没有收到有效的 OCSP CA 响应,则连接失败。
由于此行为不是基于故障打开部分中列出的版本的默认行为,因此必须在每个驱动程序或连接器中手动配置故障关闭。
要保留故障关闭行为,请将相应的 ocsp_fail_open
参数设置为 false
。
客户端/驱动程序 |
设置 |
---|---|
SnowSQL |
|
Python Connector |
有关详细信息,请参阅 Python Connector 文档中的 选择故障打开或故障关闭模式。 |
JDBC 驱动程序 |
有关详细信息,请参阅 JDBC 驱动程序文档中的 选择故障打开或故障关闭模式。 |
ODBC 驱动程序 |
选择以下选项之一: . 将连接参数设置为 |
SQL Alchemy |
请参阅 JDBC 驱动程序设置 |
Spark |
Spark Connector 没有 |
Go 驱动程序 |
执行以下任一操作: . – 将 Config 中的连接参数 |
Node.js |
设置全局参数 |
旧版客户端和驱动程序版本¶
如果您的客户端或驱动程序版本早于故障打开部分中列出的版本,则无法选择故障打开行为。因此,故障关闭行为是默认的。
使用与 OCSP 相关的旧版客户端和驱动程序版本的 Snowflake 部署具有三个选项:
将他们的客户端或驱动程序升级到最新版本(最佳选项)。
继续使用故障关闭行为。
关闭 OCSP 监控(即不安全模式),如本 知识库文章 (https://community.snowflake.com/s/article/How-to-turn-off-OCSP-checking-in-Snowflake-client-drivers) 中所述(在 Snowflake 社区中)。
最佳实践¶
为了降低风险,Snowflake 建议采用以下最佳实践来确保通信安全。
使用与 Snowflake 服务的专用连接并阻止对 Snowflake 的公共访问。
仅允许客户端驱动程序在托管桌面和服务器上运行。
将客户端驱动程序日志发送到管理系统或上传到 Snowflake。监控未进行 OCSP 检查的连接。
备注
支持到 Snowflake 服务的专用连接需要 业务关键 (或更高版本)。如需咨询升级事宜,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。
Snowflake 使用的 CA 站点和 OCSP 响应器主机¶
您可以在 Snowflake 账户中调用 SYSTEM$ALLOWLIST 或 SYSTEM$ALLOWLIST_PRIVATELINK 函数,以获取 Snowflake 为 OCSP 验证检查使用的主机。主机值对于 Snowflake 账户所在的云平台和区域是唯一的。主机值之所以不同,原因在于云平台使用的 CA 以及证书的更新或续订时间。
例如:
SELECT t.VALUE:type::VARCHAR as type,
t.VALUE:host::VARCHAR as host,
t.VALUE:port as port
FROM TABLE(FLATTEN(input => PARSE_JSON(SYSTEM$ALLOWLIST_PRIVATELINK()))) AS t
WHERE type ILIKE ANY ('OCSP%');
+-----------------------+---------------------------------------------------------------+------+
| TYPE | HOST | PORT |
|-----------------------+---------------------------------------------------------------+------|
| OCSP_CACHE | ocsp.account1234.us-west-2.privatelink.snowflakecomputing.cn | 80 |
| OCSP_CACHE_REGIONLESS | ocsp.my_org-my_account.privatelink.snowflakecomputing.cn | 80 |
+-----------------------+---------------------------------------------------------------+------+
OCSP 认证检查需要端口 80¶
与 Snowflake 的所有通信均使用端口 443 进行。然而, OCSP 认证检查通过端口 80 传输。如果您的工作站位于防火墙后面,请确保您组织的网络管理员已打开防火墙以允许端口 443 和 80 上的流量。
JDBC 和 ODBC 驱动程序不再使用 CRL¶
CRL(证书吊销列表)指定给定 CA 显式吊销的证书。旧版本的 JDBC 和 ODBC 驱动程序使用 CRL 或者 OCSP 验证了 TLS 证书。从以下版本开始,驱动程序仅使用 OCSP 进行所有证书验证:
JDBC 3.5.0(或更高版本)
ODBC 2.15.0(或更高版本)