Exemplos de políticas baseadas em identidade do Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Exemplos de políticas baseadas em identidade do Amazon EC2 Auto Scaling

Por padrão, um novo usuário do IAM não tem permissões para fazer nada. Um administrador do IAM deve criar e atribuir políticas do IAM que concedam permissão para que os usuários finais executem ações de API do Amazon EC2 Auto Scaling.

Para saber como criar uma política do IAM usando esses exemplos de documentos de política JSON, consulte Criar políticas na aba JSON no Manual do usuário do IAM.

A seguir, um exemplo de uma política de permissões.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "test" } } }, { "Effect": "Allow", "Action": [ "autoscaling:*LaunchConfiguration*", "autoscaling:Describe*" ], "Resource": "*" }] }

Esse exemplo de política concede aos usuários permissões para criar, modificar e excluir grupos do Auto Scaling, mas somente se o grupo usar a tag environment=test. Como as configurações de ativação não oferecem suporte a tags, e as ações Describe não oferecem suporte a permissões em nível de recurso, você deve especificá-las em uma declaração separada sem condições. Para saber mais sobre os elementos de uma declaração de política do IAM, consulte Políticas baseadas em identidade para o Amazon EC2 Auto Scaling.

Práticas recomendadas de políticas

As políticas baseadas em identidade determinam se alguém pode criar, acessar ou excluir recursos do Amazon EC2 Auto Scaling em sua conta. Essas ações podem incorrer em custos para a Conta da AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:

  • Comece com as políticas gerenciadas pela AWS e avance para as permissões de privilégio mínimo: para começar a conceder permissões a seus usuários e workloads, use as políticas gerenciadas pela AWS que concedem permissões para muitos casos de uso comuns. Eles estão disponíveis na sua Conta da AWS. Recomendamos que você reduza ainda mais as permissões definindo políticas gerenciadas pelo cliente da AWS específicas para seus casos de uso. Para obter mais informações, consulte Políticas gerenciadas pela AWS ou Políticas gerenciadas pela AWS para funções de trabalho no Guia do usuário do IAM.

  • Aplique permissões de privilégio mínimo: ao definir permissões com as políticas do IAM, conceda apenas as permissões necessárias para executar uma tarefa. Você faz isso definindo as ações que podem ser executadas em recursos específicos sob condições específicas, também conhecidas como permissões de privilégio mínimo. Para obter mais informações sobre como usar o IAM para aplicar permissões, consulte Políticas e permissões no IAM no Guia do usuário do IAM.

  • Use condições nas políticas do IAM para restringir ainda mais o acesso: você pode adicionar uma condição às políticas para limitar o acesso a ações e recursos. Por exemplo, você pode escrever uma condição de política para especificar que todas as solicitações devem ser enviadas usando SSL. Você também pode usar condições para conceder acesso a ações de serviço, se elas forem usadas por meio de um AWS service (Serviço da AWS) específico, como o AWS CloudFormation. Para obter mais informações, consulte Elementos de política JSON do IAM: Condition no Manual do usuário do IAM.

  • Use o IAM Access Analyzer para validar suas políticas do IAM a fim de garantir permissões seguras e funcionais: o IAM Access Analyzer valida as políticas novas e existentes para que elas sigam a linguagem de política do IAM (JSON) e as práticas recomendadas do IAM. O IAM Access Analyzer oferece mais de 100 verificações de política e recomendações acionáveis para ajudar você a criar políticas seguras e funcionais. Para obter mais informações, consulte Validação de políticas do IAM Access Analyzer no Guia do usuário do IAM.

  • Exija autenticação multifator (MFA): se você tiver um cenário que exija usuários raiz ou usuários do IAM em sua conta, ative a MFA para obter segurança adicional. Para exigir a MFA quando as operações de API forem chamadas, adicione condições de MFA às suas políticas. Para obter mais informações, consulte Configuração de acesso à API protegido por MFA no Guia do usuário do IAM.

Para obter mais informações sobre as práticas recomendadas do IAM, consulte Práticas recomendadas de segurança no IAM no Guia do usuário do IAM.

nota

Algumas ações de API do Amazon EC2 Auto Scaling permitem incluir grupos do Auto Scaling específicos na política que podem ser criados ou modificados pela ação. É possível restringir os recursos de destino para essas ações especificando ARNs de grupos do Auto Scaling individuais. No entanto, como prática recomendada, sugerimos usar políticas baseadas em tags que permitam (ou neguem) ações em grupos do Auto Scaling com uma tag específica.

Exemplos de política gerenciada pelo cliente

É possível criar suas próprias políticas personalizadas do IAM para permitir ou negar permissões para usuários ou grupos do IAM para executar ações do Amazon EC2 Auto Scaling. Você pode anexar essas políticas personalizadas a usuários ou grupos do IAM que exijam as permissões especificadas. Os exemplos a seguir mostram permissões para vários casos de uso comuns.

Caso você não tenha familiaridade com a criação de políticas, recomendamos primeiro criar um usuário do IAM na sua conta e anexar políticas a ele. Você pode usar o console para verificar os efeitos de cada política à medida que anexa a política ao usuário.

Ao criar e atualizar grupos do Auto Scaling, algumas ações exigem que outras ações específicas sejam realizadas. É possível especificar essas outras ações no elemento Action de uma declaração de política do IAM. Por exemplo, existem ações de API adicionais para o Elastic Load Balancing, o CloudWatch, e o Amazon SNS que podem ser necessárias dependendo do acesso que você deseja fornecer para um usuário.

Controlar quais chaves de tag e valores de tag podem ser usados

É possível usar condições adicionais em suas políticas do IAM para controlar as chaves de tag e os valores que podem ser aplicados aos grupos do Auto Scaling.

Para conceder aos usuários permissões para criar ou marcar um grupo do Auto Scaling somente se eles especificarem determinadas tags, use a chave de condição aws:RequestTag. Para permitir somente chaves de tags específicas, use a chave de condição aws:TagKeys com o modificador ForAllValues.

A política a seguir requer que os usuários especifiquem uma tag com a chave environment na solicitação. O valor "?*" impõe que haja um valor para a chave de tag. Para usar um caractere curinga, é necessário usar o operador de condição StringLike.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/environment": "?*" } } }] }

A política a seguir especifica que os usuários só podem marcar grupos do Auto Scaling com as tags purpose=webserver e cost-center=cc123 e permite somente as tags purpose e cost-center (nenhuma outra tag pode ser especificada).

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "webserver", "aws:RequestTag/cost-center": "cc123" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["purpose", "cost-center"] } } }] }

A política a seguir requer que os usuários especifiquem pelo menos uma tag na solicitação e permite somente as chaves cost-center e owner.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["cost-center", "owner"] } } }] }
nota

Para condições, a chave de condição não diferencia maiúsculas de minúsculas, e o valor da condição diferencia maiúsculas de minúsculas. Portanto, para aplicar a diferenciação de maiúsculas de minúsculas de uma tag, use a chave de condição aws:TagKeys, onde a chave da tag é especificada como um valor na condição.

Controlar o acesso a recursos do Auto Scaling com base em tags

Também é possível fornecer informações de tag nas políticas do IAM para controlar o acesso com base nas tags anexadas ao grupo do Auto Scaling usando a chave de condição autoscaling:ResourceTag.

Controlar o acesso à criação e ao gerenciamento de grupos do Auto Scaling e políticas de escalabilidade

A política a seguir concede aos usuários permissões para usar todas as ações do Amazon EC2 Auto Scaling que incluem a string Scaling em seus nomes, desde que o grupo do Auto Scaling tenha a tag purpose=webserver. Como as ações Describe não oferecem suporte a permissões em nível de recurso, você deve especificá-las em uma declaração separada sem condições.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["autoscaling:*Scaling*"], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*Scaling*", "Resource": "*" }] }

Controlar quais políticas de escalabilidade podem ser excluídas

A política a seguir permite que os usuários usem a ação autoscaling:DeletePolicy para excluir uma política de escalabilidade. No entanto, ela também negará a ação se o grupo do Auto Scaling que está recebendo a ação tiver a tag environment=production.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:DeletePolicy", "Resource": "*" }, { "Effect": "Deny", "Action": "autoscaling:DeletePolicy", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "production" } } }] }

Controlar a capacidade mínima e máxima dos grupos do Auto Scaling

O Amazon EC2 Auto Scaling permite restringir o tamanho dos grupos do Auto Scaling que podem ser criados. A política a seguir concede aos usuários permissões para criar e atualizar todos os grupos do Auto Scaling com a tag allowed=true, desde que eles não especifiquem um tamanho mínimo menor que 1 ou um tamanho máximo maior que 10.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/allowed": "true" }, "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }] }

Controlar quais funções do IAM podem ser passadas (usando PassRole)

Se você deseja que um usuário seja capaz de criar recursos do Amazon EC2 Auto Scaling que especifiquem um perfil de instância (um contêiner para uma função do IAM), é necessário usar uma política que inclua uma declaração que permita que o usuário passe a função, conforme mostrado no exemplo a seguir. Ao especificar o ARN, a política concede ao usuário a permissão para passar somente funções cujos nomes comecem com qateam-. Para mais informações, consulte Funções do IAM para aplicações que são executadas em instâncias do Amazon EC2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/qateam-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.cn" ] } } } ] }

Permitir que os usuários alterem a capacidade dos grupos do Auto Scaling

A política a seguir concede aos usuários permissões para usar as ações de API SetDesiredCapacity e TerminateInstanceInAutoScalingGroup. O elemento Resource usa um caractere curinga (*) para indicar que os usuários podem alterar a capacidade de qualquer grupo do Auto Scaling.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup" ], "Resource": "*" }] }

Se você não estiver usando tags para controlar o acesso a grupos do Auto Scaling, poderá ajustar a instrução anterior para conceder aos usuários permissões para alterar a capacidade somente de grupos do Auto Scaling cujos nomes começam com devteam-. Para obter mais informações sobre como especificar o valor do ARN, consulte Políticas baseadas em recursos no Amazon EC2 Auto Scaling.

"Resource": "arn:aws:autoscaling:region:123456789012:autoScalingGroup:*:autoScalingGroupName/devteam-*"

Também possível especificar vários ARNs incluindo-os em uma lista. A inclusão da UUID garante que o acesso seja concedido ao grupo do Auto Scaling específico. O UUID para um novo grupo é diferente do UUID para um grupo excluído com o mesmo nome.

"Resource": [ "arn:aws:autoscaling:region:123456789012:autoScalingGroup:7fe02b8e-7442-4c9e-8c8e-85fa99e9b5d9:autoScalingGroupName/devteam-1", "arn:aws:autoscaling:region:123456789012:autoScalingGroup:9d8e8ea4-22e1-44c7-a14d-520f8518c2b9:autoScalingGroupName/devteam-2", "arn:aws:autoscaling:region:123456789012:autoScalingGroup:60d6b363-ae8b-467c-947f-f1d308935521:autoScalingGroupName/devteam-3" ]

Permitir que os usuários criem e usem configurações de execução

A política a seguir concederá aos usuários permissões para criar uma configuração de execução se o tipo de instância for t2.micro, mas somente se o nome da configuração de execução começar com qateam-. Para obter mais informações sobre como especificar o valor do ARN, consulte Políticas baseadas em recursos no Amazon EC2 Auto Scaling. Eles poderão especificar uma configuração de execução para um grupo do Auto Scaling somente se seus nomes começarem com qateam-.

A última parte da instrução concede permissões aos usuários para descrever configurações de execução e acessar determinados recursos do Amazon EC2 em suas contas. Isso concede aos usuários permissões mínimas para criar e gerenciar configurações de execução no console do Amazon EC2 Auto Scaling.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:CreateLaunchConfiguration", "Resource": "arn:aws:autoscaling:region:123456789012:launchConfiguration:*:launchConfigurationName/qateam-*", "Condition": { "StringEquals": { "autoscaling:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "autoscaling:LaunchConfigurationName": "qateam-*" } } }, { "Effect": "Allow", "Action": [ "autoscaling:DescribeLaunchConfigurations", "ec2:DescribeImages", "ec2:DescribeVolumes", "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcs", "ec2:DescribeSubnets" ], "Resource": "*" }] }

É possível adicionar ações de API à essa política para fornecer mais opções aos usuários, por exemplo:

  • iam:ListInstanceProfiles: listar perfis de instância.

  • ec2:CreateSecurityGroup: para criar um novo grupo de segurança.

  • ec2:AuthorizeSecurityGroupIngress: para adicionar regras de entrada.

  • ec2:CreateKeyPair: para criar um novo par de chaves.

Permitir que os usuários criem e usem modelos de execução

Para obter exemplos de políticas, consulte Suporte a modelo de execução.

Permissões necessárias para criar uma função vinculada ao serviço

O Amazon EC2 Auto Scaling requer permissões para criar uma função vinculada ao serviço na primeira vez que qualquer usuário em sua Conta da AWS chama as ações de API do Amazon EC2 Auto Scaling. Se a função vinculada ao serviço ainda não existir, o Amazon EC2 Auto Scaling a criará em sua conta. O perfil vinculado ao serviço concede permissões para que o Amazon EC2 Auto Scaling possa chamar outros Serviços da AWS em seu nome.

Para que a criação automática da função seja bem-sucedida, os usuários devem ter permissões para a ação iam:CreateServiceLinkedRole.

"Action": "iam:CreateServiceLinkedRole"

O exemplo a seguir mostra uma política de permissões que permite que um usuário crie uma função vinculada ao serviço do Amazon EC2 Auto Scaling para o Amazon EC2 Auto Scaling.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling", "Condition": { "StringLike": { "iam:AWSServiceName":"autoscaling.amazonaws.com" } } } ] }

Controlar qual função vinculada ao serviço pode ser passada (usando PassRole)

Se os usuários precisarem da capacidade de passar funções vinculadas ao serviço com sufixo personalizado a um grupo do Auto Scaling, será necessário anexar uma política aos usuários ou às funções com base no acesso necessário. Recomendamos que você restrinja essa política somente às funções vinculadas a serviço que os usuários devem acessar. Para obter mais informações sobre funções vinculadas ao serviço com sufixo personalizado, consulte Funções vinculadas ao serviço do Amazon EC2 Auto Scaling.

O exemplo a seguir é útil para facilitar a segurança das suas chaves gerenciadas pelo cliente do AWS KMS se você fornecer a funções vinculadas a serviço diferentes acesso a a chaves diferentes. Dependendo das suas necessidades, talvez você tenha uma chave para a equipe de desenvolvimento, outra para a equipe de QA e outra para a equipe financeira. Primeiro, crie uma função vinculada ao serviço com acesso à chave necessária, por exemplo, uma função vinculada ao serviço chamada AWSServiceRoleForAutoScaling_devteamkeyaccess. Depois, para conceder permissões para transmitir essa função vinculada ao serviço para um grupo do Auto Scaling, associe a política aos usuários do IAM, como mostrado.

A política neste exemplo concede permissões para que os usuários passem a função AWSServiceRoleForAutoScaling_devteamkeyaccess para criar qualquer grupo do Auto Scaling cujo nome comece com devteam-. Se tentarem especificar outra função vinculada a serviço, receberão um erro. Se optarem por não especificar uma função vinculada a serviço, a função AWSServiceRoleForAutoScaling padrão será usada.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling_devteamkeyaccess", "Condition": { "StringEquals": { "iam:PassedToService": [ "autoscaling.amazonaws.com" ] }, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:autoscaling:region:123456789012:autoScalingGroup:*:autoScalingGroupName/devteam-*" ] } } } ] }

Permissões de API necessárias para o Amazon EC2 Auto Scaling

Ao chamar as seguintes ações da API do Amazon EC2 Auto Scaling, os usuários devem ter permissões do Amazon EC2 e do IAM para executar determinadas ações. Você pode especificar as seguintes ações no elemento Action de uma declaração de política do IAM.

Criar um grupo do Auto Scaling

  • autoscaling:CreateAutoScalingGroup

  • iam:CreateServiceLinkedRole (necessário se você estiver usando a função vinculada ao serviço padrão e essa função ainda não existir)

  • iam:PassRole (necessário se você estiver usando uma função vinculada ao serviço não padrão, especificando uma função do IAM para o parâmetro RoleARN para um gancho do ciclo de vida ou usando um modelo de execução que especifique a função do IAM que pode ser usada pelas instâncias no grupo do Auto Scaling)

  • ec2:RunInstance (necessário se você estiver usando um modelo de execução)

  • ec2:CreateTags (necessário se você estiver usando um modelo de execução que especifique as tags a serem aplicadas às suas instâncias e aos seus volumes do EBS)

Criar uma configuração de execução

  • autoscaling:CreateLaunchConfiguration

  • ec2:DescribeImages

  • ec2:DescribeInstances

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeKeyPairs

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSpotInstanceRequests

  • ec2:DescribeVpcClassicLink

  • iam:PassRole (necessário se você estiver especificando uma função do IAM para o parâmetro IamInstanceProfile)

Criar um gancho do ciclo de vida

  • autoscaling:PutLifecycleHook

  • iam:PassRole (necessário somente se você estiver especificando uma função do IAM para o parâmetro RoleARN)