2015-10-09 26 views
7

Tôi đã cố gắng tìm ra những quyền nào cần thiết để cho phép nhà phát triển triển khai eb, nhật ký eb và eb ssh trên một môi trường EB cụ thể. Tôi muốn thiết lập nó để tất cả các nhà phát triển có thể triển khai và gỡ lỗi trên môi trường phát triển của chúng ta, nhưng chỉ có một người mới có thể triển khai và gỡ lỗi chủ.Quyền hạn của nhà phát triển cây đậu IAM

Tôi cũng muốn nó bị khóa để chúng không thể ảnh hưởng đến bất kỳ trường hợp EC2 nào khác, RDS-instances, S3-buckets, Load Balancers và vân vân.

Có ai quản lý để đặt cùng một chính sách IAM (hoặc hai ...) cho điều này không?

Trả lời

7

Cây đậu mềm tạo thành nhiều dịch vụ AWS. Bạn cần phải cung cấp tất cả các phép cụ thể các nguồn lực AWS những được sử dụng bởi Elastic Beanstalk để đọc và nâng cấp môi trường, bao gồm:

  • CloudFormation
  • EC2
  • Auto Scaling Nhóm
  • đàn hồi cân bằng tải
  • CloudWatch
  • S3
  • SNS
  • RDS
  • SQS
  • đàn hồi Beanstalk

Đây là tất cả các chính sách cần thiết để cho phép IAM người dùng truy cập, cập nhật, triển khai và ssh để đàn hồi Beanstalk:

{ 
    "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": [ 
     "*" 
     ] 
    } 
    ] 
} 

Chính sách trên là cho phép người dùng IAM đến chỉ đọcchỉ triển khai quyền truy cập vào bất kỳ Cây đậu phụ và dịch vụ liên quan nào.

Nếu bạn muốn hạn chế quyền truy cập người dùng vào tài nguyên AWS cụ thể, bạn cần chỉ định ARN và các điều kiện theo chính mình. Ví dụ:

  • Hạn chế tài nguyên S3 thành một cái gì đó như arn:aws:s3:::elasticbeanstalk-us-east-1-123456789012/* (Thùng S3 của cây đậu đàn hồi).
  • EC2 với Thẻ tài nguyên là có điều kiện (như: elasticbeanstalk:environment-name).
  • Bạn cũng có thể chỉ định khu vực AWS trên ARN.
+0

Cảm ơn. tôi đã tìm ra các ứng dụng khác nhau. Cũng có giá trị một nửa số điểm của tôi cho tiền thưởng! – Gustaf

0

Đây là cách bạn có thể sử dụng. Điều này là không hoàn hảo, nhưng bạn có một số ý tưởng về cách bạn có thể sử dụng nó. Rõ ràng là có nhiều điều để thu hẹp, nhưng điều này là đủ cho tôi vào lúc này.

Phần đầu tiên họ thực sự không thể gây hại gì cho nên tôi cho phép họ có toàn quyền truy cập vào chúng ngay bây giờ. (Tôi nên làm S3 chi tiết hơn)

Tôi cần cân bằng tải về đàn hồi: DeregisterInstancesFromLoadBalancer vì vậy tôi đã thêm để nhóm này chỉ có thể sử dụng ở khu vực Châu Âu. Đó là tốt cho bây giờ khi họ chỉ có ở đó.

Phần thứ ba và thứ tư là dành cho hai ứng dụng Beanstalk Đàn hồi của họ mà họ phải có quyền truy cập.

{ 
    "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" 
        ] 
       } 
      } 
     } 
    ] 
} 
Các vấn đề liên quan