2017-05-03 1 views
0

Cette question a quelques similitudes avec Disable AWS Lambda Environment Variables dans son objectif général, mais vise principalement à l'accès au réseau.comment garantir aws lambda appelant qui a fourni des données reste sécurisé

Je voudrais permettre à un tiers d'invoquer ma fonction Lambda. La troisième partie soumettra ses propres données à la fonction Lambda (soit via la charge utile, soit en spécifiant l'emplacement des données, par exemple un compartiment S3).

Je souhaite que le service Lambda puisse garantir à un tiers que les données qu'il a fournies n'ont pas été divulguées depuis le processus Lambda vers un autre emplacement. Pour ce faire, à tout le moins, le tiers doit avoir l'assurance que la fonction Lambda ne s'est pas connectée à une autre ressource sur Internet et qu'elle lui a transmis les données.

En supposant que

  • Je fournis le code qui fonctionnera sur les données sensibles
  • le tiers n'a aucun moyen de vérifier que le code, et
  • la troisième confiance parti Amazon, mais ne ne pas me faire confiance

Y a-t-il un moyen d'y parvenir avec Lambda (peut-être en conjonction avec d'autres produits AWS)? J'ai examiné des solutions utilisant des passerelles, EC2, le cryptage au repos, S3, et l'autorisation personnalisée avec tous ceux-ci, mais n'ont trouvé aucune solution.

+0

Comme indiqué dans une réponse ci-dessous, une fonction Lambda à l'intérieur VPC ne peut accéder à Internet si vous le configurez pour qu'il puisse, mais comme * vous * contrôler l'environnement, et * vous * contrôlez le code, cela ne sert à rien de prouver que l'information n'a pas été divulguée. En fait, il n'y a jamais de moyen pour vous de me prouver que vous n'avez pas exporté/exposé/dupliqué mes données à moins que vous n'y ayez jamais eu accès. Sinon, comment peut-il y avoir une solution technique? Les seules «preuves» possibles seraient des audits tiers de confiance. –

+0

Je suis d'accord avec votre évaluation que la réponse ci-dessous ne résout pas le problème en raison de mon contrôle sur l'environnement. Cependant, je ne sais pas pourquoi une solution technique ne peut pas exister si la tierce partie de confiance fournit la plate-forme sur laquelle le code s'exécute (et si on suppose que la partie de confiance tient toujours sa promesse), pour s'assurer qu'à la demande du appelant, le code est exécuté dans un environnement restreint. – mwag

+0

BTW dans mon commentaire ci-dessus quand je dis « 3ème partie de confiance » Je veux dire AWS (par opposition à la « tiers » qui fournit les données sensibles et l'exécution du code et qui a besoin de l'assurance de la sécurité des données) – mwag

Répondre

1

Vous pouvez créer la méthode lambda à l'intérieur d'un VPC et la sécuriser. lire ce https://forums.aws.amazon.com/thread.jspa?messageID=733719 qu'ils avaient des problèmes parce qu'ils ne pouvaient pas accéder à Internet

+0

Comme @ Michael souligne dans son commentaire sur le PO, cette approche ne résout pas le problème, car il exigerait toujours que le tiers me fasse confiance de ne pas divulguer les données (par inadvertance ou non), puisque je pouvais contrôler si/comment le VPC est défini en haut – mwag

+1

Ne pouvez-vous pas leur donner le code et un script qui configure la configuration de lambda et ils exécutent leur VPC? Ce qu'ils peuvent faire confiance? – johni

+0

Ce n'est pas idéal car je leur donnerais du code, ce qui rend la solution difficile à maintenir, mais cela pourrait néanmoins être la meilleure solution actuellement possible. +1 – mwag

1

La seule « preuve » que vous pouvez offrir serait sous la forme d'un externe tiers de confiance (non AWS) qui a vérifié votre environnement , les pratiques et les politiques, et est assuré à leur satisfaction que vous êtes capable de gérer correctement les données sensibles.

Le client est – pour une raison quelconque – pas disposé à vous faire confiance pour traiter leurs données sans en même temps écrémage aussi certains sans autorisation ... En attendant, vous ne voulez pas sans doute pour une licence simplement votre code pour eux afin qu'ils puissent exécuter dans un environnement sécurisé à leur satisfaction.

Aucune de ces choses n'est un problème technique. Ce sont des problèmes de confiance.

Je ne suis pas entièrement sûr que vous avez considéré ce que signifiait vraiment un environnement vraiment isolé. Évidemment, vous ne seriez pas en mesure de consulter des bases de données ... mais aussi, il serait nécessairement dépouillé de toute fonctionnalité de journalisation. console.log(data.super_secret);. Les journaux des fonctions Lambda quittent l'environnement Lambda et volent vers CloudWatch.

En supposant que, pour une raison quelconque, vous n'êtes toujours pas convaincu, il y a toujours DNS Tunneling. La beauté de ce plan diabolique est que vous n'êtes jamais isolé de la résolution DNS en VPC, même lorsque vous n'avez pas Internet. Le résolveur DNS au 169.254.169.253 est toujours là, à l'écoute, protégé contre les groupes de sécurité, immunisé contre les ACL réseau, immunisé contre la route par défaut. Vous voulez furtivement faire passer des données hors d'un environnement "isolé"? Terminé.Dans tous les cas, AWS ne garantit pas la sécurité votre configuration - ils n'assument que la responsabilité de sécuriser leur infrastructure elle-même. Ils vous assurent qu'il est aussi sûr que vous l'avez configuré ... mais la façon de le configurer dépend de vous. Ils appellent le modèle de sécurité partagée:

Alors que AWS gère la sécurité de le nuage, la sécurité dans le nuage est la responsabilité du client. Les clients conservent le contrôle de la sécurité qu'ils choisissent de mettre en œuvre pour protéger leur propre contenu, plate-forme, applications, systèmes et réseaux, tout comme ils le feraient pour les applications dans un centre de données sur site.

enter image description here

https://aws.amazon.com/compliance/shared-responsibility-model/

+0

J'ai upvoted parce que vous lève des points valides (par exemple console.log). Je ne sais pas encore pourquoi il est difficile de voir pourquoi un client ne ferait pas confiance - de nombreuses banques et hôpitaux ne font même pas encore confiance à AWS ou à Google, alors quand les banques et les hôpitaux fournissent les données sensibles, c'est toujours un saut de la foi de supposer qu'ils seront finalement à l'aise en faisant confiance à AWS/Google/Azure. Mais c'est un saut qui est beaucoup plus facile à prendre (d'où la volonté de faire cette supposition ici) que si c'était pour n'importe quelle entreprise (par exemple la mienne) autre que ces mastodontes. – mwag

+0

Oui, je comprends qu'il est une fiducie Issue-- le but de cette question est de déterminer si cette question de confiance, entre A et B, peut être atténué par une solution technique impliquant une partie mutuellement confiance C-- similaire à la façon dont SSL certs utiliser un tiers (l'autorité de certification) pour négocier un niveau de confiance qui n'est pas possible sans le tiers de confiance. – mwag

+0

Je n'avais pas l'intention de dire ou d'insinuer qu'il était difficile de voir pourquoi un client ne ferait pas confiance à un vendeur. * Pour quelque raison que ce soit * a été conçu comme un espace réservé pour tout, de «vendeur semble sommaire» à «le client a une estimation irréaliste de la valeur réelle de leurs données» à «changer est difficile» et pointe entre les deux. –