防止跨环境访问 Amazon S3 存储桶 - AWS Elastic Beanstalk

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

防止跨环境访问 Amazon S3 存储桶

Elastic Beanstalk 提供托管策略来 AWS 处理您账户中 Elastic Beanstalk 环境所需的资源。 AWS 默认情况下,向您的 AWS 账户中的一个应用程序提供的权限可以访问属于同一 AWS 账户中其他应用程序的 S3 资源。

如果您的 AWS 账户运行多个 Beanstalk 应用程序,则可以创建自己的自定义策略,将其附加到您自己的服务角色或每个环境的实例配置文件,从而缩小策略的安全范围。然后,您可以将自定义策略中的 S3 权限限制为特定环境。

注意

请注意,您有责任维护您的自定义政策。如果您的自定义策略所依据的 Elastic Beanstalk 托管策略发生变化,则您需要根据对基本策略的相应更改来修改您的自定义策略。有关 Elastic Beanstalk 托管策略的变更历史记录,请参阅。Elastic Bean AWS stalk 更新了托管策略

缩小权限范围的示例

以下示例基于AWSElasticBeanstalkWebTier托管策略。

默认策略包括以下几行,用于对 S3 存储桶的权限。此默认策略不将 S3 存储桶操作限制在特定的环境或应用程序中。

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

您可以通过将特定资源限定为的服务角色来缩小访问范围Principal。以下示例提供对环境中 S3 存储桶的自定义服务角色aws-elasticbeanstalk-ec2-role-my-example-env权限,ID my-example-env-ID 为。

例 仅向特定环境的 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(不是环境名称)。您可以从 Elastic Beanstalk 控制台的环境概述页面上获取环境 ID。您也可以使用 desc AWS CLI ribe-environments 命令来获取此信息。

有关帮助您更新 Elastic Beanstalk 环境的 S3 存储桶权限的更多信息,请参阅以下资源: