- 类别:
系统函数 (系统信息)
SYSTEM$ALLOWLIST¶
返回要添加到防火墙允许名单的主机名和端口号,以便您可以从防火墙后面访问 Snowflake。该函数的输出结果可以传入 SnowCD。
通常,Snowflake 客户使用防火墙来阻止未经授权的访问。默认情况下,防火墙可能会阻止对 Snowflake 进行访问。要更新防火墙的允许列表,您需要知道 URL 的主机名和端口号,用于您的 Snowflake 账户、暂存区以及 Snowflake 使用的其他主机。
有关您使用的 Snowflake 客户端允许列表的详细信息,请参阅 允许主机名。
语法¶
SYSTEM$ALLOWLIST()
实参¶
无。
返回¶
返回值的数据类型是 VARIANT。该值是一个 JSON 结构的数组。每个 JSON 结构包含三个键/值对:
type
Snowflake 支持以下类型:
SNOWFLAKE_DEPLOYMENT
Snowflake 账户的主机名和端口号信息。
SNOWFLAKE_DEPLOYMENT_REGIONLESS
组织 的主机名和端口号信息。
有关更多信息,请参阅 账户标识符。
STAGE
Snowflake 客户端可以读取或写入的文件存储位置(即 Amazon S3、Google Cloud Storage 或 Microsoft Azure)。
SNOWSQL_REPO
SnowSQL 为执行自动下载/升级而访问的端点。
OUT_OF_BAND_TELEMETRY
接收驱动程序报告的指标和带外事件(例如 OCSP 问题)的主机。
CLIENT_FAILOVER
用于 Client Redirect 的连接 URL 主机名和端口。请注意,查询输出中指定该值的每一行均表示主要连接或次要连接,具体取决于连接 URLs 的配置方式。
OCSP_CACHE
Snowflake 为防无法联系到主要 OCSP 响应器而提供的 OCSP 证书信息替代来源。大多数最新版本的 Snowflake 客户端都访问 OCSP 缓存而不是直接连接到 OCSP 响应器。
OCSP_CACHE_REGIONLESS
Snowflake 为 组织 提供的 OCSP 证书信息替代来源。大多数最新版本的 Snowflake 客户端都访问 OCSP 缓存而不是直接连接到 OCSP 响应器。
OCSP_CLIENT_FAILOVER
Snowflake 为 Client Redirect 提供的 OCSP 证书信息替代来源。
DUO_SECURITY
在向 Snowflake 进行身份验证时,与 MFA(多重身份验证) 一起使用的 Duo Security 服务的主机名。
OCSP_RESPONDER
要在验证 OCSP TLS 证书未被吊销时联系的主机名。
请注意,配置与 Snowflake 服务的专用连接时,不需要此值;请按照相应主题中的说明选择要添加到允许名单的 OCSP 值。
SNOWSIGHT_DEPLOYMENT_REGIONLESS
组织 用来访问 Snowsight 的主机名和端口号。
有关更多信息,请参阅 账户标识符 和 Snowsight:Snowflake Web 界面。
SNOWSIGHT_DEPLOYMENT
Snowflake 账户用于访问 Snowsight 的主机名和端口。
host
为
type
指定完整的主机名(例如"xy12345.east-us-2.azure.snowflakecomputing.cn"
、"ocsp.snowflakecomputing.cn"
)。port
为
type
指定端口号(例如443
、80
)。
使用说明¶
输出可能包括某些类型的多个条目(如
STAGE
、OCSP_RESPONDER
)。Snowflake 偶尔无法解析来自调用该函数的客户端的套接字连接,调用该函数的语句失败,并且显示以下错误消息之一:
SYSTEM$ALLOWLIST: Fail to get SSL context SYSTEM$ALLOWLIST: SSLContext init failed SYSTEM$ALLOWLIST: Could not find host in OCSP dumping SYSTEM$ALLOWLIST: Peer unverified SYSTEM$ALLOWLIST: Connection failure
此外,Snowflake 会返回函数输出中 OCSP 字段的空列表。要排查错误,可以等待几分钟,如果网络连接是瞬态的,则重新运行该语句。如果问题仍然存在,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。
示例¶
要调用此函数,请使用以下语句:
SELECT SYSTEM$ALLOWLIST();示例输出:
[ {"type":"SNOWFLAKE_DEPLOYMENT", "host":"xy12345.snowflakecomputing.cn", "port":443}, {"type":"STAGE", "host":"sfc-customer-stage.s3.us-west-2.amazonaws.com", "port":443}, ... {"type":"SNOWSQL_REPO", "host":"sfc-repo.snowflakecomputing.cn", "port":443}, ... {"type":"OCSP_CACHE", "host":"ocsp.snowflakecomputing.cn", "port":80} {"type":"OCSP_RESPONDER", "host":"o.ss2.us", "port":80}, ... ]在此示例输出中,请注意以下内容:
为了便于阅读,添加了空格和换行符。此外,还省略了一些条目。
一些主机名中的区域 ID (
us-west-2
) 指示账户位于 US 西部地区;但SNOWFLAKE_DEPLOYMENT
的主机名中没有使用区域 ID。
要将信息提取到表格输出而不是 JSON 中,请结合使用 FLATTEN 函数与 PARSE_JSON 函数:
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()))) AS t;示例输出:
+-----------------------+---------------------------------------------------+------+ | TYPE | HOST | PORT | |-----------------------+---------------------------------------------------+------| | SNOWFLAKE_DEPLOYMENT | xy12345.snowflakecomputing.cn | 443 | | STAGE | sfc-customer-stage.s3.us-west-2.amazonaws.com | 443 | ... | SNOWSQL_REPO | sfc-repo.snowflakecomputing.cn | 443 | ... | OCSP_CACHE | ocsp.snowflakecomputing.cn | 80 | | OCSP_RESPONDER | ocsp.sca1b.amazontrust.com | 80 | ... +-----------------------+---------------------------------------------------+------+