为 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'
      )
    );
Copy

备注

在为 STORAGE_BASE_URL 指定值时,使用 azure:// 前缀,不使用 https://

第 2 步:授予 Snowflake 对存储位置的访问权限

  1. 要检索 Microsoft 权限请求页面的 URL,请使用 DESCRIBE EXTERNAL VOLUME 命令。指定先前创建的外部卷的名称。

    DESC EXTERNAL VOLUME exvol;
    
    Copy

    记录以下属性的值:

    属性

    描述

    AZURE_CONSENT_URL

    Microsoft 权限请求页面的 URL。

    AZURE_MULTI_TENANT_APP_NAME

    为账户创建的 Snowflake 客户端应用程序的名称。在本部分后面的步骤中,您会授予此应用程序在允许的存储位置获取访问令牌的权限。

    您可在以下步骤中使用这些值。

  2. 在 Web 浏览器中,导航到 Microsoft 权限请求页面 ( AZURE_CONSENT_URL)。

  3. 选择 Accept。此操作允许为 Snowflake 账户创建的 Azure 服务主体获取租户内任何资源的访问令牌。仅当您授予服务主体对容器的适当权限时,才能成功获取访问令牌(请参阅下一步)。

    Microsoft 权限请求页面会重定向到 Snowflake 公司站点 (snowflake.com)。

  4. 登录 Microsoft Azure 门户。

  5. 前往 Azure Services » Storage Accounts。选择 Snowflake 服务主体需要访问的存储账户的名称。

    备注

    您必须在存储账户级别(而非容器级别)为外部卷设置 IAM 权限。

  6. 选择 Access Control (IAM) » Add role assignment

  7. 选择要授予 Snowflake 服务主体的读写访问权限的 Storage Blob Data Contributor 角色。

    备注

    Storage Blob Data Contributor 角色授予对外部卷位置的写入访问权限。要完全配置写入访问权限,请将外部卷的 ALLOW_WRITES 参数设置为 TRUE (默认值)。

  8. 搜索 Snowflake 服务主体。这是 DESC EXTERNAL VOLUME 输出(第 1 步中)中 AZURE_MULTI_TENANT_APP_NAME 属性的身份。在 AZURE_MULTI_TENANT_APP_NAME 属性中搜索下划线 之前 的字符串。

    重要

    • Azure 可能需要一个小时或更长时间才能创建通过此部分中的 Microsoft 请求页面请求的 Snowflake 服务主体。如果服务主体不能立即使用,请等待一两个小时,然后再次搜索。

    • 如果删除了服务主体,外部卷将停止工作。

    在 Azure 存储控制台中添加角色分配
  9. 选择 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 表。

语言: 中文