为 Azure 配置外部卷¶
本主题介绍如何使用外部卷,向 Snowflake 授予对您自己的 Microsoft Azure 容器的受限访问权限。对于外部卷,Snowflake 支持以下 Azure 云存储服务:
Blob 存储
Data Lake Storage Gen2
常规用途 v1
General-purpose v2
组织中的管理员会在 Azure 账户中授予 IAM 用户权限。
备注
需要在 Azure 中拥有创建和管理 IAM 策略和角色的权限,才能完成本主题中的说明。如果您不是 Azure 管理员,请让 Azure 管理员执行这些任务。
为支持数据恢复,为外部云存储位置启用版本控制。
第 1 步:在 Snowflake 中创建外部卷¶
使用 CREATE EXTERNAL VOLUME 命令创建外部卷。
备注
只有账户管理员(具有 ACCOUNTADMIN 角色的用户)可执行此 SQL 命令。
以下示例创建一个外部卷,该卷定义了采用加密的 Azure 存储位置:
CREATE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-azure-northeurope'
STORAGE_PROVIDER = 'AZURE'
STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
)
);
备注
在为 STORAGE_BASE_URL 指定值时,使用 azure://
前缀,不使用 https://
。
第 2 步:授予 Snowflake 对存储位置的访问权限¶
要检索 Microsoft 权限请求页面的 URL,请使用 DESCRIBE EXTERNAL VOLUME 命令。指定先前创建的外部卷的名称。
DESC EXTERNAL VOLUME exvol;
记录以下属性的值:
属性
描述
AZURE_CONSENT_URL
Microsoft 权限请求页面的 URL。
AZURE_MULTI_TENANT_APP_NAME
为账户创建的 Snowflake 客户端应用程序的名称。在本部分后面的步骤中,您会授予此应用程序在允许的存储位置获取访问令牌的权限。
您可在以下步骤中使用这些值。
在 Web 浏览器中,导航到 Microsoft 权限请求页面 (
AZURE_CONSENT_URL
)。选择 Accept。此操作允许为 Snowflake 账户创建的 Azure 服务主体获取租户内任何资源的访问令牌。仅当您授予服务主体对容器的适当权限时,才能成功获取访问令牌(请参阅下一步)。
Microsoft 权限请求页面会重定向到 Snowflake 公司站点 (snowflake.com)。
登录 Microsoft Azure 门户。
前往 Azure Services » Storage Accounts。选择 Snowflake 服务主体需要访问的存储账户的名称。
备注
您必须在存储账户级别(而非容器级别)为外部卷设置 IAM 权限。
选择 Access Control (IAM) » Add role assignment。
选择要授予 Snowflake 服务主体的读写访问权限的
Storage Blob Data Contributor
角色。备注
Storage Blob Data Contributor
角色授予对外部卷位置的写入访问权限。要完全配置写入访问权限,请将外部卷的ALLOW_WRITES
参数设置为TRUE
(默认值)。搜索 Snowflake 服务主体。这是 DESC EXTERNAL VOLUME 输出(第 1 步中)中 AZURE_MULTI_TENANT_APP_NAME 属性的身份。在 AZURE_MULTI_TENANT_APP_NAME 属性中搜索下划线 之前 的字符串。
重要
Azure 可能需要一个小时或更长时间才能创建通过此部分中的 Microsoft 请求页面请求的 Snowflake 服务主体。如果服务主体不能立即使用,请等待一两个小时,然后再次搜索。
如果删除了服务主体,外部卷将停止工作。
选择 Review + assign。
备注
分配角色时,变更最多可能需要 10 分钟才能生效。有关更多信息,请参阅 Microsoft Azure 文档中的 症状 – 未检测到角色分配变更 (https://learn.microsoft.com/en-us/azure/role-based-access-control/troubleshooting?tabs=bicep#symptom---role-assignment-changes-are-not-being-detected)。
备注
要验证权限配置是否正确无误,请使用此外部卷 创建一个 Iceberg 表。在您创建引用此外部卷的 Iceberg 表之前,Snowflake 不会验证权限设置是否正确。
后续步骤¶
配置外部卷后,您可以创建 Iceberg 表。
要创建使用外部目录的只读 Iceberg 表,请参阅 为 Iceberg 表配置目录集成。
要创建具有完整 Snowflake 平台支持的 Iceberg 表,请参阅 创建以 Snowflake 作为目录的 Iceberg 表。