0

Я не могу понять, как позволить другим людям в моей компании развернуть сервер (тестовый) с помощью AWS Elastic Beanstalk.Эластичный бобовый шток: разрешить пользователю развертывание

Эта страница предлагает только глобальный контроль над разрешением ELB: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.managed-policies.html

+0

вы хотите, чтобы ограничить его конкретные приложения Beanstalk? – Shibashis

+0

Да, для конкретного приложения и конкретной среды. Не удается найти, как это сделать. –

+1

Кто-то, кажется, поделился ею уже с github. https://gist.github.com/magnetikonline/5034bdbb049181a96ac9 – Shibashis

ответ

0

В блоге пост Rhys Годфри под названием Using IAM to secure Elastic Beanstalk Applications on AWS имеет хорошие рекомендации.

У нас есть приложение для эластичного бобового стежка и группа пользователей. Эта группа пользователей должна иметь возможность отслеживать и развертывать только среду экстенсивного beanstalk , а также перезапускать или завершать экземпляр приложения . Они не должны изменять конфигурацию приложения или окружения или удалять среду. Пользователь не должен иметь возможность воздействовать на другие приложения или службы AWS , но для них приемлемо видеть детали в других областях. Мы предполагаем, что пользователь будет использовать консоль AWS.

Я переустановил политику IAM здесь для справки.

Приятная вещь в его подходе состоит в том, что он рассматривает среду приложения, ссылаясь на тег EC2 на экземплярах EG Environment=testing, которые вам требуются в вашем случае использования.

{ 
    "Version":"2012-10-17", 
    "Statement":[ 
     { 
     "Sid":"ElasticBeanstalkEnvironmentPermissions", 
     "Effect":"Allow", 
     "Action":[ 
      "elasticbeanstalk:DescribeEnvironmentResources", 
      "elasticbeanstalk:DescribeEnvironments", 
      "elasticbeanstalk:DescribeEvents", 
      "elasticbeanstalk:RestartAppServer", 
      "elasticbeanstalk:RetrieveEnvironmentInfo", 
      "elasticbeanstalk:SwapEnvironmentCNAMEs", 
      "elasticbeanstalk:UpdateEnvironment", 
      "elasticbeanstalk:RequestEnvironmentInfo" 
     ], 
     "Resource":[ 
      "arn:aws:elasticbeanstalk:eu-west-1:123xxxxxxxxx:environment/ApplicationName/*" 
     ] 
     }, 
     { 
     "Sid":"ElasticBeanstalkGlobalPermissions", 
     "Effect":"Allow", 
     "Action":[ 
      "elasticbeanstalk:DescribeConfigurationOptions", 
      "elasticbeanstalk:DescribeConfigurationSettings", 
      "elasticbeanstalk:ListAvailableSolutionStacks", 
      "elasticbeanstalk:ValidateConfigurationSettings", 
      "elasticbeanstalk:CheckDNSAvailability", 
      "elasticbeanstalk:CreateStorageLocation" 
     ], 
     "Resource":[ 
      "*" 
     ] 
     }, 
     { 
     "Sid":"ElasticBeanstalkApplicationVersionPermissions", 
     "Effect":"Allow", 
     "Action":[ 
      "elasticbeanstalk:CreateApplicationVersion", 
      "elasticbeanstalk:DescribeApplicationVersions", 
      "elasticbeanstalk:UpdateApplicationVersion" 
     ], 
     "Resource":[ 
      "arn:aws:elasticbeanstalk:eu-west-1:123xxxxxxxxx:applicationversion/ApplicationName/*" 
     ] 
     }, 
     { 
     "Sid":"ElasticBeanstalkApplicationPermissions", 
     "Effect":"Allow", 
     "Action":[ 
      "elasticbeanstalk:DescribeApplications", 
      "elasticbeanstalk:UpdateApplication" 
     ], 
     "Resource":[ 
      "arn:aws:elasticbeanstalk:eu-west-1:123xxxxxxxxx:application/ApplicationName" 
     ] 
     }, 
     { 
     "Sid":"Autoscaling", 
     "Effect":"Allow", 
     "Action":[ 
      "autoscaling:SuspendProcesses", 
      "autoscaling:Describe*", 
      "autoscaling:ResumeProcesses" 
     ], 
     "Resource":"*" 
     }, 
     { 
     "Sid":"Cloudwatch", 
     "Effect":"Allow", 
     "Action":[ 
      "cloudwatch:Describe*", 
      "cloudwatch:GetMetricStatistics", 
      "cloudwatch:ListMetrics" 
     ], 
     "Resource":"*" 
     }, 
     { 
     "Sid":"Cloudformation", 
     "Effect":"Allow", 
     "Action":[ 
      "cloudformation:GetTemplate", 
      "cloudformation:Describe*" 
     ], 
     "Resource":"*" 
     }, 
     { 
     "Sid":"IAM", 
     "Effect":"Allow", 
     "Action":[ 
      "iam:ListServerCertificates", 
      "iam:ListInstanceProfiles" 
     ], 
     "Resource":"*" 
     }, 
     { 
     "Sid":"S3ElasticBeanstalkBucket", 
     "Action":[ 
      "s3:AbortMultipartUpload", 
      "s3:GetBucketAcl", 
      "s3:GetBucketCORS", 
      "s3:GetBucketLocation", 
      "s3:GetBucketLogging", 
      "s3:GetBucketNotification", 
      "s3:GetBucketPolicy", 
      "s3:GetBucketRequestPayment", 
      "s3:GetBucketTagging", 
      "s3:GetBucketVersioning", 
      "s3:GetBucketWebsite", 
      "s3:GetLifecycleConfiguration", 
      "s3:GetObject", 
      "s3:GetObjectAcl", 
      "s3:GetObjectTorrent", 
      "s3:GetObjectVersion", 
      "s3:GetObjectVersionAcl", 
      "s3:GetObjectVersionTorrent", 
      "s3:PutObject", 
      "s3:PutObjectAcl", 
      "s3:ListBucket", 
      "s3:GetObject", 
      "s3:DeleteObject" 
     ], 
     "Effect":"Allow", 
     "Resource":[ 
      "arn:aws:s3:::elasticbeanstalk-eu-west-1-123xxxxxxxxx", 
      "arn:aws:s3:::elasticbeanstalk-eu-west-1-123xxxxxxxxx/*" 
     ] 
     }, 
     { 
     "Sid":"S3Global", 
     "Effect":"Allow", 
     "Action":"s3:ListAllMyBuckets", 
     "Resource":"arn:aws:s3:::*" 
     }, 
     { 
     "Sid":"S3ElasticBeanstalkShared", 
     "Effect":"Allow", 
     "Action":"s3:*", 
     "Resource":[ 
      "arn:aws:s3:::elasticbeanstalk-env-resources-eu-west-1", 
      "arn:aws:s3:::elasticbeanstalk-env-resources-eu-west-1/*" 
     ] 
     }, 
     { 
     "Sid":"EC2Global", 
     "Effect":"Allow", 
     "Action":[ 
      "ec2:Describe*" 
     ], 
     "Resource":[ 
      "*" 
     ] 
     } 
    ] 
} 

Второй IAM политика обрабатывает экземпляры EC2 для данной среды:

{ 
    "Version":"2012-10-17", 
    "Statement":[ 
     { 
     "Sid":"EC2EnvironmentInstances", 
     "Effect":"Allow", 
     "Action":[ 
      "ec2:MonitorInstances", 
      "ec2:UnmonitorInstances", 
      "ec2:RebootInstances", 
      "ec2:StopInstances" 
     ], 
     "Resource":[ 
      "arn:aws:ec2:eu-west-1:123xxxxxxxxx:instance/*" 
     ], 
     "Condition":{ 
      "StringEquals":{ 
       "ec2:ResourceTag/elasticbeanstalk:environment-name":"EnvironmentName" 
      } 
     } 
     } 
    ] 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^