2015-10-09 21 views
7

私は、特定のEB環境で開発者がebデプロイメント、ebログ、eb sshを実行できるようにするために必要な権限を把握しようとしています。すべての開発者が開発環境でデプロイとデバッグを行うことができるように設定したいが、デプロイとデバッグのマスターは1つしか実行できないようにする。Elastic Beanstalk IAM開発者のアクセス許可

他のEC2インスタンス、RDSインスタンス、S3バケット、ロードバランサなどに影響を与えないように、ロックダウンする必要があります。

これについて誰かがIAMポリシー(または2つ...)をまとめて管理していますか?

答えて

7

Elastic Beanstalkは、多くのAWSサービスを構成します。

  • CloudFormation
  • EC2
  • 自動スケーリンググループ
  • 弾性Load Balancerの
  • :あなたは含めて、環境を読んで、更新するElastic Beanstalkでで使用されているものをAWSリソースへのすべての特定の権限を与える必要があり
  • CloudWatchの
  • S3
  • SNS
  • RDS
  • SQS
  • Elastic Beanstalkで

これは、Elastic BeanstalkでのIAMユーザーのアクセス、更新、展開、およびSSHを許可するすべての必要な政策である:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "ElasticBeanstalkReadOnlyAccess", 
     "Effect": "Allow", 
     "Action": [ 
     "elasticbeanstalk:Check*", 
     "elasticbeanstalk:Describe*", 
     "elasticbeanstalk:List*", 
     "elasticbeanstalk:RequestEnvironmentInfo", 
     "elasticbeanstalk:RetrieveEnvironmentInfo", 
     "ec2:Describe*", 
     "elasticloadbalancing:Describe*", 
     "autoscaling:Describe*", 
     "cloudwatch:Describe*", 
     "cloudwatch:List*", 
     "cloudwatch:Get*", 
     "s3:Get*", 
     "s3:List*", 
     "sns:Get*", 
     "sns:List*", 
     "cloudformation:Describe*", 
     "cloudformation:Get*", 
     "cloudformation:List*", 
     "cloudformation:Validate*", 
     "cloudformation:Estimate*", 
     "rds:Describe*", 
     "sqs:Get*", 
     "sqs:List*" 
     ], 
     "Resource": "*" 
    }, 
    { 
     "Sid": "ElasticBeanstalkDeployAccess", 
     "Effect": "Allow", 
     "Action": [ 
     "autoscaling:SuspendProcesses", 
     "autoscaling:ResumeProcesses", 
     "autoscaling:UpdateAutoScalingGroup", 
     "cloudformation:UpdateStack", 
     "ec2:AuthorizeSecurityGroupIngress", 
     "ec2:RevokeSecurityGroupIngress", 
     "elasticloadbalancing:RegisterInstancesWithLoadBalancer", 
     "elasticbeanstalk:CreateStorageLocation", 
     "elasticbeanstalk:CreateApplicationVersion", 
     "elasticbeanstalk:CreateConfigurationTemplate", 
     "elasticbeanstalk:UpdateApplicationVersion", 
     "elasticbeanstalk:UpdateConfigurationTemplate", 
     "elasticbeanstalk:UpdateEnvironment", 
     "elasticbeanstalk:ValidateConfigurationSettings", 
     "s3:PutObject", 
     "s3:DeleteObject", 
     "s3:PutObjectAcl" 
     ], 
     "Resource": [ 
     "*" 
     ] 
    } 
    ] 
} 

上記のポリシーは、IAMユーザーをできるようにすることです読み取り専用および展開専用すべてのElastic Beanstalkおよび関連サービスへのアクセス。

ユーザーに特定のAWSリソースへのアクセスを制限する場合は、ARNと条件を自分で指定する必要があります。たとえば、

  • S3リソースをarn:aws:s3:::elasticbeanstalk-us-east-1-123456789012/*(Elastic BeanstalkのS3バケット)に制限します。
  • リソースタグが条件付きのEC2(例:elasticbeanstalk:environment-name)。
  • ARNでAWS領域を指定することもできます。
+0

ありがとうございました。私は別のアプリケーションでそれを把握することができました。恩恵のために私のポイントの半分の価値があります! – Gustaf

0

使用方法は次のとおりです。これは完璧ではありませんでしたが、あなたはそれをどのように使うことができるかについてのいくつかのアイデアがあります。明らかにこれを絞り込む方がはるかに多いですが、これは私にとって現時点では十分です。

最初のセクションでは本当に害を及ぼすことはできませんので、今すぐ完全にアクセスできるようにしてください。 (S3をより細かくする必要があります)

私はelasticloadbalancingが必要でした:DeregisterInstancesFromLoadBalancerので、このチームはヨーロッパ地域でしか使用できません。彼らはそこにいるので、これは今は大丈夫です。

3番目と4番目のセクションは、私がアクセスしなければならない2つのElastic Beanstalkアプリ用です。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:Describe*", 
       "elasticloadbalancing:Describe*", 
       "autoscaling:Describe*", 
       "cloudwatch:Describe*", 
       "cloudwatch:List*", 
       "cloudwatch:Get*", 
       "s3:Get*", 
       "s3:List*", 
       "sns:Get*", 
       "sns:List*", 
       "cloudformation:Describe*", 
       "cloudformation:Get*", 
       "cloudformation:List*", 
       "cloudformation:Validate*", 
       "cloudformation:Estimate*", 
       "rds:Describe*", 
       "elasticbeanstalk:CreateStorageLocation", 
       "sqs:Get*", 
       "sqs:List*", 
       "autoscaling:SuspendProcesses", 
       "autoscaling:ResumeProcesses", 
       "autoscaling:UpdateAutoScalingGroup", 
       "autoscaling:DescribeAutoScalingGroups", 
       "cloudformation:UpdateStack", 
       "cloudformation:DescribeStacks", 
       "ec2:AuthorizeSecurityGroupIngress", 
       "ec2:RevokeSecurityGroupIngress", 
       "s3:PutObject", 
       "s3:DeleteObject", 
       "s3:PutObjectAcl" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "elasticloadbalancing:RegisterInstancesWithLoadBalancer", 
       "elasticloadbalancing:DeregisterInstancesFromLoadBalancer" 
      ], 
      "Resource": [ 
       "arn:aws:elasticloadbalancing:eu-west-1:12345678910:loadbalancer/*" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "elasticbeanstalk:Check*", 
       "elasticbeanstalk:Describe*", 
       "elasticbeanstalk:List*", 
       "elasticbeanstalk:RequestEnvironmentInfo", 
       "elasticbeanstalk:RetrieveEnvironmentInfo", 
       "elasticbeanstalk:CreateApplicationVersion", 
       "elasticbeanstalk:CreateConfigurationTemplate", 
       "elasticbeanstalk:UpdateApplicationVersion", 
       "elasticbeanstalk:UpdateConfigurationTemplate", 
       "elasticbeanstalk:UpdateEnvironment", 
       "elasticbeanstalk:DescribeEnvironmentResources", 
       "elasticbeanstalk:ValidateConfigurationSettings" 
      ], 
      "Resource": [ 
       "*" 
      ], 
      "Condition": { 
       "StringEquals": { 
        "elasticbeanstalk:InApplication": [ 
         "arn:aws:elasticbeanstalk:eu-west-1:12345678910:application/My App" 
        ] 
       } 
      } 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "elasticbeanstalk:Check*", 
       "elasticbeanstalk:Describe*", 
       "elasticbeanstalk:List*", 
       "elasticbeanstalk:RequestEnvironmentInfo", 
       "elasticbeanstalk:RetrieveEnvironmentInfo", 
       "elasticbeanstalk:CreateApplicationVersion", 
       "elasticbeanstalk:CreateConfigurationTemplate", 
       "elasticbeanstalk:UpdateApplicationVersion", 
       "elasticbeanstalk:UpdateConfigurationTemplate", 
       "elasticbeanstalk:UpdateEnvironment", 
       "elasticbeanstalk:DescribeEnvironmentResources", 
       "elasticbeanstalk:ValidateConfigurationSettings" 
      ], 
      "Resource": [ 
       "*" 
      ], 
      "Condition": { 
       "StringEquals": { 
        "elasticbeanstalk:InApplication": [ 
         "arn:aws:elasticbeanstalk:eu-west-1:12345678910:application/My Second App" 
        ] 
       } 
      } 
     } 
    ] 
} 
関連する問題