You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake Azure外部阶段访问403认证失败问题求助

排查Snowflake Azure外部阶段认证失败(403 AuthenticationFailed)问题

已知背景

  • 已成功创建外部阶段,但执行list @Employee_New时返回403认证失败错误:

    Error: "Failure using stage area. Cause: [Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. (Status Code: 403; Error Code: AuthenticationFailed)]"

  • 已排查SAS Token过期时间、角色权限,Azure侧配置了相关权限
  • 创建阶段的SQL命令:
CREATE STAGE Employee_New 
    URL = 'azure://sampleblob123456.blob.core.windows.net/sampleblob/Input/employee.csv' 
    CREDENTIALS = ( AZURE_SAS_TOKEN = '*****' ) 
    DIRECTORY = ( ENABLE = true ) 
    COMMENT = 'New Stage Environment';

具体排查步骤

  • 修正SAS Token格式
    确保SAS Token没有包含开头的?符号,Snowflake仅需要?之后的内容。例如Azure生成的完整SAS为?sv=2023-11-03&ss=b&...,只需传入sv=2023-11-03&ss=b&...部分。
  • 调整外部阶段URL指向
    当前URL指向单个文件employee.csv,但开启了DIRECTORY = (ENABLE = true)目录功能,需将URL改为目录路径:azure://sampleblob123456.blob.core.windows.net/sampleblob/Input/(末尾保留斜杠),重新创建阶段后再执行list命令。
  • 检查Azure存储账户防火墙配置
    若Azure存储账户设置了IP白名单,需将Snowflake对应区域的IP段添加到防火墙规则中。可通过Snowflake命令获取IP列表:
    SELECT SYSTEM$GET_AZURE_STORAGE_INTEGRATION_IP_LIST();
    
  • 验证SAS Token的资源权限范围
    确保SAS Token是针对容器sampleblob或目录Input生成的,而非单个文件。单个文件的SAS无法支持目录列表操作,需重新生成覆盖目标目录的SAS Token,且权限需包含读取(r)和列出(l)。
  • 确认Snowflake角色权限
    确保执行list命令的角色拥有阶段的USAGE权限,可执行以下命令授权:
    GRANT USAGE ON STAGE Employee_New TO ROLE <你的角色名>;
    
  • 重新生成并更新SAS Token
    避免复制SAS Token时带入空格、换行等隐藏字符,重新生成新的SAS Token后,更新阶段凭证:
    ALTER STAGE Employee_New SET CREDENTIALS = (AZURE_SAS_TOKEN = '新生成的SAS Token');
    

内容的提问来源于stack exchange,提问作者Ramakrishna K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:52:46