Gerenciar políticas de usuário do Elastic Beanstalk - AWS Elastic Beanstalk

Gerenciar políticas de usuário do Elastic Beanstalk

O AWS Elastic Beanstalk tem duas políticas gerenciadas que permitem atribuir acesso total ou somente leitura a todos os recursos do Elastic Beanstalk. Você pode anexar as políticas a usuários ou grupos do AWS Identity and Access Management (IAM).

Políticas de usuário gerenciadas

  • AWSElasticBeanstalkFullAccess – permite que o usuário crie, modifique e exclua aplicativos, versões de aplicativo, definições de configuração, ambientes Elastic Beanstalk e os recursos subjacentes.

    { "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:AttachRolePolicy" ], "Resource": "*", "Condition": { "StringLike": { "iam:PolicyArn": [ "arn:aws:iam::aws:policy/AWSElasticBeanstalk*", "arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalk*" ] } } } ] }
  • AWSElasticBeanstalkReadOnlyAccess – permite que o usuário visualize aplicativos e ambientes, mas não que execute operações neles. Ele concede acesso somente leitura a todos os recursos do Elastic Beanstalk. Observe que o acesso somente leitura não permite ações como fazer download de logs do Elastic Beanstalk para que você possa lê-los. Isso ocorre porque os logs são preparados no bucket do Amazon S3, onde o Elastic Beanstalk exige permissão para gravação. Consulte o exemplo no fim deste tópico para obter informações sobre como habilitar o acesso aos logs do Elastic Beanstalk.

    { "Version": "2012-10-17", "Statement": [ { "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": "*" } ] }

Controlar o acesso com políticas gerenciadas

Você pode usar as políticas gerenciadas para conceder acesso total ou somente leitura ao Elastic Beanstalk. O Elastic Beanstalk atualiza essas políticas automaticamente quando outras permissões são necessárias para acessar novos recursos.

Para aplicar uma política gerenciada a grupos ou usuários do IAM

  1. Abra a página Policies (Políticas) no console do IAM.

  2. Na caixa de pesquisa, digite AWSElasticBeanstalk para filtrar as políticas.

  3. Na lista de políticas, marque a caixa de seleção ao lado de AWSElasticBeanstalkReadOnlyAccess ou AWSElasticBeanstalkFullAccess.

  4. Selecione Ações da política e escolha Anexar.

  5. Selecione um ou mais usuários e grupos aos quais associar a política. Você pode usar o menu Filtro e a caixa de pesquisa para filtrar a lista de entidades principais.

  6. Escolha Anexar política.

Criar uma política de usuário personalizada

Você pode criar sua própria política do IAM para permitir ou negar ações de API do Elastic Beanstalk em recursos específicos do Elastic Beanstalk. Para obter mais informações sobre como anexar uma política a um usuário ou grupo, consulte Como trabalhar com políticas em Uso do AWS Identity and Access Management.

nota

Embora você possa restringir como um usuário interage com as APIs do Elastic Beanstalk, atualmente não existe uma forma eficiente para impedir que os usuários com permissão para criar os recursos subjacentes necessários criem outros recursos no Amazon EC2 e em outros serviços.

Considere essas políticas como uma forma eficiente para distribuir as responsabilidades do Elastic Beanstalk, e não como uma maneira de proteger todos os recursos subjacentes.

Em novembro de 2019, o Elastic Beanstalk lançou o suporte para modelos de lançamento do Amazon EC2. Este é um novo tipo de recurso que o grupo do Auto Scaling do ambiente pode usar para executar instâncias do Amazon EC2, e ele requer novas permissões. A maioria dos clientes não deve ser afetada, pois os ambientes ainda podem usar o recurso legado e as configurações de execução, se sua política de usuário não tiver as permissões necessárias. No entanto, se você estiver tentando usar um novo recurso que requer modelos de execução do Amazon EC2 e tiver uma política personalizada, a criação ou atualização do ambiente poderá falhar. Nesse caso, verifique se sua política personalizada tem as seguintes permissões.

Permissões necessárias para modelos de execução do Amazon EC2

  • EC2:CreateLauchTemplate

  • EC2:CreateLauchTemplateVersions

  • EC2:DeleteLaunchTemplate

  • EC2:DeleteLaunchTemplateVersions

  • EC2:DescribeLaunchTemplate

  • EC2:DescribeLaunchTemplateVersions

Uma política do IAM contém declarações que descrevem as permissões que você deseja conceder. Quando você cria uma declaração de política para o Elastic Beanstalk, precisa entender como usar suas quatro partes a seguir:

  • Efeito especifica se é para permitir ou negar as ações na declaração.

  • Ação especifica as operações da API que você deseja controlar. Por exemplo, use elasticbeanstalk:CreateEnvironment para especificar a operação CreateEnvironment. Algumas operações, como criação de ambiente, exigem permissões adicionais para executar essas ações. Para obter mais informações, consulte Recursos e condições para ações do Elastic Beanstalk.

    nota

    Para usar a operação de API do UpdateTagsForResource, especifique uma das duas seguintes ações virtuais (ou ambas) em vez do nome de operação da API:

    elasticbeanstalk:AddTags

    Controla a permissão para chamar UpdateTagsForResource e passar uma lista de tags a serem adicionadas ao parâmetro TagsToAdd.

    elasticbeanstalk:RemoveTags

    Controla a permissão para chamar UpdateTagsForResource e passar uma lista de chaves de tags a serem removidas do parâmetro TagsToRemove.

  • Recurso especifica os recursos aos quais você deseja controlar o acesso. Para especificar recursos do Elastic Beanstalk, relacione o Nome de recurso da Amazon (ARN) de cada recurso.

  • (opcional) Condição especifica restrições sobre a permissão concedida na declaração. Para obter mais informações, consulte Recursos e condições para ações do Elastic Beanstalk.

As seções a seguir demonstram alguns casos em que você pode considerar uma política de usuário personalizada.

Habilitar a criação de um ambiente limitado do Elastic Beanstalk

A política no exemplo a seguir permite que um usuário chame a ação CreateEnvironment para criar um ambiente cujo nome começa com Test com o aplicativo especificado e a versão do aplicativo.

{ "Version": "2012-10-17", "Statement": [ { "Sid":"CreateEnvironmentPerm", "Action": [ "elasticbeanstalk:CreateEnvironment" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My First Elastic Beanstalk Application/Test*" ], "Condition": { "StringEquals": { "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My First Elastic Beanstalk Application"], "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My First Elastic Beanstalk Application/First Release"] } } }, { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

A política acima mostra como conceder acesso limitado às operações do Elastic Beanstalk. Para iniciar um ambiente efetivamente, o usuário deve ter permissão para criar os recursos da AWS que também potencializam o ambiente. Por exemplo, a seguinte política concede acesso ao conjunto padrão de recursos para um ambiente de servidor Web:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "ecs:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "cloudformation:*", "sqs:*" ], "Resource": "*" } ] }

Habilitar o acesso aos logs do Elastic Beanstalk armazenados no Amazon S3

A política no exemplo a seguir permite que um usuário extraia logs do Elastic Beanstalk, compile-os no Amazon S3 e recupere-os.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:DeleteObject", "s3:GetObjectAcl", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::elasticbeanstalk-*" } ] }
nota

Para restringir essas permissões a somente caminho de logs, use o seguinte formato de recursos.

"arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/resources/environments/logs/*"

Habilitar o gerenciamento de um aplicativo específico do Elastic Beanstalk

A política no exemplo a seguir permite que um usuário gerencie ambientes e outros recursos dentro de um aplicativo específico do Elastic Beanstalk. A política nega ações do Elastic Beanstalk em recursos de outros aplicativos e também a criação e exclusão de aplicativos do Elastic Beanstalk.

nota

A política não nega acesso a nenhum recurso por meio de outros serviços. Ela se revela uma forma eficiente para distribuir responsabilidades para gerenciar aplicativos do Elastic Beanstalk entre diferentes usuários, e não para proteger os recursos subjacentes.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "elasticbeanstalk:CreateApplication", "elasticbeanstalk:DeleteApplication" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": [ "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:CreateConfigurationTemplate", "elasticbeanstalk:CreateEnvironment", "elasticbeanstalk:DeleteApplicationVersion", "elasticbeanstalk:DeleteConfigurationTemplate", "elasticbeanstalk:DeleteEnvironmentConfiguration", "elasticbeanstalk:DescribeApplicationVersions", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:DescribeConfigurationSettings", "elasticbeanstalk:DescribeEnvironmentResources", "elasticbeanstalk:DescribeEnvironments", "elasticbeanstalk:DescribeEvents", "elasticbeanstalk:DeleteEnvironmentConfiguration", "elasticbeanstalk:RebuildEnvironment", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RestartAppServer", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:SwapEnvironmentCNAMEs", "elasticbeanstalk:TerminateEnvironment", "elasticbeanstalk:UpdateApplicationVersion", "elasticbeanstalk:UpdateConfigurationTemplate", "elasticbeanstalk:UpdateEnvironment", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:ValidateConfigurationSettings" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "elasticbeanstalk:InApplication": [ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/myapplication" ] } } } ] }