0

私の会社の他の人がAWS Elastic Beanstalkを使用して(テスト)サーバーに展開できるようにする方法がわかりません。Elastic Beanstalk:ユーザーが展開できるようにする

このページではELBを超える唯一のグローバル許可制御を示唆:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.managed-policies.html

+0

を使用して、特定の豆の木の用途に制限したいですか? – Shibashis

+0

はい、特定のアプリケーションと特定の環境です。方法を見つけることができません。 –

+1

誰かが既にgithubでそれを共有したようです。 https://gist.github.com/magnetikonline/5034bdbb049181a96ac9 – Shibashis

答えて

0

Using IAM to secure Elastic Beanstalk Applications on AWS題しリス・ゴッドフリーのブログの記事は、いくつかの良い指針を持っています。

私たちはElastic Beanstalkアプリケーションとユーザーグループを持っています。この のユーザーグループは、その エラスティックbeanstalk環境だけを監視して展開することができ、 アプリケーションインスタンスを再起動または終了する必要があります。彼らは アプリケーションまたは環境の設定を変更したり、環境を削除したりすることはできません。 ユーザーは他のアプリケーションやAWS サービスに影響しないはずですが、他のアプリケーションの詳細を見ることはできます。 ユーザーがAWSコンソールを使用していると仮定します。

ここでは、参考としてIAMポリシーを再掲載しました。

彼のアプローチについての素敵な点は、ユースケースで必要なインスタンスEG Environment=testingのEC2タグを参照してアプリケーション環境を検討することです。

{ 
    "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" 
      } 
     } 
     } 
    ] 
} 
関連する問題