AWS Elastic Beanstalk
Guia do desenvolvedor

Políticas de exemplo baseadas em permissões de recursos

Esta seção apresenta um caso de uso para controlar permissões de usuário para as ações do Elastic Beanstalk que acessam os recursos específicos do Elastic Beanstalk. Apresentaremos as políticas de exemplo compatíveis com o caso de uso. Para obter mais informações sobre as políticas do Elastic Beanstalk, consulte Criação de uma política de usuário personalizada. Para obter informações sobre como anexar políticas para usuários e grupos, consulte Gerenciamento de políticas do IAM em Uso da identidade do AWS e Gerenciamento de acesso.

No nosso caso de uso, Exemplo Corp. é uma pequena empresa de consultoria que desenvolve aplicativos para dois clientes diferentes. John é o gerente de desenvolvimento que supervisiona o desenvolvimento dos dois aplicativos do Elastic Beanstalk, app1 e app2. John faz o desenvolvimento e alguns testes nos dois aplicativos, e apenas ele pode atualizar o ambiente de produção dos dois aplicativos. Estas são as permissões de que ele precisa para o app1 e o app2:

  • Visualização do aplicativo, versões de aplicativos, ambientes e modelos de configuração

  • Criação das versões do aplicativo e implantação no ambiente de preparação

  • Atualização do ambiente de produção

  • Criação e encerramento de ambientes

Jill é uma testadora que precisa de acesso para visualizar os seguintes recursos a fim de monitorar e testar os dois aplicativos: aplicativos, versões de aplicativos, ambientes e modelos de configuração. Mas ela não deve ser capaz de fazer alterações em nenhum dos recursos do Elastic Beanstalk.

Jack é o desenvolvedor do app1 que precisa de acesso para visualizar todos os recursos do app1 e também precisa criar versões de aplicativos para o app1 e implantá-las no ambiente de preparação.

Joe é o administrador da conta da AWS para a Exemplo Corp. Ele criou usuários do IAM para John, Jill e Jack e anexa as seguintes políticas para esses usuários concederem as permissões apropriadas para os aplicativos app1 e app2.

exemplo 1: As políticas que permitem que John execute o desenvolvimento, teste e ações de implantação dele no app1 e no app2

Dividimos a política de John em três separadas para facilitar a leitura e o gerenciamento. Juntas, elas oferecem a John as permissões de que precisa para executar as ações do Elastic Beanstalk nos dois aplicativos.

A primeira política especifica ações para Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS e AWS CloudFormation. Elastic Beanstalk depende desses serviços adicionais para provisionar recursos subjacentes ao criar um ambiente.

Observe que esta política é um exemplo. Ela fornece um amplo conjunto de permissões para produtos da AWS que o Elastic Beanstalk usa para gerenciar aplicativos e ambientes. Por exemplo, ec2:* permite que um usuário do IAM realize qualquer ação em qualquer recurso do Amazon EC2 na conta da AWS. Essas permissões não estão limitadas aos recursos que você usa com o Elastic Beanstalk. Como uma das melhores práticas, você deve conceder a indivíduos apenas as permissões de que precisam para executar suas tarefas.

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

A segunda política especifica as ações do Elastic Beanstalk que John tem permissão para executar nos recursos do app1 e do app2. A instrução AllCallsInApplications permite que todas as ações do Elastic Beanstalk ("elasticbeanstalk:*") sejam realizadas em todos os recursos no app1 e no app2 (por exemplo, elasticbeanstalk:CreateEnvironment). A instrução AllCallsOnApplications permite todas as ações do Elastic Beanstalk ("elasticbeanstalk:*") nos recursos de aplicativos do app1 e do app2 (por exemplo, elasticbeanstalk:DescribeApplications, elasticbeanstalk:UpdateApplication, etc.). A instrução AllCallsOnSolutionStacks permite todas as ações do Elastic Beanstalk ("elasticbeanstalk:*") para os recursos de pilha de solução (por exemplo, elasticbeanstalk:ListAvailableSolutionStacks).

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllCallsInApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllCallsOnApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

A terceira política especifica as ações do Elastic Beanstalk para as quais a segunda política precisa de permissões para concluir aquelas ações do Elastic Beanstalk. A instrução AllNonResourceCalls permite a ação elasticbeanstalk:CheckDNSAvailability, que é necessária para chamar elasticbeanstalk:CreateEnvironment e outras ações. Ela também permite a ação elasticbeanstalk:CreateStorageLocation, que é necessária para elasticbeanstalk:CreateApplication, elasticbeanstalk:CreateEnvironment e outras ações.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

exemplo 2: As políticas que permitem que Jill teste e monitore o app1 e o app2

Dividimos a política de Jill em três separadas para facilitar a leitura e o gerenciamento. Juntas, elas oferecem a Jill as permissões de que precisa para executar as ações do Elastic Beanstalk nos dois aplicativos.

A primeira política especifica as ações Describe*, List* e Get* no Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS e AWS CloudFormation (para tipos de contêiner não herdados) para que as ações do Elastic Beanstalk sejam capazes de recuperar as informações relevantes sobre os recursos subjacentes dos aplicativos app1 e app2.

{ "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*", "rds:Describe*", "cloudformation:Describe*", "cloudformation:Get*", "cloudformation:List*", "cloudformation:Validate*", "cloudformation:Estimate*" ], "Resource":"*" } ] }

A segunda política especifica as ações do Elastic Beanstalk que Jill tem permissão para executar nos recursos do app1 e do app2. A instrução AllReadCallsInApplications permite que ela chame as ações Describe* e as ações de informações do ambiente. A instrução AllReadCallsOnApplications permite que ela chame as ações DescribeApplications and DescribeEvents nos recursos de aplicativos do app1 e do app2. A instrução AllReadCallsOnSolutionStacks permite visualizar as ações que envolvem recursos de pilha de soluções (ListAvailableSolutionStacks, DescribeConfigurationOptions e ValidateConfigurationSettings).

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllReadCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

A terceira política especifica as ações do Elastic Beanstalk para as quais a segunda política precisa de permissões para concluir aquelas ações do Elastic Beanstalk. A instrução AllNonResourceCalls permite a ação elasticbeanstalk:CheckDNSAvailability, que é necessária para chamar ações de visualização.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

exemplo 3: Políticas que permitem que Jack acesse o app1 para testar, monitorar, criar versões de aplicativos e implantar o ambiente de preparação

Dividimos a política de Jack em três separadas para facilitar a leitura e o gerenciamento. Juntas, elas oferecem a Jack as permissões de que precisa para executar as ações do Elastic Beanstalk no recurso do app1.

A primeira política especifica as ações no Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS e AWS CloudFormation (para tipos de contêiner não herdados) para que as ações do Elastic Beanstalk sejam capazes de visualizar e trabalhar com os recursos subjacentes do aplicativo app1. Para obter uma lista de tipos de contêiner não herdados compatíveis, consulte Por que alguns tipos de contêiner são marcados como herdados?.

Observe que esta política é um exemplo. Ela fornece um amplo conjunto de permissões para produtos da AWS que o Elastic Beanstalk usa para gerenciar aplicativos e ambientes. Por exemplo, ec2:* permite que um usuário do IAM realize qualquer ação em qualquer recurso do Amazon EC2 na conta da AWS. Essas permissões não estão limitadas aos recursos que você usa com o Elastic Beanstalk. Como uma das melhores práticas, você deve conceder a indivíduos apenas as permissões de que precisam para executar suas tarefas.

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

A segunda política especifica as ações do Elastic Beanstalk que Jack tem permissão para executar no recurso do app1.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllReadCallsAndAllVersionCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:DeleteApplicationVersion", "elasticbeanstalk:UpdateApplicationVersion" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, { "Sid":"UpdateEnvironmentInApplications", "Action":[ "elasticbeanstalk:UpdateEnvironment" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, "StringLike":{ "elasticbeanstalk:FromApplicationVersion":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*" ] } } }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

A terceira política especifica as ações do Elastic Beanstalk para as quais a segunda política precisa de permissões para concluir aquelas ações do Elastic Beanstalk. A instrução AllNonResourceCalls permite a ação elasticbeanstalk:CheckDNSAvailability, que é necessária para chamar elasticbeanstalk:CreateEnvironment e outras ações. Ela também permite a ação elasticbeanstalk:CreateStorageLocation, que é necessária para elasticbeanstalk:CreateEnvironment e outras ações.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }