Snowflake网络策略白名单Azure DevOps URL遇IP限制问题咨询
Snowflake网络策略白名单Azure DevOps问题解答
问题背景
你尝试在Snowflake中创建网络策略白名单Azure DevOps组织URL,使用的SQL代码:
CREATE NETWORK POLICY allow_specific_urls ALLOWED_DOMAINS_LIST = ('dev.azure.com', 'yourorganization.visualstudio.com') BLOCKED_DOMAINS_LIST = ();
但从Azure DevOps流水线运行Snowflake查询时,遇到错误:
Incoming request with IP/Token 49.37.133.107 is not allowed to access Snowflake. Contact your account administrator.
以下是针对你问题的解答:
1. 这种白名单Azure DevOps URL的方式是否正确?
不正确。Snowflake的ALLOWED_DOMAINS_LIST仅用于客户端驱动通过反向DNS验证发起请求的域名,要求客户端请求的源IP能反向解析到指定域名。但Azure DevOps流水线的请求是从Azure服务器IP发起,并非从dev.azure.com或visualstudio.com域名对应的IP作为源,因此该配置无法生效,必须使用IP白名单而非域名。
2. 不同区域或服务是否需包含特定的Azure DevOps URL?
不需要,因为URL白名单本身不适用于流水线场景。但不同区域的Azure DevOps流水线使用的IP地址范围不同,你需要添加流水线所在Azure区域对应的IP段。
3. 实施该网络策略还需考虑哪些因素?
- 代理类型:区分是Microsoft托管代理还是自托管代理,前者需要添加Azure区域IP段,后者只需添加代理的固定公网IP。
- IP范围更新:Microsoft托管代理的IP段会每周更新,需定期同步最新范围。
- 策略优先级:确保你的网络策略不会被更严格的账户级/用户级策略覆盖。
- 应急访问:预留管理员或运维人员的固定IP,避免被策略拦截无法访问Snowflake。
- 测试场景:测试环境的流水线IP也需加入白名单,避免测试失败。
4. 如何确保Azure DevOps的IP地址被纳入允许列表?
分两种代理类型处理:
- 自托管代理:直接将代理服务器的静态公网IP添加到
ALLOWED_IP_LIST,示例:
CREATE OR REPLACE NETWORK POLICY allow_ado_self_hosted ALLOWED_IP_LIST = ('123.45.67.89', '192.168.1.100') -- 前者是自托管代理IP,后者是管理员IP BLOCKED_IP_LIST = ();
- Microsoft托管代理:
- 获取Azure官方发布的每周更新IP范围文件,找到流水线所在区域的
AzureCloud.<区域>对应的IP段。 - 将这些IP段添加到
ALLOWED_IP_LIST,示例(以East US区域为例):
- 获取Azure官方发布的每周更新IP范围文件,找到流水线所在区域的
CREATE OR REPLACE NETWORK POLICY allow_ado_microsoft_hosted ALLOWED_IP_LIST = ('40.76.0.0/16', '52.170.0.0/16', '192.168.1.100') BLOCKED_IP_LIST = ();
- 定期更新IP范围,保证策略有效性。
5. 如何确保所有Azure DevOps请求被允许同时限制其他请求?
通过严格的IP白名单策略实现:
- 仅添加Azure DevOps流水线对应的IP段/IP,加上必要的应急访问IP。
- 清空
BLOCKED_IP_LIST,并将策略应用到账户或特定用户(根据需求选择)。 - 完整示例:
-- 创建仅允许Azure DevOps和管理员访问的策略 CREATE OR REPLACE NETWORK POLICY allow_ado_only ALLOWED_IP_LIST = ('40.76.0.0/16', '52.170.0.0/16', '192.168.1.100') ALLOWED_DOMAINS_LIST = () -- 无需域名白名单 BLOCKED_IP_LIST = (); -- 应用到整个账户(所有用户都受该策略限制) ALTER ACCOUNT SET NETWORK_POLICY = allow_ado_only; -- 或者仅应用到Azure DevOps使用的Snowflake用户 ALTER USER ADO_SERVICE_USER SET NETWORK_POLICY = allow_ado_only;
- 验证:用Azure DevOps流水线运行测试查询确认可访问,用其他未授权IP尝试访问确认被拦截。
内容的提问来源于stack exchange,提问作者Srikanth Mannepalli
相关产品推荐
相关产品推荐

