Application automatique des mises à jour de sécurité pour AWS Elastic Beanstalk

21

Je suis fan d'Heroku depuis ses débuts. Mais j'aime le fait qu'AWS Elastic Beanstalk vous donne plus de contrôle sur les caractéristiques des instances. Une chose que j'aime chez Heroku est le fait que je peux déployer une application et ne pas m'inquiéter de la gérer. Je suppose que Heroku s'assure que toutes les mises à jour de sécurité du système d'exploitation sont appliquées en temps opportun. Je dois juste m'assurer que mon application est sécurisée.

Ma recherche initiale sur Beanstalk montre que bien qu'il crée et configure les instances pour vous, il passe ensuite à un processus de gestion plus manuel. Les mises à jour de sécurité ne seront pas automatiquement appliquées aux instances. Il semble qu'il y ait deux domaines de préoccupation:

  • Nouvelles versions AMI - Au fur et à mesure que de nouvelles versions AMI arrivent, il semble que nous souhaitons exécuter la dernière version (probablement la plus sécurisée). Mais mes recherches semblent indiquer que vous devez lancer manuellement une nouvelle configuration pour voir la dernière version AMI, puis créer un nouvel environnement pour utiliser cette nouvelle version . Existe-t-il un meilleur moyen automatisé de convertir vos instances en nouvelles versions AMI?
  • Entre les versions, des mises à jour de sécurité seront publiées pour les packages. Il semble que nous souhaitons également les mettre à niveau. Ma recherche semble indiquer que les gens installent des commandes pour exécuter occasionnellement une mise à jour yum. Mais comme de nouvelles instances sont créées / détruites en fonction de leur utilisation, il semble que les nouvelles instances n'auraient pas toujours les mises à jour (c'est-à-dire le temps entre la création de l'instance et la première mise à jour yum). Vous aurez donc parfois des instances qui ne sont pas corrigées. Et vous allez également avoir des instances se corrigeant constamment jusqu'à ce que la nouvelle version AMI soit appliquée. Mon autre préoccupation est que ces mises à jour de sécurité n'ont peut-être pas fait l'objet de la propre revue d'Amazon (comme le font les versions AMI) et cela pourrait casser mon application pour les mettre à jour automatiquement. Je sais que Dreamhost a eu une interruption de 12 heures, car il appliquait les mises à jour Debian de manière entièrement automatique sans aucune révision. Je veux m'assurer que la même chose ne m'arrive pas.

Ma question est donc la suivante: Amazon fournit-il un moyen d'offrir des PaaS entièrement gérés comme Heroku? Ou AWS Elastic Beanstalk est-il vraiment plus qu'un simple script d'installation et après cela, vous êtes seul (à part les outils de surveillance et de déploiement qu'ils fournissent)?

Eric Anderson
la source
1
Je cherche également ces réponses, mais il semble que vous devez faire attention aux mises à jour. En ce qui concerne l'article en lecture-écriture, Elastic Beanstalk fait-il la note en tant que PaaS? AWS Elastic Beanstalk n'est pas un PaaS mais plutôt une "fonctionnalité de configuration pour IaaS".
Alexander Taubenkorb

Réponses:

18

Tout d'abord, pour être clair, aucun Elastic Beanstalk n'est pas PaaS dans la façon dont vous y pensez. Si vous le décomposez, c'est plus comme avoir des modèles d'instance virtualisés et une automatisation du déploiement d'applications comme marionnette ou chef. Parallèlement à cela, vous bénéficiez d'un accès automatisé au service d'équilibrage de charge d'Awe et à la surveillance de la surveillance du cloud, qui vous permet de démarrer de nouveaux serveurs d'applications ou d'arrêter les serveurs existants en fonction de mesures.

Ce qui donne l'impression que PaaS est que le principal argument de vente est le système de déploiement d'applications qui prend votre code et le copie sur tous les serveurs d'applications de votre cluster.

Certaines personnes se plaignent du PaaS, c'est que le fournisseur PaaS prend des décisions pour vous sur l'environnement d'application. Cela me semble être la proposition de valeur de PaaS: en tant que client, vous pouvez vous concentrer sur la fonctionnalité de l'application et laisser tous les autres détails au fournisseur PaaS. Vous payez pour que quelqu'un d'autre gère l'infrastructure et assure l'administration du système. Pour cette simplicité, vous leur payez une prime, comme dans le cas de Heroku, qui exécute également leur infrastructure sur ec2, uniquement d'une manière transparente pour vous.

Amazon propose vraiment Elastic Beanstalk au-dessus d'Ec2 et de leurs api REST, et ne fait pas beaucoup d'efforts pour vous le cacher. En effet, ils gagnent leur argent via IaaS, et EB orchestre simplement la configuration d'un groupe de ressources ec2 que vous pourriez configurer vous-même, compte tenu du temps et du savoir-faire.

Maintenant, en termes de spécificités d'une AMI, encore une fois, les AMI sont l'une des nombreuses pièces ec2 qui sont utilisées pour faciliter l'EB. Il n'y a rien de magique à propos d'une EB AMI - c'est juste un ami Linux Linux préconfiguré pour fonctionner avec EB. Comme toute autre AMI, vous pouvez le démarrer dans EC2, le modifier et dériver une nouvelle AMI personnalisée à partir de votre instance en cours d'exécution. Amazon Linux est essentiellement un croisement entre Centos et Fedora, avec des correctifs de paravirtualisation et des dépôts de mémoire pré-configurés maintenus par Amazon.

Comme vous le savez probablement, Amazon linux est déjà configuré pour installer des correctifs de sécurité au démarrage. Cependant, les instances en cours d'exécution ne sont pas différentes de tout autre serveur en ce qui concerne les correctifs. L'application de correctifs peut interrompre le service. Si vous êtes extrêmement préoccupé par les correctifs de sécurité, vous pouvez toujours utiliser une commande de conteneur et configurer cron pour exécuter yum update --security à une certaine périodicité.

Vous pouvez également utiliser l'API EB pour modifier la configuration EB ou automatiser la création d'un nouvel environnement EB, vous pouvez ensuite y basculer une fois qu'il est prêt et prêt, puis arrêter l'ancien. Ceci est décrit ici: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html

Comme le reste d'AWS, il existe un moyen d'accéder et de contrôler par programme toutes les fonctionnalités non SaaS, donc rien ne vous empêche de créer des AMI corrigées, qui sont ensuite utilisées pour créer de nouveaux environnements EB et les déployer. EB ne va pas vous imposer de détails de configuration, ni vous fournir un groupe d'administration système pour maintenir l'infrastructure.

gview
la source
2
Merci pour la réponse. On dirait que votre opinion est que Beanstalk n'est pas un PAAS, alors arrêtez de le traiter comme tel. Je pense que c'est malheureusement la bonne réponse. Bien que vous puissiez faire des choses comme avoir une "mise à jour miam" sur un travail cron ou utiliser les API pour basculer automatiquement dans la nouvelle version d'AMI, ce sera toujours une solution inférieure aux normes par rapport à un vrai PAAS qui est construit pour fournir une sécurité environnement automatiquement. Je vais continuer et marquer votre réponse comme correcte puisque cette question est posée depuis plusieurs mois et c'est la seule réponse fournie.
Eric Anderson
Eric, avez-vous regardé Opsworks? Il est un peu plus piloté par console, et même s'il ne résout pas nécessairement les problèmes que vous soulevez à propos de la base des serveurs en cours d'exécution, il ressemble beaucoup plus à PaaS.
gview
1

Toutes les applications et tous les environnements Beanstalk peuvent être configurés via des fichiers EBEXTENSIONS qui sont fournis avec votre package de déploiement d'application (par exemple, un fichier WAR pour les applications Java) avec une configuration basée sur YAML pour mettre à jour ou reconfigurer n'importe quelle partie de votre application, conteneur, système d'exploitation, etc. Beanstalk est PaaS car c'est une plate-forme qui vous permet de déployer des applications sans avoir à vous soucier de l'IaaS sous-jacent. À la fin de la journée, tous les fournisseurs de PaaS masquent l'IaaS sous-jacent grâce à une certaine forme d'automatisation. Cependant, comme il s'agit de l'informatique dont nous parlons, il n'y a pas un seul état optimal pour toutes les applications et sans la possibilité de modifier l'IaaS sous le PaaS, vous êtes à la merci du fournisseur de services PaaS pour vous assurer que vos applications fonctionnent correctement, rapide et sécurisé.

Heroku s'exécute au-dessus d'AWS en utilisant une couche de gestion différente, c'est tout. Cependant, cela devient une douleur dans le cul lorsque vous devez faire des choses comme sécuriser votre application. Bien qu'ils fassent de leur mieux pour gérer efficacement leur solution et maintenir la sécurité, etc., ils ne peuvent pas et ne prendront pas le risque et les conséquences d'une vulnérabilité dans votre application à la fin de la journée. Ils veulent rendre leurs services aussi coupants que possible.

La capacité de modifier l'IaaS sous-jacent à la plate-forme est une force et un attrait de Beanstalk IMO.

Sunil
la source
Je ne pense pas que cela réponde réellement à la question.
Drew Khoury