Étape 6 : Créez la politique de sécurité Azure pour le service proxy dans le portail

Les étapes précédentes permettent d’importer vos APIs (et donc votre fonction Azure) pour qu’elles puissent être appelées non seulement par Snowflake, mais aussi par d’autres clients authentifiés, tels que les applications qui se trouvent dans votre client Azure AD ou qui ont un principal de service dans votre client Azure AD.

Si vous voulez que seul Snowflake puisse appeler la fonction Azure, vous devez forcer une étape de validation de jeton. Avec la validation de jeton, lorsque Snowflake tente d’accéder au service Gestion des API, Snowflake présente un jeton d’accès JWT (JSON Web Token) obtenu auprès d’Azure AD. Le service Gestion des API peut soit valider le JWT, soit le faire passer sans validation.

Cette rubrique fournit des instructions pour créer une politique de sécurité pour le service de gestion des API en ajoutant une politique validate-JWT qui définit les règles de validation du jeton.

Important

Snowflake recommande fortement de créer une politique de sécurité pour le service de gestion des API. Après avoir terminé cette étape, seul Snowflake est autorisé à appeler votre Azure Function par le biais du service de gestion des API.

Si vous préférez utiliser la validation basée sur les rôles dans votre politique validate-JWT, consultez la documentation Microsoft Service Principal pour l’attribution d’un rôle à un principal de service : Nouveau-AzureADServiceAppRoleAssignment.

Dans ce chapitre :

Créer une politique validate-JWT qui permet à Snowflake d’appeler Azure Function

Cette section montre comment spécifier une stratégie de validation d’un JSON Web Token (JWT) qui autorise Snowflake à appeler votre fonction Azure. La stratégie de validation (« stratégie validate-JWT ») valide les deux revendications suivantes dans le JWT :

  • ID de l’application du principal de service Snowflake.

  • L’ID d’application de l’application cible (l”« ID d’audience » ou simplement « aud ») de la fonction Azure.

Pour plus d’informations sur les revendications dans les jetons Web JSON (JWTs) émis par Azure Active Directory, voir la documentation de Microsoft : jetons d’accès.

Les étapes suivantes permettent de configurer l’API importée pour utiliser un jeton Web JSON :

  1. Si vous ne l’avez pas encore fait, connectez-vous au portail Azure.

  2. Allez à l’écran API Management service.

  3. Sélectionnez votre service Gestion des API.

  4. Trouvez la section APIs dans la colonne de gauche, puis cliquez sur l’option APIs sous celle-ci.

  5. Dans la colonne qui contient All APIs, cliquez sur le nom de l’API pour laquelle vous souhaitez ajouter une politique de sécurité.

  6. Cherchez In-bound Processing :

    1. Cliquez sur + Add policy.

    2. Cliquez sur validate-jwt.

    3. Remplissez le Header name avec la valeur Authorization.

    4. Ajouter validation du JWT (JSON Web Token) fourni par Snowflake pour l’accès à la fonction Azure :

      1. Cherchez Required claims et cliquez sur + Add claim.

      2. Remplissez le champ Name avec aud (abréviation de « audience »).

      3. Dans la revendication requise, cherchez Values et cliquez sur +Add value.

        Ajoutez le UUID que vous avez copié dans le champ id_application_azure_ad de la commande CREATE API INTEGRATION. Ceci est enregistré dans le champ Azure Function App AD Application ID de la feuille de calcul de suivi.

    5. Ajouter une « revendication » distincte pour Snowflake :

      1. Cliquez à nouveau sur + Add claim :

      2. Remplissez le champ Name avec la chaîne littérale appid.

      3. Dans la revendication, cliquez sur + Add value et ajoutez l’ID de l’application Snowflake dans le champ Values.

        Si vous n’avez pas encore l’ID de l’application Snowflake, vous pouvez l’obtenir en suivant les étapes suivantes (l’ID de l’application Snowflake est dans le champ Application ID) :

        1. Dans la feuille de calcul, trouvez le AZURE_MULTI_TENANT_APP_NAME que vous avez rempli précédemment.

        2. Dans la zone de recherche du portail Azure, cherchez Enterprise Applications.

          Cela vous amène à l’écran Enterprise applications | All applications .

        3. Dans cet écran, recherchez le AZURE_MULTI_TENANT_APP_NAME.

          La zone de recherche des applications d’entreprise n’a pas d’étiquette. Recherchez un champ large juste au-dessus de la liste des applications d’entreprise. La zone pourrait indiquer quelque chose de similaire à First 50 shown, to search all of your applications, enter a display name or the application ID.

          Si vous ne trouvez pas de correspondance exacte pour le AZURE_MULTI_TENANT_APP_NAME, effectuez une nouvelle recherche en utilisant uniquement les premiers caractères de ce nom (si le nom contient un trait de soulignement, n’incluez pas le trait de soulignement ni aucun caractère après le trait de soulignement).

        4. Trouvez la valeur Application ID pour AZURE_MULTI_TENANT_APP_NAME.

  7. Collez ce qui suit dans Open ID URLs :

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

    Remplacez <tenant_id> par votre ID de client Azure AD (comme décrit dans la section Conditions préalables pour la planification d’une fonction externe).

  8. Cliquez sur Save.

Testez votre fonction externe

Pour vous assurer que votre fonction externe fonctionne correctement avec la nouvelle politique de sécurité, appelez à nouveau votre fonction externe.

Pour plus de détails, voir Appel d’une fonction externe pour Azure.

Restreindre les adresses IP qui acceptent les appels Azure Functions (facultatif)

En plus de spécifier une politique validate-JWT (ou d’utiliser une validation basée sur les rôles), vous pouvez mettre en œuvre une sécurité supplémentaire en restreignant les adresses IP. Cela garantit que seule l’adresse IP du service de gestion des API est autorisée à accéder à l’application Azure Functions contenant votre Azure Function.

Pour plus d’informations sur la restriction des adresses IP, voir la documentation Microsoft : Restrictions sur les adresses IP entrantes.

Étape suivante

Aucun. Vous avez réussi à créer une fonction externe pour Azure.