Sécurité de Functions serverless

Cet article décrit les services et les activités Azure que le personnel de sécurité peut mettre en œuvre pour Functions serverless. Ces instructions et ressources permettent de développer du code sécurisé et de déployer des applications sécurisées dans le Cloud.

Planification

Les principaux objectifs d’un environnement sécurisé d’applications Azure Functions serverless sont de protéger les applications en cours d’exécution, d’identifier et de résoudre rapidement les problèmes de sécurité, et de prévenir de futurs problèmes similaires.

Le Top 10 des applications serverless de l’OWASP décrit les vulnérabilités de sécurité des applications serverless les plus courantes, et fournit des techniques de base pour les identifier et s’en protéger.

À de nombreux égards, la planification du développement, du déploiement et de l’exploitation sécurisés des fonctions serverless est très similaire à celle d’une application Web ou hébergée sur le Cloud. Azure App Service fournit l’infrastructure d’hébergement pour vos applications de fonction. L’article Sécurisation d’Azure Functions décrit des stratégies de sécurité pour exécuter votre code de fonction, ainsi que la façon dont App Service peut vous aider à sécuriser vos fonctions.

Pour plus d’informations sur la sécurité, les meilleures pratiques et les responsabilités partagées Azure, consultez :

Déploiement

Pour préparer des applications Functions serverless pour la production, le personnel de sécurité doit :

  • Procéder à des révisions régulières du code afin d’identifier les vulnérabilités du code et de la bibliothèque.
  • Définir les autorisations de ressources que Functions doit exécuter.
  • Configurer des règles de sécurité réseau pour les communications entrantes et sortantes.
  • Identifier et classer les accès aux données sensibles.

L’article Base de référence de sécurité Azure pour Azure Functions contient plus de recommandations qui vous aideront à améliorer la posture de sécurité de votre déploiement.

Maintenir le code sécurisé

Détecter les vulnérabilités de sécurité et les erreurs de code et gérer les vulnérabilités de sécurité dans les projets et les dépendances.

Pour plus d'informations, consultez les pages suivantes :

Effectuer la validation des entrées

Différentes sources d’événements comme le stockage Blob, les bases de données Azure Cosmos DB NoSQL, les hubs d’événements, les files d’attente ou les événements Graph peuvent déclencher Functions serverless. Les injections ne sont pas strictement limitées aux entrées provenant directement des appels de l’API. Les fonctions peuvent consommer d’autres entrées provenant des sources d’événements possibles.

De manière générale, ne vous fiez pas à l’entrée ou ne faites aucune supposition sur sa validité. Utilisez toujours des API sécurisées qui nettoient ou valident l’entrée. Si possible, utilisez des API qui lient ou paramètrent les variables, comme l’utilisation d’instructions préparées pour les requêtes SQL.

Pour plus d'informations, consultez les pages suivantes :

Sécuriser les points de terminaison HTTP pour le développement, les tests et la production

Azure Functions vous permet d’utiliser des clés pour rendre plus difficile l’accès à vos points de terminaison de fonctions HTTP. Pour sécuriser complètement vos points de terminaison de fonction en production,envisagez de mettre en œuvre une des options suivantes de sécurité au niveau de l’application Function :

Pour plus d’informations, consultez la section Sécuriser un point de terminaison HTTP en production.

Configurer le contrôle d’accès en fonction du rôle Azure (RBAC Azure)

Le contrôle d’accès en fonction du rôle Azure (RBAC Azure) a plusieurs rôles intégrés Azure que vous pouvez affecter aux utilisateurs, groupes, principaux de service et identités managées pour contrôler l’accès aux ressources Azure. Si les rôles intégrés ne répondent pas aux besoins de votre organisation, vous pouvez créer vos propres rôles personnalisés Azure.

Examinez chaque application Functions avant le déploiement pour identifier les autorisations excessives. Examinez attentivement les fonctions pour appliquer les autorisations de « moindre privilège », en donnant à chaque fonction uniquement ce dont elle a besoin pour s’exécuter correctement.

Utilisez la fonction de contrôle d’accès en fonction du rôle Azure (RBAC Azure) pour affecter des autorisations à des utilisateurs, groupes et applications dans une certaine étendue. L’étendue d’une attribution de rôle peut être une seule ressource, un groupe de ressources ou un abonnement. Dans la mesure du possible, évitez d’utiliser des caractères génériques.

Pour plus d’informations sur RBAC Azure, consultez :

Utiliser des identités managées et les coffres de clés

La gestion des informations d’identification pour s’authentifier auprès des services cloud constitue un défi courant lors de la génération d’applications cloud dans votre code. Les informations d’identification ne doivent jamais apparaître dans le code des applications, les stations de travail des développeurs ou le contrôle des sources. À la place, utilisez un coffre de clés pour stocker et récupérer les clés et les informations d’identification. Azure Key Vault offre un moyen de stocker des informations d’identification, des secrets et d’autres clés en toute sécurité. Le code s’authentifie auprès de Key Vault pour récupérer les informations d’identification.

Pour en savoir plus, consultez la section Utiliser des références Key Vault pour App Service et Azure Functions.

Les identités managées permettent aux applications Functions d’accéder à des ressources telles que les coffres de clés et les comptes de stockage sans avoir besoin de clés d’accès ou de chaînes de connexion spécifiques. Une piste d’audit complète dans les journaux affiche quelles identités exécutent les requêtes aux ressources. Utilisez RBAC Azure et les identités managées pour contrôler de manière précise les ressources auxquelles les applications Azure Functions peuvent accéder.

Pour plus d'informations, consultez les pages suivantes :

Utilisez des jetons de signature d’accès partagé (SAP) pour limiter l’accès aux ressources

Une signature d’accès partagé (SAP) fournit un accès délégué sécurisé aux ressources de votre compte de stockage sans compromettre la sécurité de vos données. Avec une SAP, vous avez un contrôle granulaire sur la manière dont un client peut accéder à vos données. Vous pouvez contrôler, entre autres paramètres, les ressources auxquelles le client peut accéder, les autorisations dont il dispose pour ces ressources ainsi que la durée de validité de la SAP.

Pour plus d’informations, consultez Accorder un accès limité aux ressources du Stockage Azure à l’aide des signatures d’accès partagé (SAS).

Stockage Blob sécurisé

Identifiez et classez les données sensibles, et réduisez le stockage des données sensibles à ce qui est nécessaire. Pour le stockage de données sensibles, ajoutez l’authentification à plusieurs facteurs et le chiffrement des données en transit et au repos. Accordez un accès limité aux ressources Stockage Azure à l’aide de jetons SAP.

Pour plus d’informations, consultez la section Recommandations de sécurité pour le stockage Blob.

Optimization

Une fois qu’une application est en production, le personnel de sécurité peut aider à optimiser le flux de travail et à préparer la mise à l’échelle.

Utiliser Microsoft Defender pour le cloud et appliquer les recommandations de sécurité

Microsoft Defender pour le cloud est une solution d’analyse de sécurité pour votre application qui identifie les vulnérabilités de sécurité potentielles et crée des recommandations. Les recommandations vous guident dans la configuration des contrôles nécessaires pour renforcer et protéger vos ressources.

Pour plus d'informations, consultez les pages suivantes :

Appliquer les stratégies de gouvernance des applications

Appliquez des mesures d’exécution et de protection centralisées et cohérentes à votre application à l’échelle. Pour plus d’informations, consultez la section Définitions de stratégies intégrées Azure Policy.

Étapes suivantes