SQL 2022 VM使用Polybase CETAS写入Azure Blob存储遇认证及防火墙问题
解决方案
一、使用托管身份实现Polybase写入Azure Blob
CETAS当前确实不支持通过Azure AD身份验证写入Azure存储,你可以改用INSERT INTO外部表的方式替代CETAS,具体步骤如下:
- 给SQL Server VM的托管身份(系统分配或用户分配)授予Azure Blob存储账户的存储Blob数据参与者角色,确保身份拥有写入权限。
- 创建外部数据源时指定托管身份认证:
CREATE EXTERNAL DATA SOURCE BlobStorageDS WITH ( LOCATION = 'abs://<容器名>@<存储账户名>.blob.core.windows.net', CREDENTIAL = (IDENTITY = 'Managed Identity') );
- 创建对应的外部文件格式和外部表,之后通过
INSERT INTO <外部表名> SELECT ...语句将数据写入Blob存储。这种方式支持托管身份认证,且能绕过CETAS的AAD限制。
二、允许SAS令牌流量通过Blob防火墙
如果想继续使用SAS令牌,可通过以下两种方式让VM流量绕过存储防火墙:
- VNet服务端点:在存储账户的防火墙设置中,启用
允许从所选虚拟网络和IP地址访问,然后添加SQL Server VM所在VNet的Microsoft.Storage服务端点。配置后,VM到Blob的流量会通过VNet专用通道传输,存储防火墙会允许该类流量,此时使用SAS令牌即可正常连接。 - 专用链接:为Blob存储账户创建专用端点,并将其关联到VM所在的VNet。配置完成后,VM会通过私有IP访问Blob存储,完全不走公网路径。在存储防火墙设置中开启
允许专用链接访问,即可使用SAS令牌进行数据写入。
内容的提问来源于stack exchange,提问作者Neil P
相关产品推荐
相关产品推荐

