【发布时间】:2019-08-24 21:10:06
【问题描述】:
我正在寻找有关管理 AWS Elastic Beanstalk 应用程序的最佳实践的建议。
我有一个具有 2 个不同环境的应用程序,我将其称为 prod 和 dev。我想允许所有协作者部署到 dev env 并将 prod 部署到仅限一个用户。
最好的方法是什么?
【问题讨论】:
标签: amazon-web-services web-deployment amazon-elastic-beanstalk
我正在寻找有关管理 AWS Elastic Beanstalk 应用程序的最佳实践的建议。
我有一个具有 2 个不同环境的应用程序,我将其称为 prod 和 dev。我想允许所有协作者部署到 dev env 并将 prod 部署到仅限一个用户。
最好的方法是什么?
【问题讨论】:
标签: amazon-web-services web-deployment amazon-elastic-beanstalk
ElasticBeanstalk 与 IAM 紧密集成。
允许或拒绝用户对特定资源的特定操作可以通过将正确的策略附加到所承担的角色来实现。
The ElasticBeanstalk docs 有一个特定部分解释 EB 中的 IAM 权限,页面上的最后一个示例实际上就是您要查找的内容。根据您的需要修改显示的策略,并将其附加到您希望拒绝访问生产环境的用户或用户组。
您的政策将如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:CreateApplication",
"elasticbeanstalk:DeleteApplication"
],
"Resource": [
"*"
]
},
{
"Effect": "Deny",
"Action": [
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:CreateConfigurationTemplate",
"elasticbeanstalk:CreateEnvironment",
"elasticbeanstalk:DeleteApplicationVersion",
"elasticbeanstalk:DeleteConfigurationTemplate",
"elasticbeanstalk:DeleteEnvironmentConfiguration",
"elasticbeanstalk:DescribeApplicationVersions",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:DescribeConfigurationSettings",
"elasticbeanstalk:DescribeEnvironmentResources",
"elasticbeanstalk:DescribeEnvironments",
"elasticbeanstalk:DescribeEvents",
"elasticbeanstalk:DeleteEnvironmentConfiguration",
"elasticbeanstalk:RebuildEnvironment",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RestartAppServer",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:SwapEnvironmentCNAMEs",
"elasticbeanstalk:TerminateEnvironment",
"elasticbeanstalk:UpdateApplicationVersion",
"elasticbeanstalk:UpdateConfigurationTemplate",
"elasticbeanstalk:UpdateEnvironment",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Resource": [
"arn:aws:elasticbeanstalk:us-east-1:123456789012:environment/Test/Test-env-prod"
]
}
]
}
上述政策将阻止任何附加此政策的用户创建或删除任何应用程序,并进一步拒绝用户完成对所列资源 ARN 的任何所列操作;名为Test 的应用程序和名为Test-env-prod 的环境。
要限制对特定环境的访问,您可以使用此策略并修改 ARN 的 region (us-east-1)、account-number (123456789012)、app-name(测试)和 environment-name(测试-env-prod),以满足您的特定需求。
您可以找到 ElasticBeanstalk 资源 ARN 格式列表here。
【讨论】: