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

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

Azure Functionの呼び出しをSnowflakeからに限定する場合は、トークンの検証を実装する必要があります。Snowflakeが API Managementサービスにアクセスしようとすると、SnowflakeはAzure AD から取得した JWT (JSON ウェブトークン)アクセストークンを提示します。API Managementサービスは、 JWT を検証するか、検証せずにパススルーすることができます。

このトピックでは、トークンを検証するためのルールを定義する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。

  • 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 App AD Application 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 Functionsの呼び出しを受け入れる IP アドレスを制限する(オプション)

Validate JWT ポリシーを指定する(またはロールベースの検証を使用する)ことに加えて、 IP アドレスを制限することで追加のセキュリティを実装できます。これにより、 API Managementサービスの IP のみが、Azure Functionを含むAzure Functionsアプリにアクセスできるようになります。

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

次のステップ

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