Pour autant que je sache, mes fonctions Google Cloud sont accessibles dans le monde entier. Si je veux contrôler leur accès, je dois implémenter l'autorisation dans le cadre de la fonction elle-même. Disons que je pourrais utiliser une approche basée sur des jetons au porteur. Cela protégerait les ressources derrière cette fonction contre tout accès non autorisé.
Cependant, étant donné que la fonction est disponible dans le monde entier, elle peut toujours être éditée par DDoS par un méchant. Si l'attaque n'est pas aussi forte que la défense de Google, ma fonction/service peut toujours être réactif. C'est bon. Cependant, je ne veux pas payer pour ces appels de fonction effectués par la partie que je n'ai pas autorisée à accéder à la fonction. (puisque la facturation est par nombre d'appels de fonction). C'est pourquoi il est important pour moi de savoir si Google Cloud Functions détecte les attaques DDoS et active les contre-mesures avant d'être responsable des frais.
J'ai envoyé un e-mail à l'assistance Google Cloud, concernant les fonctions du cloud et si elles étaient protégées contre les attaques DDoS. J'ai reçu cette réponse de l'équipe d'ingénierie (au 4 avril 2018):
Cloud Functions se trouve derrière le Google Front End qui atténue et absorbe de nombreuses attaques de couche 4 et inférieures, telles que les inondations SYN, les inondations de fragments IP, l'épuisement des ports, etc.
Je me suis posé la même question récemment et suis tombé sur cette information. Pour répondre rapidement à votre question: Google ne protège toujours pas automatiquement votre GCF contre les attaques DDOS massives, donc: à moins que l'infrastructure de Google ne se bloque après les tentatives d'attaque, vous devrez payer pour tout le trafic et le temps de calcul causés par l'attaque.
Il existe certains mécanismes, que vous devriez examiner de plus près, car je ne suis pas sûr, si chacun d'eux s'applique également au GCF:
Je pense que la question sur la protection DDOS a été suffisamment répondue. Malheureusement, la protection DDOS ou non, c'est facile d'accumuler beaucoup de charges. J'ai accumulé environ 30 $ de charges en 20 minutes et la protection DDOS n'était nulle part en vue. Il nous reste encore " Je ne veux pas payer pour ces appels de fonction effectués par la partie que je n'ai pas autorisée à accéder à la fonction. "
Parlons donc de stratégies d'atténuation réalistes. Google ne vous donne pas de moyen d'imposer une limite stricte à vos dépenses, mais vous pouvez faire différentes choses.
Limitez le nombre maximal d'instances qu'une fonction peut avoir
Lors de la modification de votre fonction, vous pouvez spécifier le nombre maximal d'instances simultanées qu'elle peut générer. Définissez-le sur quelque chose que vos utilisateurs ne toucheront probablement pas, mais cela ne cassera pas immédiatement la banque si un attaquant le fait. Ensuite...
Définissez une alerte budgétaire
Vous pouvez créer des budgets et définir des alertes dans la section Facturation de la console cloud. Mais ces alertes arrivent des heures en retard et vous pourriez dormir ou quelque chose alors ne dépendez pas trop de cela.
Obscurcissez les noms de vos fonctions
Cela n'est pertinent que si vos fonctions ne sont accessibles qu'en privé. Vous pouvez donner à vos fonctions des noms obscurcis (peut-être hachés) que les attaquants sont peu susceptibles de deviner. Si vos fonctions ne sont pas accessibles en privé, vous pouvez peut-être ...
Configurez une instance Compute Engine pour servir de relais entre les utilisateurs et vos fonctions cloud
Les instances de calcul sont à prix fixe. Les attaquants peuvent les ralentir mais ne peuvent pas les faire casser votre portefeuille. Vous pouvez configurer la limitation de débit sur l'instance de calcul. Les utilisateurs ne connaîtront pas vos noms de fonction cloud obscurcis, seul le relais le saura, donc personne ne peut attaquer directement vos fonctions cloud à moins qu'il ne devine vos noms de fonction.
Demandez à vos fonctions cloud de désactiver la facturation si elles sont trop appelées
Chaque fois que votre fonction est appelée, vous pouvez l'incrémenter d'un compteur dans Firebase ou dans un objet Cloud Storage. Si ce compteur devient trop élevé, vos fonctions peuvent désactiver automatiquement la facturation de votre projet.
Google fournit un exemple de la façon dont une fonction cloud peut désactiver la facturation à un projet: https://cloud.google.com/billing/docs/how-to/notify#cap_disable_billing_to_stop_usage
Dans l'exemple, il désactive la facturation en réponse à un pub/sub de la facturation. Cependant, le prix dans ces pubs/sous-marins a des heures de retard, donc cela semble être une mauvaise stratégie. Avoir un comptoir quelque part serait plus efficace.
de lire les documents sur https://cloud.google.com/functions/quotas et https://cloud.google.com/functions/pricing il ne le fait pas semble qu'il existe une protection contre les abus pour les fonctions HTTP. vous devez distinguer entre une attaque DDoS qui rendra les serveurs de Google insensibles et un abus dont certains attaquants connaissent l'URL de votre fonction HTTP et l'invoquent des millions de fois, ce qui dans ce dernier cas ne concerne que le montant que vous payez.
Les attaques DDoS peuvent être atténuées par le Google Cloud Armor qui est actuellement en phase bêta
Voir également les initiés de Google exemple court avec les règles de sécurité du GC et les documents de référence