2015-10-09 11 views
7

Ho cercato di capire quali autorizzazioni devo impostare per consentire a uno sviluppatore di eseguire la distribuzione, i registri eb e ssh su un particolare ambiente EB. Voglio impostarlo in modo che tutti gli sviluppatori possano eseguire il deploy e il debug sul nostro ambiente di sviluppo, ma solo uno può eseguire il deploy e il debug master.Elean Beanstalk Autorizzazioni dello sviluppatore IAM

Voglio anche che sia bloccato in modo che non possano influenzare altre istanze EC2, istanze RDS, bucket S3, Load Balancer e così via.

Qualcuno è riuscito a mettere insieme una politica IAM (o due ...) per questo?

risposta

7

Elastic Beanstalk compone molti servizi AWS. È necessario dare tutto di permessi speciali alle risorse AWS quelli sono utilizzati da Elastic Beanstalk per leggere e aggiornare l'ambiente, tra cui:

  • CloudFormation
  • EC2
  • Auto Scaling Gruppo
  • Elastic Load Balancer
  • CloudWatch
  • S3
  • SNS
  • RDS
  • SQS
  • Elastic Beanstalk

Questo è tutto politica necessaria per consentire IAM accesso utente, aggiornamento, distribuire e ssh per Elastic 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": [ 
     "*" 
     ] 
    } 
    ] 
} 

Questa politica è consentire agli utenti IAM a di sola lettura e distribuire solo accesso a qualsiasi fagiolo magico elastico e servizi correlati.

Se si desidera limitare l'accesso degli utenti a determinate risorse AWS, è necessario specificare l'ARN e le condizioni da soli. Ad esempio:

  • Limitare le risorse S3 a qualcosa come arn:aws:s3:::elasticbeanstalk-us-east-1-123456789012/* (Secchio S3 di fagiolo magico elastico).
  • EC2 con tag di risorsa come condizionale (come: elasticbeanstalk:environment-name).
  • È anche possibile specificare la regione AWS su ARN.
+0

Grazie. Sono riuscito a capirlo con diverse applicazioni. Vale la metà dei miei punti per la taglia! – Gustaf

0

Ecco come è possibile utilizzarlo. Questo non era perfetto, ma hai qualche idea su come puoi usarlo. Ovviamente c'è di più per restringere questo, ma questo per me è abbastanza al momento.

La prima sezione non può fare davvero male con così ho lasciato loro avere accesso completo a loro per ora. (Dovrei fare S3 più granulare)

Avevo bisogno di bilanciamento del carico elastico: DeregisterInstancesFromLoadBalancer così ho aggiunto così questa squadra può usarlo solo nella regione Europa. Per ora va bene perché sono lì solo.

La terza e la quarta sezione sono per le mie due app Elastic Beanstalk a cui dovrebbero accedere.

{ 
    "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" 
        ] 
       } 
      } 
     } 
    ] 
} 
Problemi correlati