本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
防止跨环境访问 Amazon S3 存储桶
本主题说明托管策略如何允许跨环境 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 存储桶权限的更多信息,请参阅以下资源:
-
ARN《IAM用户指南》中的@@ 格式