第 4 步:将 Azure 的 API 集成链接到门户中的代理服务¶
当调用外部函数时,Snowflake 会向代理服务(即 Azure API Management 服务)发送 HTTP POST 命令,代理服务会将 POST 转发到远程服务(即 Azure 函数)。Azure AD 租户中的服务主体允许 Snowflake 在调用租户中的 API Management 服务时使用 Azure AD 进行身份验证。
本主题提供创建服务主体的说明,以将您在上一步中创建的 API 集成与 Azure API Management 服务链接起来。无论您使用的是 Azure 门户还是 ARM 模板,说明都是相同的。
有关服务主体的更多信息,请参阅 Microsoft 文档:应用程序和服务主体 (https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object)。
本主题内容:
上一步¶
获取 API 集成的应用程序名称和同意 URL¶
在创建服务主体之前,需要一些关于 API 集成的信息:
如果还没有登录,请登录 Snowflake Web 界面。
对您在上一步中创建的 API 集成执行 DESCRIBE INTEGRATION 命令:
describe api integration <integration_name>;
根据 DESCRIBE 结果:
在跟踪工作表的相应字段中记录应用名称(来自 AZURE_MULTI_TENANT_APP_NAME 列)。
在跟踪工作表的相应字段中记录同意 URL (来自 AZURE_CONSENT_URL 列)。
URL 看起来类似于以下内容:
https://login.microsoftonline.com/<tenant_id>/oauth2/authorize?client_id=<snowflake_application_id>&response_type=code
授予 Snowflake 对Azure 租户的访问权限¶
要授予 Snowflake 对 Azure 租户的访问权限,需要之前记录的 AZURE_CONSENT_URL:
将 URL 粘贴到浏览器中。当浏览器解析此 URL 时,Azure 会自动创建一个在租户中表示 Snowflake 的服务主体。
请注意,只需为每个租户创建一次 Snowflake 服务主体。在 Snowflake 被授予访问权限后,无需再次授予访问权限。换句话说,不需要为 Azure 创建的每个新的外部函数再次授予访问权限。
如果 Snowflake 已经被授予对 Azure 租户的访问权限,您应该会看到 Snowflake 网站,该网站应该会显示类似于 SNOWFLAKE THE CLOUD DATA PLATFORM 的内容。然后,可以跳过剩余的任务并继续执行 第 5 步:在 Snowflake 中为 Azure 创建外部函数。
如果 Snowflake 尚未被授予访问权限,您应该会看到一个 Microsoft Permissions requested 页面,并且应该继续执行下一个任务。
点击 Accept 按钮。此操作允许为 Snowflake 账户创建的 Azure 服务主体获取 Azure AD 租户内任何资源的访问令牌。
此时,您已完成在租户中创建代表 Snowflake 的服务主体。
但是,为了增强安全性,您应该确保只有授权的客户端才能访问 Azure 函数。创建过程的最后一步提供了控制访问的说明。