ステップ6: ポータルでプロキシサービスのAzureセキュリティポリシーを作成する

前のステップにより、Snowflakeだけでなく、Azure ADテナントにあるアプリケーションや、Azure ADテナントでサービスプリンシパルがあるアプリケーションなどにより、インポートしたAPIs(およびAzure Function)を呼び出せるようになります。

If you want to allow only Snowflake to call the Azure Function, you must implement token validation. With token validation, when Snowflake tries to access the API Management service, Snowflake presents a JWT (JSON Web Token) access token obtained from Azure AD. The API Management service can either validate the JWT or pass it through without validation.

このトピックでは、トークンを検証するためのルールを定義するValidate JWTポリシーを追加して、API Managementサービスのセキュリティポリシーを作成する手順について説明します。

重要

Snowflakeは、API Managementサービスのセキュリティポリシーを作成することを強くお勧めします。この手順を完了すると、SnowflakeのみがAPI Managementサービスを介してAzure Functionを呼び出すことができます。

Validate JWTポリシーでロールベースの検証を使用する場合は、サービスプリンシパルにロールを割り当てるためのMicrosoft Serivce Principalのドキュメント New-AzureADServiceAppRoleAssignment を参照してください。

このトピックの内容:

SnowflakeがAzure Functionを呼び出すことを許可するValidate JWTポリシーを作成する

このセクションでは、SnowflakeがAzure Functionを呼び出すことを許可するJSONウェブトークン(JWT)を検証するためのポリシーを指定する方法を示します。検証ポリシー(「validate-JWT ポリシー」)は、 JWT の次の2つの要求を検証します。

  • Snowflakeサービスのプリンシパルアプリケーション ID (「リクエスター AppID」または単に「appid」)。

  • Azure FunctionのターゲットアプリケーションアプリID(「オーディエンスID」または単に「aud」)。

Azure Active Directoryによって発行されたJSONウェブトークン(JWTs)の要求の詳細については、Microsoftのドキュメント アクセストークン をご参照ください。

次のステップでは、インポートされたAPIによりJSONウェブトークンを使用するように構成します。

  1. まだログインしていない場合は、Azure Portalにログインします。

  2. API Management service 画面に移動します。

  3. API Managementサービスを選択します。

  4. 左側の列で APIs セクションを見つけ、その下の APIs オプションをクリックします。

  5. All APIs を含む列で、セキュリティポリシーを追加するAPIの名前をクリックします。

  6. In-bound Processing を探します。

    1. + Add policy をクリックします。

    2. validate-jwt をクリックします。

    3. Header name に値 Authorization を入力します。

    4. Azure Functionにアクセスするために、Snowflakeによって提供される JWT (JSON ウェブトークン)の検証を追加します。

      1. Required claims を探し、 + Add claim をクリックします。

      2. Name フィールドに aud (「audience」の略)と入力します。

      3. 必要な要求の中で Values を探し、 +Add value をクリックします。

        コピーしたUUIDをCREATE API INTEGRATIONコマンドのAzure ADアプリケーション IDフィールドに追加します。これは、追跡ワークシートの「Azure FunctionアプリADアプリケーションID」フィールドに記録されます。

    5. Snowflakeに対する個別の「要求」を追加します。

      1. + Add claim をもう一度クリックします。

      2. Name フィールドにリテラル文字列 appid と入力します。

      3. 要求の中で + Add value をクリックして、Snowflakeアプリケーション ID を Values フィールドに追加します。

        Snowflakeアプリケーション ID をまだお持ちでない場合は、次のステップを実行して取得できます(Snowflakeアプリケーション ID は、Application ID フィールド内)。

        1. ワークシートで、前に入力した AZURE_MULTI_TENANT_APP_NAME を見つけます。

        2. Azure Portalの検索ボックスで、 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/<テナントID>/.well-known/openid-configuration

    <tenant_id> をAzure ADテナントIDに置き換えます(外部関数を計画するための 前提条件 セクションで説明されています)。

  8. Save をクリックします。

外部関数をテストする

外部関数が新しいセキュリティ構成ファイルで正しく機能することを確認するには、外部関数を再度呼び出します。

詳細については、 Azure用の外部関数の呼び出し をご参照ください。

Azure Functionの呼び出しを受け入れるIPアドレスを制限する(オプション)

In addition to specifying a validate-JWT policy (or using role-based validation), you can implement additional security by restricting IP addresses. This ensures that only the API Management service's IP address is allowed to access the Azure Function app containing your Azure Function.

IPアドレスの制限の詳細については、Microsoftのドキュメント インバウンドIPアドレスの制限 を参照してください。

次のステップ

なし。これで、Azureの外部関数が正常に作成されました。