La sécurité sans serveur nécessite un changement de paradigme dans la façon dont les organisations envisagent la sécurité sur application. Au lieu de construire la sécurité autour de l'application elle-même en utilisant le Pare-feu de nouvelle génération, les organisations doivent également construire la sécurité autour des fonctions au sein des applications hébergées par des fournisseurs tiers cloud. Cette couche de sécurité supplémentaire garantit le renforcement de application et le contrôle d'accès au moindre privilège afin que chaque fonction ne fasse ni plus ni moins que ce pour quoi elle a été conçue - ce qui aide les organisations à améliorer leur posture de sécurité et à maintenir la Conformité.
L'informatique sans serveur fait référence à un modèle informatique clouddans lequel le fournisseur cloud fait fonctionner le serveur et gère dynamiquement l'allocation des ressources de la machine. AWS Lambda Functions, Google cloud Functions et Azure Functions sont des frameworks populaires sans serveur qui construisent des applications.
Une architecture sans serveur offre l'avantage d'une mise à l'échelle automatisée et quasi infinie. Il y a très peu de distance entre les développeurs et le code déployé, ce qui accélère la mise sur le marché et facilite la maintenance et le test des fonctions individuelles. Enfin, la quantité réelle de ressources d'application consommées a un impact sur la tarification, ce qui signifie que vous ne payez que pour ce que vous utilisez, d'où une réduction des coûts.
La technologie sans serveur représente un nouveau transfert de responsabilités du client vers le fournisseur cloud. Aucune infrastructure n'étant impliquée, les frais généraux d'exploitation diminuent considérablement.
En confiant la gestion de l'infrastructure à votre fournisseur cloud, vous pouvez vous concentrer sur le développement de solutions au service de votre organisation et de vos clients. Elle vous aide à vous concentrer sur vos avantages concurrentiels uniques et vous permet souvent de réaliser des économies, non seulement sur le plan informatique, mais aussi en déplaçant des personnes vers le développement.
Voici quelques points clés :
Tant qu'une fonction au sein d'un conteneur a besoin d'accéder à la lecture de S3, toutes les fonctions de ce conteneur disposent également de ce privilège. Avec AWS Lambda, vous avez la possibilité d'appliquer des privilèges à des fonctions individuelles, et de vous assurer que ces privilèges sont limités à la plus petite portée nécessaire. En cas de vulnérabilité dans l'une de vos fonctions, un attaquant n'aura accès qu'aux capacités limitées de cette fonction, et non à l'ensemble des autorisations à accorder à un conteneur.
Avec l'évolution de la structure des applications sans serveur, de nouveaux défis se présentent.
Avec une application sans serveur, il n'y a nulle part où placer une sécurité classique telle que WAF, firewall et IDS. Il n'est pas simple d'ériger des murs entre les attaquants et les ressources, et ce pour plusieurs raisons.
Les applications sans serveur sont plus poreuses et plus fines. Composées de dizaines ou de centaines de fonctions, les applications sans serveur sont de minuscules microservices avec leurs propres politiques, rôles, API, piste d'audit, etc. Cela modifie la surface d'attaque : au lieu d'un petit nombre de points d'entrée avec de nombreuses fonctionnalités cachées derrière chacun d'entre eux, il y a maintenant plus de points d'entrée, chacun avec une petite partie de l'application derrière lui. Pour défendre votre site application, vous devez désormais réfléchir à chaque point d'entrée.
Divers événements peuvent déclencher des fonctions, telles que
Si les motivations des attaquants restent les mêmes, les tactiques qu'ils utiliseront avec les applications sans serveur doivent changer. Voici quelques-unes des menaces de Sécurité sans serveur propres à cette nouvelle architecture d'application.
Avec l'application sans serveur, vous avez la possibilité d'appliquer des privilèges à des fonctions individuelles, et de vous assurer que ces privilèges sont limités au plus petit périmètre nécessaire. Cela peut vous permettre de réduire considérablement votre surface d'attaque et d'atténuer l'impact d'une attaque.
Malheureusement, une étude récente de Check Point a révélé que la grande majorité des développeurs ne profitent pas de cette opportunité. Notre recherche a découvert que 98 % des fonctions dans les applications sans serveur sont à risque, dont 16 % sont considérées comme "sérieuses". En outre, la plupart de ces fonctions sont dotées de plus d'autorisations qu'elles n'en ont besoin, qui pourraient être supprimées pour améliorer la sécurité de la fonction et de l'application.
Lors de l'analyse des fonctions, Check Point attribue un score de risque à chaque fonction. Elle est basée sur les faiblesses de posture découvertes et tient compte non seulement de la nature de la faiblesse, mais aussi du contexte dans lequel elle se produit. Après avoir analysé des dizaines de milliers de fonctions dans des applications réelles, nous avons constaté que la plupart des applications sans serveur ne sont tout simplement pas déployées de manière aussi sécurisée qu'elles devraient l'être pour minimiser les risques. Les principaux problèmes de sécurité découverts par Check Point sont des autorisations inutiles, tandis que les autres concernent des codes et des configurations vulnérables.
Le fait que les fonctions sans serveur soient éphémères et de courte durée rend plus difficile pour les attaquants de persister dans votre application à long terme. C'est d'ailleurs l'un des nombreux avantages du serverless en matière de sécurité. Toutefois, ce n'est pas parce que cela rend la vie plus difficile aux attaquants qu'ils cesseront leurs attaques ; ils changeront simplement de stratégie.
La courte durée des fonctions sans serveur signifie que les menaces de Sécurité sans serveur peuvent changer de forme. Les attaquants peuvent élaborer une attaque beaucoup plus courte qui se contente de voler, par exemple, quelques numéros de carte de crédit. Ce tour unique de l'attaque se répète continuellement dans ce que nous appelons l'attaque du "jour de la marmotte".
Malgré la courte durée de vie des ressources natives de cloud, les attaquants peuvent toujours trouver des moyens d'obtenir une persistance à long terme dans votre application. Une façon pour les attaquants de contourner la nature éphémère de l'application sans serveur est de mener une attaque en amont, ou "Poisoning the Well".
Les applications "cloud-native" ont tendance à comprendre de nombreux modules et bibliothèques avec du code provenant de diverses sources tierces. Les attaquants s'efforcent d'inclure des codes malveillants dans les projets courants. Ensuite, après avoir empoisonné le puits, le code malveillant contenu dans vos applications cloud peut appeler chez lui, obtenir des instructions et faire des ravages.
Bien qu'il ne s'agisse pas précisément d'une "menace" pour la sécurité, il s'agit plutôt d'un défi et d'une entrave possible à vos efforts pour sécuriser votre architecture sans serveur.
Serverless offre l'avantage d'augmenter la vitesse de développement de application. Malheureusement, l'approche traditionnelle de la sécurité, selon laquelle les développeurs écrivent du code et des charges de travail, et les opérations de sécurité mettent ensuite en place des contrôles de sécurité autour de ces charges de travail, ne fonctionnera tout simplement pas pour le serverless.
Si les développeurs doivent attendre que la sécurité ouvre des ports, des rôles IAM ou des groupes de sécurité pour eux, l'avantage d'une plus grande rapidité s'érode rapidement. Trop souvent, la solution consiste à supprimer le SecOps de l'équation, ce qui peut effectivement constituer un risque.
D'autre part, la configuration des autorisations pour la myriade de ressources sans serveur et les interactions entre elles est une tâche qui prend du temps. En outre, le fait de "consacrer" le temps des développeurs à cette configuration de sécurité peut rapidement s'avérer coûteux et ne constitue pas une utilisation idéale de leur temps. L'automatisation, telle que la plateforme CloudGuard, permet d'améliorer la sécurité sans serveur sans consacrer trop de temps aux développeurs.
Un autre avantage du serverless est que vous ne payez que pour ce que vous consommez réellement, ce qui peut se traduire par une réduction des coûts. Néanmoins, le fait de payer exactement ce que vous utilisez signifie que toute augmentation du temps de traitement entraînera une augmentation des coûts.
Le fait de placer un excès de configuration de sécurité dans votre application peut potentiellement ajouter du travail supplémentaire à vos fonctions, ce qui peut augmenter les coûts. Si l'augmentation du temps de traitement au nom de la sécurité est un investissement judicieux, elle nécessite une mise en œuvre adéquate afin d'éviter des augmentations de coûts excessives et inutiles.
À l'instar de l'augmentation du temps pour Sécurité sans serveur Configuration ci-dessus, il ne s'agit pas exactement d'une menace, mais plutôt d'un défi que vous devrez relever tout en sécurisant votre architecture sans serveur.