Serverless Security (Sécurité des architectures sans serveur)
cloudDéfinition
La sécurité serverless adresse les enjeux spécifiques aux architectures Functions-as-a-Service (FaaS) comme AWS Lambda, Azure Functions ou Google Cloud Functions, où le modèle traditionnel de sécurisation des serveurs ne s'applique pas. Le fournisseur gère l'infrastructure, mais le développeur reste responsable du code, des dépendances, des configurations et des permissions IAM. Les risques principaux incluent les fonctions avec des permissions IAM excessives (souvent héritées d'un rôle admin générique), les injections via les event triggers (SQS, SNS, API Gateway), les dépendances vulnérables dans les layers Lambda, et les timeouts permettant des attaques de déni de service économique. Des outils comme PureSec (Palo Alto), Snyk ou Lumigo analysent la sécurité des fonctions serverless. La gestion des secrets requiert l'utilisation d'AWS Secrets Manager ou Parameter Store plutôt que des variables d'environnement en clair. Les politiques de resource-based et identity-based doivent être auditées régulièrement, et le principe du least privilege appliqué à chaque fonction individuellement.
Description
La sécurité serverless adresse les enjeux spécifiques aux architectures FaaS (AWS Lambda, Azure Functions, Google Cloud Functions) où le modèle traditionnel de sécurisation serveur ne s'applique pas. Le CSP gère l'infrastructure, mais le client reste responsable du code, des dépendances, des configurations IAM et des event triggers.
Contexte cloud
Les risques principaux serverless incluent les fonctions Lambda avec des rôles IAM trop permissifs, les injections via les event triggers (SQS, SNS, DynamoDB Streams), les dépendances vulnérables dans les layers, et les attaques de déni de service économique (DoES) via des invocations massives. AWS Powertools for Lambda facilite l'implémentation des bonnes pratiques de logging et tracing.
Points clés
- IRSA-like pour Lambda : chaque fonction doit avoir son propre rôle IAM avec uniquement les permissions nécessaires — jamais de rôle partagé entre fonctions de niveaux différents
- Secrets Manager intégration :
import boto3; ssm = boto3.client('ssm'); secret = ssm.get_parameter(Name='/prod/db/password', WithDecryption=True)— jamais de secrets en variables d'environnement Lambda en clair - Lumigo / Epsagon : tracing distribué serverless révélant les flux de données entre fonctions Lambda pour identifier les chemins d'exfiltration potentiels
Besoin d'un expert sur ce sujet ?
Audit, pentest, conformité ISO 27001, développement IA sécurisé — demandez un devis gratuit.
Demander un devis