使用出口 IP 地址保护 Snowflake 请求的入口¶
您可以通过允许 Snowflake 生成的出口 IP 地址范围通过资源的网络防火墙,安全地允许 Snowflake 对您的外部资源进行入口访问。
您可以生成 Snowflake 出口 IP 地址范围列表(如无类别域间路由 (CIDR) 地址),可用于代表 Snowflake 允许通过外部服务器的网络防火墙进行访问。
支持的用法¶
使用 Snowflake 生成的出口 IP 地址,您可以允许从以下 Snowflake 功能进行入口访问:
从 UDFs 和程序 进行外部访问
Snowpark Container Services 外部访问 和 Snowflake Openflow on Snowpark Container Services
生成出口 IP 地址范围¶
您可以使用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 函数,生成 Snowflake 用于出口流量的 IP 地址范围。
生成的 IP 地址会过期,因此对于持续需求,您应该设置一种方法,使用新的出口 IP 地址自动刷新外部服务器的防火墙,如 自动化 IP 地址范围刷新 中所述。
要生成和使用 Snowflake 出口 IP 地址,请按照以下步骤操作:
调用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 获取当前和未来的 IP 范围及其过期时间。
以下代码显示了该函数的示例输出。
SELECT value: "ipv4_prefix":: VARCHAR AS IP_CIDR_RANGE_FOR_REGION, value: "effective":: TIMESTAMP AS IP_CIDR_RANGE_EFFECTIVE, value: "expires":: TIMESTAMP AS IP_CIDR_RANGE_EXPIRATION FROM TABLE(FLATTEN (INPUT => PARSE_JSON(SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES())));
+--------------------------+-------------------------+--------------------------+ | IP_CIDR_RANGE_FOR_REGION | IP_CIDR_RANGE_EFFECTIVE | IP_CIDR_RANGE_EXPIRATION | +--------------------------+-------------------------+--------------------------+ | 153.45.34.0/24 | 2025-08-01 00:00:00.000 | 2026-05-06 01:33:26.726 | | 153.45.77.0/24 | 2025-08-01 00:00:00.000 | 2026-05-06 01:33:26.726 | +--------------------------+-------------------------+--------------------------+
IP CIDR RANGE_EFFECTIVE列显示范围开始承载流量的开始日期。新范围应在“生效”前至少 60 天出现在函数输出中。IP CIDR RANGE_EXPIRATION列显示 IP 范围停止承载流量时的日期。
使用 APIs、CLIs 或配置管理工具,通过您获取的 IP 范围更新防火墙规则,如 自动化 IP 地址范围刷新 中所述。
自动化 IP 地址范围刷新¶
Snowflake 出口 IP 地址过期。为了确保访问安全,您必须更新允许通过外部服务器防火墙的 Snowflake 出口 IP 地址,保持其最新状态。
要保留 IP 地址为最新状态,请实施一种机制,定期(例如每天或每周)触发对外部服务器的这些更新。例如,您可以通过 使用环境工具 进行此操作。
要进行更新,请在脚本中执行以下步骤:
利用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 检索 Snowflake 出口 IP 地址范围。
将新检索到的范围与您当前使用的范围进行比较。
您可以通过仅在地址范围不同时进行更新来避免不必要的更改。
如果地址范围没有不同,请让脚本使用到期日期来设置再次检查的时间,例如到期前几天。
如果新检索到的列表不同,请使用新地址以编程方式更新防火墙规则。然后,您可以让脚本设置进行检查的新日期,例如新到期日期的前几天。
记录脚本所做的更改,并设置更新成功或失败时的警报。
使用环境工具自动更新¶
您可以使用脚本和工具,自动执行保持 Snowflake IP 地址最新状态的任务。下面介绍两个示例:
编写脚本时使用 APIs 和 CLIs 云提供商,例如 AWS、Azure 和 Google Cloud。
对于云环境,您可以使用 Python、PowerShell 和 Bash 等工具来编写脚本。您的工具可以执行以下任务:
调用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 检索最新的 IP 地址范围和到期日期。
使用云提供商的 API 或 CLI 来更新安全组规则、网络 ACLs 或防火墙策略。
计划执行这些操作的脚本定期(例如每天或每周)运行,或使用 cron 作业根据到期日期运行。您可以通过将存储过程与 Snowflake 任务结合使用来运行这些任务。
基础设施即代码 (IaC) 工具
您可以使用 Terraform、Ansible 或 CloudFormation 等工具以代码形式管理防火墙规则。下面描述的方法还为防火墙规则变更提供版本控制和审计跟踪。
使用这些工具,您可以执行以下任务:
在 IaC 配置中定义防火墙规则。
调用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 检索最新的 IP 地址范围和到期日期。
当有新的 Snowflake 出口 IP 范围可用时,请使用新范围更新您的 IaC 配置。
使用 IaC 工具应用变更,确保以编程方式和幂等方式更新防火墙规则。