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 :
- Sécurité dans Azure App Service
- Contrôles de sécurité intégrés
- Bonnes pratiques du développement sécurisé sur Azure.
- Bonnes pratiques de sécurité pour les solutions Azure (rapport PDF)
- Responsabilités partagées pour le cloud computing
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 :
- GitHub – Détecter les vulnérabilités et les erreurs de sécurité dans votre code
- GitHub – Gérer les vulnérabilités de sécurité dans votre projet
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 :
- Validation de l’entrée Azure Functions avec FluentValidation
- Cadre de sécurité : Atténuation de la validation des entrées
- Validation de la requête de la fonction déclencheur HTTP
- Comment valider une requête pour Azure Functions
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 :
- Activer l’authentification et l’autorisation App Service pour votre application Functions. Consultez Clés d’autorisation.
- Utilisez Gestion des API Azure pour authentifier les requêtes. Consultez la section Importer une application Azure Function en tant qu’API dans Azure API Management.
- Déployez votre application Functions dans un environnement Azure App Service (ASE).
- Utilisez un plan App Service qui restreint l’accès et implémentez Azure Front Door + WAF pour gérer vos demandes entrantes. Consultez la section Créer une porte d’entrée pour une application Web globale hautement disponible.
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 :
- Qu’est-ce que le contrôle d’accès en fonction du rôle Azure (RBAC Azure) ?
- Rôles intégrés Azure
- Rôle personnalisés Azure
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 :
- Que sont les identités managées pour les ressources Azure ?
- Guide pratique pour utiliser des identités managées avec App Service et Azure Functions
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 :
- Protégez vos applications avec Microsoft Defender pour le cloud
- Recommandations de l’application Defender for Cloud
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour