Deprecated

Removed from AWS on 2021-04-20 - Active for 1 year, 9 months

AWSElasticBeanstalkFullAccess

Last Modified

Sep 16, 2019

September 16, 2019 at 03:19 PM UTC

Version

v8

Total Versions

7

Created

Jul 10, 2019

Actions

35

Risk

High

An unrestricted escalation path, identity administration, secret reads or the power to switch off security monitoring. Read from this policy document alone: trust policies, boundaries and SCPs in your account still decide what actually succeeds. How this is assessed

  • High

    Can change identities and their permissions

    Grants 1 permissions management action on IAM, IAM Identity Center or Organizations, on any resource with no condition.

    iam:passrole

    Use with caution: Grant it only to identity administrators, and protect your admin roles and SCPs with a permissions boundary or an SCP of their own.

  • High

    Can launch resources that run as a more privileged role

    Grants every action of 15 documented escalation paths on any resource with no condition.

    • cloudformation-001iam:PassRole + cloudformation:CreateStackunrestricted
    • cloudformation-003iam:PassRole + cloudformation:CreateStackSet + cloudformation:CreateStackInstancesunrestricted
    • cloudformation-004iam:PassRole + cloudformation:UpdateStackSetunrestricted
    • cloudformation-005cloudformation:CreateChangeSet + cloudformation:ExecuteChangeSetunrestricted
    • codebuild-001iam:PassRole + codebuild:CreateProject + codebuild:StartBuildunrestricted
    • ec2-001iam:PassRole + ec2:RunInstancesunrestricted
    • ec2-003iam:PassRole + ec2:RequestSpotInstancesunrestricted
    • ecs-001iam:PassRole + ecs:CreateCluster + ecs:RegisterTaskDefinition + ecs:CreateServiceunrestricted
    7 more paths
    • ecs-002iam:PassRole + ecs:CreateCluster + ecs:RegisterTaskDefinition + ecs:RunTaskunrestricted
    • ecs-003iam:PassRole + ecs:RegisterTaskDefinition + ecs:CreateServiceunrestricted
    • ecs-004iam:PassRole + ecs:RegisterTaskDefinition + ecs:RunTaskunrestricted
    • ecs-005iam:PassRole + ecs:RegisterTaskDefinition + ecs:StartTaskunrestricted
    • ecs-007iam:PassRole + ecs:StartTask + ecs:RegisterContainerInstanceunrestricted
    • ecs-008iam:PassRole + ecs:RunTaskunrestricted
    • ecs-009iam:PassRole + ecs:StartTaskunrestricted

    Use with caution: Make sure no highly privileged role trusts the service involved, and restrict iam:PassRole in your own policies or boundary to named roles with iam:PassedToService.

  • High

    Can take over existing resources that run as another role

    Grants every action of 6 documented escalation paths on any resource with no condition.

    • cloudformation-002cloudformation:UpdateStackunrestricted
    • codebuild-002codebuild:StartBuildunrestricted
    • ec2-002ec2:ModifyInstanceAttribute + ec2:StopInstances + ec2:StartInstancesunrestricted
    • ec2-004ec2:CreateLaunchTemplateVersion + ec2:ModifyLaunchTemplateunrestricted
    • ec2-005ec2:CreateLaunchTemplateVersion + ec2:ModifyLaunchTemplateunrestricted
    • ecs-006ecs:ExecuteCommand + ecs:DescribeTasksunrestricted

    Use with caution: List the roles attached to the functions, instances, pipelines or notebooks it can modify: the holder effectively has them too.

  • Medium

    Can grant itself more permissions

    Grants the actions of 1 documented escalation path, but only on named resources or under a condition. Review that scope before trusting it.

    • iam-009iam:AttachRolePolicyscoped
      • iam:AttachRolePolicy: condition iam:PolicyArn, on arn:aws:iam::*:role/aws-elasticbeanstalk*

    Use with caution: Check which roles, users or policies fall inside the scope shown above. Within it the escalation works as documented, so keep privileged principals out of it.

  • Medium

    Can switch off security monitoring

    Can delete VPC flow logs, delete CloudWatch log groups, which is how an intruder hides.

    ec2:DeleteFlowLogs (via ec2:*)logs:DeleteLogGroup (via logs:*)

    Use with caution: Deny these actions with an SCP for everyone outside a break-glass role, so no single policy can blind you.

  • Medium

    Can rewrite resource policies and sharing

    Grants 57 permissions management actions across 9 services (cloudformation, cloudwatch, dynamodb, ec2, ecr, logs, ...) on any resource, enough to share resources outside the account.

    cloudformation:setstackpolicycloudwatch:assumeaccessprofilecloudwatch:createaccessgrantcloudwatch:createaccessprofilecloudwatch:createdomainaccessgrantfororganizationcloudwatch:deleteaccessgrantcloudwatch:deleteaccessprofilecloudwatch:deletedomainaccessgrantfororganizationcloudwatch:updateaccessprofiledynamodb:deleteresourcepolicydynamodb:putresourcepolicyec2:createcoippoolpermissionand 45 more

    Use with caution: Turn on IAM Access Analyzer external access findings, and keep account-level guards like S3 Block Public Access enabled.

  • Medium

    Can read data in every bucket or table

    Reads any object in any S3 bucket; any DynamoDB table. Read-only is not the same as harmless when the data is the asset.

    s3:GetObject (via s3:*)dynamodb:Scan (via dynamodb:*)dynamodb:GetItem (via dynamodb:*)

    Use with caution: Read access to data is still access to data. For people who only need to see configuration, ViewOnlyAccess carries none of these signals.

  • Medium

    Full access to 14 services on every resource

    Uses autoscaling:*, cloudformation:*, cloudwatch:*, dynamodb:*, ec2:*, ecr:*, ecs:*, elasticbeanstalk:* and 6 more with Resource "*" and no condition, so every action AWS adds to those services later is granted too.

    autoscaling:*cloudformation:*cloudwatch:*dynamodb:*ec2:*ecr:*ecs:*elasticbeanstalk:*elasticloadbalancing:*logs:*rds:*s3:*sns:*sqs:*

    Use with caution: The grant grows every time the service does. For long-lived access, prefer a policy that lists the actions you actually need.

Policy Document

View on GitHub
{
  "PolicyVersion": {
    "Document": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "elasticbeanstalk:*",
            "ec2:*",
            "ecs:*",
            "ecr:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "s3:*",
            "sns:*",
            "cloudformation:*",
            "dynamodb:*",
            "rds:*",
            "sqs:*",
            "logs:*",
            "iam:GetPolicyVersion",
            "iam:GetRole",
            "iam:PassRole",
            "iam:ListRolePolicies",
            "iam:ListAttachedRolePolicies",
            "iam:ListInstanceProfiles",
            "iam:ListRoles",
            "iam:ListServerCertificates",
            "acm:DescribeCertificate",
            "acm:ListCertificates",
            "codebuild:CreateProject",
            "codebuild:DeleteProject",
            "codebuild:BatchGetBuilds",
            "codebuild:StartBuild"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:AddRoleToInstanceProfile",
            "iam:CreateInstanceProfile",
            "iam:CreateRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/aws-elasticbeanstalk*",
            "arn:aws:iam::*:instance-profile/aws-elasticbeanstalk*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceLinkedRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling*"
          ],
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "autoscaling.amazonaws.com"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceLinkedRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/AWSServiceRoleForElasticBeanstalk*"
          ],
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "elasticbeanstalk.amazonaws.com"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceLinkedRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing*"
          ],
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:AttachRolePolicy"
          ],
          "Resource": "arn:aws:iam::*:role/aws-elasticbeanstalk*",
          "Condition": {
            "StringLike": {
              "iam:PolicyArn": [
                "arn:aws:iam::aws:policy/AWSElasticBeanstalk*",
                "arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalk*"
              ]
            }
          }
        }
      ]
    },
    "VersionId": "v8",
    "IsDefaultVersion": true,
    "CreateDate": "2019-07-10T19:27:59Z"
  }
}

Version History (7 recorded)

Raw history

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Sep 16, 2019

49aa1d0

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Sep 16, 2019

71619cf

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Sep 16, 2019

8279033

`2019-08-29`

No recorded action delta - this version predates the change index. View the raw diff.

Aug 29, 2019

5016d52

I updated my CLI and it looks like it reordered everything and changed the white-space, so everything looks changed, but is not

No recorded action delta - this version predates the change index. View the raw diff.

Jul 12, 2019

9d2dff1

Update

No recorded action delta - this version predates the change index. View the raw diff.

Jul 10, 2019

cbd8612

First commit

No recorded action delta - this version predates the change index. View the raw diff.

Feb 10, 2019

ad4c2e8