環境間の Amazon S3 バケットアクセスの防止 - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

環境間の Amazon S3 バケットアクセスの防止

このトピックでは、管理ポリシーが環境間の S3 バケットアクセスを許可する場合がある状況と、このタイプのアクセスを管理するカスタムポリシーを作成する方法について説明します。

Elastic Beanstalk は、AWS アカウントの Elastic Beanstalk 環境に必要な AWS リソースを取り扱うための管理ポリシーを提供します。AWS アカウント内の 1 つのアプリケーションにデフォルトで付与されるアクセス許可には、同じ AWS アカウントの他のアプリケーションに属する S3 リソースへのアクセス権があります。

AWS アカウントが複数の Beanstalk アプリケーションを実行している場合は、各環境の独自のサービスロールまたはインスタンスプロファイルにアタッチする独自のカスタムポリシーを作成することで、ポリシーのセキュリティをスコープダウンできます。そうすると、カスタムポリシーの S3 アクセス許可を特定の環境に制限できます。

注記

カスタムポリシーをメンテナンスする責任はお客様にあることに注意してください。カスタムポリシーのベースになっている Elastic Beanstalk 管理ポリシーが変更された場合は、ベースのポリシーに対する各変更についてカスタムポリシーを変更する必要があります。Elastic Beanstalk 管理ポリシーの変更履歴については、「Elastic Beanstalk での AWS マネージドポリシーの更新」を参照してください。

スコープダウンされたアクセス許可の例

次の例は、AWSElasticBeanstalkWebTier 管理ポリシーに基づいています。

デフォルトのポリシーには、S3 バケットへのアクセス許可に次の行が含まれます。このデフォルトポリシーは、S3 バケットアクションを特定の環境またはアプリケーションに制限しません。

{ "Sid" : "BucketAccess", "Action" : [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect" : "Allow", "Resource" : [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] }

特定のリソースを Principal として指定されたサービスロールに認定することで、アクセスをスコープダウンできます。次の例では、ID my-example-env-ID の環境内の S3 バケットに対するカスタムサービスロール aws-elasticbeanstalk-ec2-role-my-example-env のアクセス許可を示します。

例 特定の環境の S3 バケットにのみアクセス許可を付与する
{ "Sid": "BucketAccess", "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::...:role/aws-elasticbeanstalk-ec2-role-my-example-env" }, "Resource": [ "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345", "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345/resources/environments/my-example-env-ID/*" ] }
注記

リソース ARN には (環境名ではなく) Elastic Beanstalk 環境 ID を含める必要があります。環境 ID は、Elastic Beanstalk コンソールの [環境の概要] ページから取得できます。AWS CLI describe-environments コマンドを使用してこの情報を取得することもできます。

Elastic Beanstalk 環境の S3 バケットのアクセス許可を更新する方法の詳細については、次のリソースを参照してください。