AWS - Elastic Beanstalk Enum
Elastic Beanstalk
Amazon Elastic Beanstalkは、ウェブアプリケーションやサービスのデプロイ、管理、スケーリングを簡素化するプラットフォームを提供します。Java、.NET、PHP、Node.js、Python、Ruby、Goなどのさまざまなプログラミング言語やフレームワーク、Dockerコンテナをサポートしています。このサービスは、Apache、Nginx、Passenger、IISなどの広く使用されているサーバーと互換性があります。
Elastic Beanstalkは、AWSクラウドにアプリケーションをデプロイするためのシンプルで柔軟な方法を提供し、基盤となるインフラストラクチャについて心配する必要がありません。自動的にキャパシティのプロビジョニング、負荷分散、スケーリング、アプリケーションの健康状態の監視の詳細を処理し、コードの記述とデプロイに集中できるようにします。
Elastic Beanstalkによって作成されるインフラストラクチャは、EC2のオートスケーリンググループ(ロードバランサー付き)によって管理されます。つまり、最終的にはホストを侵害した場合、EC2について知っておく必要があります。
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumさらに、Dockerが使用されている場合、ECSを使用することが可能です。
AWS - EKS EnumApplication & Environments
AWS Elastic Beanstalkでは、「アプリケーション」と「環境」の概念は異なる目的を持ち、デプロイプロセスにおいて異なる役割を果たします。
Application
Elastic Beanstalkのアプリケーションは、アプリケーションのソースコード、環境、および設定の論理コンテナです。アプリケーションコードの異なるバージョンをまとめて管理することができます。
アプリケーションを作成するとき、名前と説明を提供しますが、この段階ではリソースはプロビジョニングされません。これは、コードと関連リソースを整理および管理するための方法です。
アプリケーション内には複数のアプリケーションバージョンを持つことができます。各バージョンはコードの特定のリリースに対応し、1つ以上の環境にデプロイすることができます。
Environment
環境は、AWSインフラストラクチャ上で実行されるアプリケーションのプロビジョニングされたインスタンスです。これはアプリケーションコードがデプロイされ、実行される場所です。Elastic Beanstalkは、環境設定に基づいて必要なリソース(例:EC2インスタンス、ロードバランサー、オートスケーリンググループ、データベース)をプロビジョニングします。
各環境はアプリケーションの単一バージョンを実行し、開発、テスト、ステージング、本番などの異なる目的のために複数の環境を持つことができます。
環境を作成するとき、プラットフォーム(例:Java、.NET、Node.jsなど)と環境タイプ(例:ウェブサーバーまたはワーカー)を選択します。また、インフラストラクチャおよびアプリケーション設定のさまざまな側面を制御するために環境設定をカスタマイズすることもできます。
2 types of Environments
Web Server Environment: これはウェブアプリケーションやAPIをホストおよび提供するために設計されています。これらのアプリケーションは通常、HTTP/HTTPSリクエストを処理します。ウェブサーバー環境は、EC2インスタンス、ロードバランサー、オートスケーリンググループなどのリソースをプロビジョニングし、トラフィックの処理、キャパシティの管理、アプリケーションの高可用性を確保します。
Worker Environment: これはバックグラウンドタスクを処理するために設計されています。これらのタスクは通常、時間がかかるかリソースを多く消費する操作であり、クライアントへの即時応答を必要としません。ワーカー環境はEC2インスタンスとオートスケーリンググループのようなリソースをプロビジョニングしますが、HTTP/HTTPSリクエストを直接処理しないため、ロードバランサーはありません。代わりに、Amazon Simple Queue Service (SQS) キューからタスクを消費し、ワーカー環境と処理するタスクの間のバッファとして機能します。
Security
Beanstalkでアプリを作成する際には、3つの非常に重要なセキュリティオプションを選択する必要があります:
EC2 key pair: これは、アプリを実行しているEC2インスタンスにアクセスできるSSHキーです。
IAM instance profile: これは、インスタンスが持つインスタンスプロファイル(IAM権限)です。
自動生成されたロールは**
aws-elasticbeanstalk-ec2-role
**と呼ばれ、すべてのECS、すべてのSQS、DynamoDB、elasticbeanstalk、およびelasticbeanstalk S3に対するいくつかの興味深いアクセス権を持ち、AWS管理ポリシーを使用します:AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.Service role: これは、必要なすべてのアクションを実行するためにAWSサービスが使用するロールです。私の知る限り、通常のAWSユーザーはそのロールにアクセスできません。
AWSによって生成されたこのロールは**
aws-elasticbeanstalk-service-role
**と呼ばれ、AWS管理ポリシーAWSElasticBeanstalkEnhancedHealthおよびAWSElasticBeanstalkManagedUpdatesCustomerRolePolicyを使用します。
デフォルトではメタデータバージョン1は無効です:
Exposure
Beanstalkデータは、S3バケットに次の名前で保存されます:elasticbeanstalk-<region>-<acc-id>
(AWSコンソールで作成された場合)。このバケットの中には、アップロードされたアプリケーションのソースコードが見つかります。
作成されたウェブページのURLは**http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
**です。
バケットに対する読み取りアクセスを取得した場合、ソースコードを読み取ることができ、さらには機密情報を見つけることもできます。
バケットに対する書き込みアクセスを取得した場合、ソースコードを変更して、次回実行されるときにアプリケーションが使用するIAMロールを侵害することができます。
Enumeration
認証されていないアクセス
AWS - Elastic Beanstalk Unauthenticated Enum永続性
AWS - Elastic Beanstalk Persistence特権昇格
AWS - Elastic Beanstalk Privescポストエクスプロイト
AWS - Elastic Beanstalk Post ExploitationLast updated