第 6 步:在门户中创建代理服务的 Azure 安全策略

上述步骤允许导入的 APIs (和 Azure 函数),以供 Snowflake 及其他经过身份验证或在您的 Azure AD 租户中有一个服务主体的客户端(如 Azure AD 租户中的应用程序)调用。

如果您只想允许 Snowflake 调用 Azure 函数,则必须实现令牌验证。通过令牌验证,当 Snowflake 尝试访问 API Management 服务时,Snowflake 会提供从 Azure AD 获取的 JWT (JSON Web Token) 访问令牌。API Management 服务可以验证 JWT,也可不加验证直接传递。

本主题介绍了如何通过添加 validate-JWT 策略来定义验证令牌的规则,从而为 API 创建安全策略。

重要

Snowflake 强烈建议为 API Management 服务创建安全策略。完成此步骤后,只允许 Snowflake 通过 API 管理服务调用 Azure 函数。

如果您更希望在 validate-JWT 策略中使用基于角色的验证,请参阅 Microsoft 服务主体文档,了解如何向服务主体分配角色:New-AzureADServiceAppRoleAssignment (https://docs.microsoft.com/en-us/powershell/module/azuread/new-azureadserviceapproleassignment)。

本主题内容:

上一步

第 5 步:在 Snowflake 中为 Azure 创建外部函数

创建一个 validate-JWT 策略,以允许 Snowflake 调用 Azure 函数

本部分介绍如何指定策略,以验证授权 Snowflake 调用您的 Azure 函数的 JSON Web 令牌 (JWT)。验证策略(“validate-JWT 策略”)验证 JWT 中以下两个声明:

  • Snowflake 服务主体应用程序 ID。

  • Azure 函数的目标应用程序 App ID (“受众 ID”或简称为“aud”)。

有关由 Azure AD 发布的 JSON Web 令牌 (JWTs) 声明的更多信息,请参阅 Microsoft 文档:访问令牌 (https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens#claims-in-access-tokens)。

以下步骤将导入的 API 配置为使用一个 JSON Web 令牌:

  1. 如果尚未导入,请登录 Azure 门户。

  2. 前往 API Management service 屏幕。

  3. 选择您的 API 管理服务。

  4. 在左侧列中找到 APIs 部分,然后点击其下的 APIs 选项。

  5. 在包含 All APIs 的列中,点击您要为其添加安全策略的 API 的名称。

  6. 找到 In-bound Processing

    1. 点击 + Add policy

    2. 点击 validate-jwt

    3. Header name 中填写 Authorization 值。

    4. 添加 Snowflake 提供用于访问 Azure 函数的 JWT (JSON Web 令牌)的验证:

      1. 找到 Required claims 并点击 + Add claim

      2. Name 字段中填写 aud (“audience”的缩写)。

      3. 在所需声明中,找到 Values 并点击 +Add value

        在 CREATE API INTEGRATION 命令中添加您复制到 azure_ad_application_id 字段的 UUID。这记录在跟踪工作表的 Azure Function App AD Application ID 字段中。

    5. 为 Snowflake 添加单独的“声明”:

      1. 再次点击 + Add claim

      2. Name 字段中填写字面量字符串 appid

      3. 在声明内,点击 + Add value 并在 Values 字段中添加 Snowflake 应用程序 ID。

        如果您还没有 Snowflake 应用程序 ID,您可以通过执行以下步骤获取它(Snowflake 应用程序 ID 位于 Application ID 字段中):

        1. 在工作表中,找到您之前填写的 AZURE_MULTI_TENANT_APP_NAME。

        2. 在 Azure 门户搜索框中,查找 Enterprise Applications

          这将带您前往 Enterprise applications | All applications 屏幕。

        3. 在该屏幕中,搜索 AZURE_MULTI_TENANT_APP_NAME。

          企业应用程序搜索框 没有 标签。在企业应用程序列表的正上方查找一个广泛的字段。该方框可能会显示类似于 First 50 shown, to search all of your applications, enter a display name or the application ID 的内容。

          如果找不到与 AZURE_MULTI_TENANT_APP_NAME 完全一致的名称,请仅使用该名称的前几个字符再次搜索(如果名称包含下划线,则不要包含下划线或下划线后面的任何字符)。

        4. 查找 AZURE_MULTI_TENANT_APP_NAME 的 Application ID 值。

  7. 将以下内容粘贴到 Open ID URLs 中:

    https://login.microsoftonline.com/<tenant_id>/.well-known/openid-configuration

    <tenant_id> 替换为您的 Azure AD 租户 ID (如规划外部函数的 先决条件 部分中所述)。

  8. 点击 Save

测试外部函数

为了确保外部函数能够根据新的安全策略正常工作,请再次调用外部函数。

有关详细信息,请参阅 为 Azure 调用外部函数

限制接受 Azure 函数调用的 IP 地址(可选)

除了指定 validate-JWT 策略(或使用基于角色的验证)之外,您还可以通过限制 IP 地址来实现额外的安全性。这确保了仅允许 API 管理服务的 IP 地址访问包含您的 Azure 函数的 Azure 函数应用程序。

有关 IP 地址限制的更多信息,请参阅 Microsoft 文档:入站 IP 地址限制 (https://docs.microsoft.com/en-us/azure/azure-functions/functions-networking-options#inbound-ip-restrictions)。

下一步

无。您已成功为 Azure 创建外部函数。

语言: 中文