使用出口 IP 地址保护 Snowflake 请求的入口

您可以通过允许 Snowflake 生成的出口 IP 地址范围通过资源的网络防火墙,安全地允许 Snowflake 对您的外部资源进行入口访问。

您可以生成 Snowflake 出口 IP 地址范围列表(如无类别域间路由 (CIDR) 地址),可用于代表 Snowflake 允许通过外部服务器的网络防火墙进行访问。

支持的用法

使用 Snowflake 生成的出口 IP 地址,您可以允许从以下 Snowflake 功能进行入口访问:

生成出口 IP 地址范围

您可以使用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 函数,生成 Snowflake 用于出口流量的 IP 地址范围。

生成的 IP 地址会过期,因此对于持续需求,您应该设置一种方法,使用新的出口 IP 地址自动刷新外部服务器的防火墙,如 自动化 IP 地址范围刷新 中所述。

要生成和使用 Snowflake 出口 IP 地址,请按照以下步骤操作:

  1. 调用 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())));
    
    Copy
    +--------------------------+-------------------------+--------------------------+
    | 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 范围停止承载流量时的日期。

  2. 使用 APIs、CLIs 或配置管理工具,通过您获取的 IP 范围更新防火墙规则,如 自动化 IP 地址范围刷新 中所述。

自动化 IP 地址范围刷新

Snowflake 出口 IP 地址过期。为了确保访问安全,您必须更新允许通过外部服务器防火墙的 Snowflake 出口 IP 地址,保持其最新状态。

要保留 IP 地址为最新状态,请实施一种机制,定期(例如每天或每周)触发对外部服务器的这些更新。例如,您可以通过 使用环境工具 进行此操作。

要进行更新,请在脚本中执行以下步骤:

  1. 利用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 检索 Snowflake 出口 IP 地址范围。

  2. 将新检索到的范围与您当前使用的范围进行比较。

    您可以通过仅在地址范围不同时进行更新来避免不必要的更改。

    • 如果地址范围没有不同,请让脚本使用到期日期来设置再次检查的时间,例如到期前几天。

    • 如果新检索到的列表不同,请使用新地址以编程方式更新防火墙规则。然后,您可以让脚本设置进行检查的新日期,例如新到期日期的前几天。

  3. 记录脚本所做的更改,并设置更新成功或失败时的警报。

使用环境工具自动更新

您可以使用脚本和工具,自动执行保持 Snowflake IP 地址最新状态的任务。下面介绍两个示例:

  • 编写脚本时使用 APIs 和 CLIs 云提供商,例如 AWS、Azure 和 Google Cloud。

    对于云环境,您可以使用 Python、PowerShell 和 Bash 等工具来编写脚本。您的工具可以执行以下任务:

    1. 调用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 检索最新的 IP 地址范围和到期日期。

    2. 使用云提供商的 API 或 CLI 来更新安全组规则、网络 ACLs 或防火墙策略。

    3. 计划执行这些操作的脚本定期(例如每天或每周)运行,或使用 cron 作业根据到期日期运行。您可以通过将存储过程与 Snowflake 任务结合使用来运行这些任务。

  • 基础设施即代码 (IaC) 工具

    您可以使用 Terraform、Ansible 或 CloudFormation 等工具以代码形式管理防火墙规则。下面描述的方法还为防火墙规则变更提供版本控制和审计跟踪。

    使用这些工具,您可以执行以下任务:

    1. 在 IaC 配置中定义防火墙规则。

    2. 调用 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 检索最新的 IP 地址范围和到期日期。

    3. 当有新的 Snowflake 出口 IP 范围可用时,请使用新范围更新您的 IaC 配置。

    4. 使用 IaC 工具应用变更,确保以编程方式和幂等方式更新防火墙规则。