Como faço para restringir as permissões do IAM de um usuário do Elastic Beanstalk a aplicativos específicos?

3 minuto de leitura
0

Quero restringir as permissões do AWS Identity and Access Management (IAM) de um usuário do AWS Elastic Beanstalk a aplicativos específicos.

Breve descrição

Use uma política do IAM para restringir as permissões de um usuário do Elastic Beanstalk. O usuário do Elastic Beanstalk pode ser um usuário ou função do IAM. A política pode restringir o acesso a um aplicativo ou mais aplicativos específicos.

Resolução

1.    Crie uma política do IAM que restrinja o acesso ao seu aplicativo Elastic Beanstalk. Use a seguinte política do IAM como modelo.

2.    Anexe sua política do IAM ao usuário ou função do IAM ao qual você deseja restringir o acesso somente a um aplicativo ou aplicativos específicos.

Se você usa um serviço que se integra ao Elastic Beanstalk, como o Amazon Simple Storage Service (Amazon S3), permita maior acesso com restrições mínimas. Isso ocorre pelos seguintes motivos:

  • No Elastic Beanstalk, você não pode restringir diretamente as permissões ao seu aplicativo porque a estrutura do aplicativo é uma coleção de componentes. Esses componentes são itens como ambientes, versões e configurações de ambiente. No entanto, você pode restringir as permissões com mais precisão usando ações, recursos e chaves de condição. Para obter uma lista das chaves de condição disponíveis que você pode usar para conceder acesso condicional de acordo com seu caso de uso, consulte Recursos e condições para ações do Elastic Beanstalk.
  • Uma política do IAM não é uma forma eficaz de proteger os recursos subjacentes. Por exemplo, você pode restringir a forma como os usuários interagem com as APIs do Elastic Beanstalk usando a política apropriada do IAM. No entanto, você não pode impedir que usuários com permissões do Elastic Beanstalk criem recursos em outros serviços da AWS que não estejam relacionados ao Elastic Beanstalk.
  • Alguns dos recursos com os quais o Elastic Beanstalk se integra não oferecem suporte a permissões em nível de recurso. Para obter mais informações, consulte os serviços da AWS que funcionam com o IAM.

O exemplo de política a seguir foi criado para conceder acesso total a dois aplicativos do Elastic Beanstalk, App1 e App2:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:UpdateApplicationVersion",
        "elasticbeanstalk:CreateApplicationVersion",
        "elasticbeanstalk:DeleteApplicationVersion"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:DescribeAccountAttributes",
        "elasticbeanstalk:AbortEnvironmentUpdate",
        "elasticbeanstalk:TerminateEnvironment",
        "rds:*",
        "elasticbeanstalk:ValidateConfigurationSettings",
        "elasticbeanstalk:CheckDNSAvailability",
        "autoscaling:*",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:DescribeInstancesHealth",
        "elasticbeanstalk:DescribeEnvironmentHealth",
        "sns:*",
        "elasticbeanstalk:RestartAppServer",
        "s3:*",
        "cloudformation:*",
        "elasticloadbalancing:*",
        "elasticbeanstalk:CreateStorageLocation",
        "elasticbeanstalk:DescribeEnvironmentManagedActions",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:DescribeConfigurationOptions",
        "elasticbeanstalk:ApplyEnvironmentManagedAction",
        "cloudwatch:*",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:List*",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:UpdateEnvironment",
        "ec2:*",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:DescribeConfigurationSettings",
        "sqs:*",
        "dynamodb:CreateTable",
        "dynamodb:DescribeTable"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:*"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-ec2-role",
        "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-service-role",
        "arn:aws:iam::123456789012:instance-profile/aws-elasticbeanstalk-ec2-role"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:DescribeEvents",
        "elasticbeanstalk:DescribeApplications",
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:ListPlatformVersions"
      ],
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1",
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:Describe*"
      ],
      "Resource": [
        "arn:aws:elasticbeanstalk:*::platform/*",
        "arn:aws:elasticbeanstalk:*:*:environment/*/*",
        "arn:aws:elasticbeanstalk:*:*:application/*",
        "arn:aws:elasticbeanstalk:*::solutionstack/*",
        "arn:aws:elasticbeanstalk:*:*:applicationversion/*/*",
        "arn:aws:elasticbeanstalk:*:*:configurationtemplate/*/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"
          ]
        }
      }
    }
  ]
}

Para mais casos de uso e exemplos, consulte Políticas de exemplo com base em permissões de recursos ou Políticas de exemplo com base em políticas gerenciadas.


AWS OFICIAL
AWS OFICIALAtualizada há 4 anos