防止跨环境访问 Amazon S3 存储桶 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

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

注意

请注意,您有责任维护您的自定义政策。如果您的自定义策略所依据的 Elastic Beanstalk 托管策略发生变化,则您需要根据对基本策略的相应更改来修改您的自定义策略。有关 Elastic Beanstalk 托管策略的变更历史记录,请参阅。Elastic Bean Amazon 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 Amazon CLI ribe-environments 命令来获取此信息。

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