Permissões do IAM necessárias para modelos de execução do Amazon EC2 - Amazon Elastic Compute Cloud

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

Você pode usar permissões do IAM para controlar se os usuários podem listar, visualizar, criar ou excluir modelos de execução ou versões de modelos de execução.

Importante

Você não pode usar as permissões em nível de recurso para restringir os recursos que os usuários podem especificar em um modelo de execução ao criar um modelo de execução ou uma versão de modelo de execução. Portanto, certifique-se de conceder permissões para a criação de modelos de execução e versões de modelos de execução somente aos administradores confiáveis.

Você deve conceder as permissões necessárias para a criação e para o acesso aos recursos especificados no modelo de execução a qualquer pessoa que usará um modelo de execução. Por exemplo:

  • Para iniciar uma instância usando uma imagem de máquina da Amazon (AMI) privada compartilhada, o usuário deve ter permissão para iniciar a AMI.

  • Para criar volumes do EBS com etiquetas usando snapshots existentes, o usuário deve ter acesso de leitura aos snapshots e permissões para criar e fazer a marcação dos volumes.

ec2:CreateLaunchTemplate

Para criar um modelo de execução no console ou usando as APIs, a entidade principal deve ter a permissão ec2:CreateLaunchTemplate em uma política do IAM. Sempre que possível, use tags para ajudar você a controlar o acesso aos modelos de execução na conta.

Por exemplo, a declaração de política do IAM a seguir concede à entidade principal permissão para criar modelos de execução somente se o modelo usa a tag especificada (purpose = testing).

{ "Sid": "IAMPolicyForCreatingTaggedLaunchTemplates", "Action": "ec2:CreateLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }

As entidades principais que criam modelos de execução podem precisar de algumas permissões relacionadas, como:

  • ec2:CreateTags: para adicionar tags ao modelo de execução durante a operação CreateLaunchTemplate, o chamador de CreateLaunchTemplate deve ter a permissão ec2:CreateTags em uma política do IAM.

  • ec2:RunInstances: para iniciar instâncias do EC2 a partir do modelo de execução que criou, a entidade principal também deve ter a permissão ec2:RunInstances em uma política do IAM.

Para ações de criação de recursos que aplicam tags, os usuários devem ter a permissão ec2:CreateTags. A declaração de política do IAM a seguir usa a chave de condição ec2:CreateAction para permitir que os usuários criem tags somente no contexto de CreateLaunchTemplate. Os usuários não podem marcar modelos de execução existentes nem nenhum outro recurso. Para ter mais informações, consulte Conceder permissão para marcar recursos do Amazon EC2 durante a criação.

{ "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation", "Action": "ec2:CreateTags", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateLaunchTemplate" } } }

O usuário do IAM que cria um modelo de execução não recebe automaticamente permissão para usar o modelo de execução que criou. Como qualquer outra entidade principal, o criador do modelo de execução precisa obter permissão por meio de uma política do IAM. Se um usuário do IAM quiser iniciar uma instância do EC2 a partir de um modelo de execução, ele deverá ter a permissão ec2:RunInstances. Ao conceder essas permissões, é possível especificar que os usuários só poderão usar modelos de execução com tags ou IDs específicos. Você também pode controlar a AMI e outros recursos aos quais qualquer pessoa que use modelos de execução possa fazer referência e usar ao iniciar instâncias especificando permissões em nível de recurso para a chamada RunInstances. Para obter exemplos de políticas, consulte Modelos de execução.

ec2:DescribeLaunchTemplates

Para listar e visualizar modelos de execução na conta, a entidade principal deve ter a permissão ec2:DescribeLaunchTemplates em uma política do IAM. Porque as ações Describe não oferecem suporte a permissões em nível de recurso, é necessário especificá-las sem condições, e o valor do elemento de recurso na política deve ser "*".

Por exemplo, a instrução de política do IAM a seguir concede à entidade principal permissão para listar e visualizar todos os modelos de execução na conta.

{ "Sid": "IAMPolicyForDescribingLaunchTemplates", "Action": "ec2:DescribeLaunchTemplates", "Effect": "Allow", "Resource": "*" }

ec2:DescribeLaunchTemplateVersions

As entidades principais que listam e visualizam modelos de execução também devem ter a permissão ec2:DescribeLaunchTemplateVersions para recuperar todo o conjunto de atributos que compõem os modelos de execução.

Para listar e visualizar versões de modelos de execução na conta, a entidade principal deve ter a permissão ec2:DescribeLaunchTemplateVersions em uma política do IAM. Porque as ações Describe não oferecem suporte a permissões em nível de recurso, é necessário especificá-las sem condições, e o valor do elemento de recurso na política deve ser "*".

Por exemplo, a instrução de política do IAM a seguir concede à entidade principal permissão para listar e visualizar todas as versões de modelos de execução na conta.

{ "Sid": "IAMPolicyForDescribingLaunchTemplateVersions", "Effect": "Allow", "Action": "ec2:DescribeLaunchTemplateVersions", "Resource": "*" }

ec2:DeleteLaunchTemplate

Importante

Tenha cuidado ao conceder permissão às entidades principais para excluir um recurso. A exclusão de um modelo de execução pode causar uma falha em um recurso da AWS que depende desse modelo.

Para excluir um modelo de execução, a entidade principal deve ter a permissão ec2:DeleteLaunchTemplate em uma política do IAM. Sempre que possível, use chaves de condição baseadas em tag para limitar as permissões.

Por exemplo, a instrução de política do IAM a seguir concederá à entidade principal permissão para excluir modelos de execução somente se o modelo tiver a tag especificada (purpose=testing).

{ "Sid": "IAMPolicyForDeletingLaunchTemplates", "Action": "ec2:DeleteLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }

Como alternativa, é possível usar ARNs para identificar o modelo de execução ao qual a política do IAM se aplica.

Um modelo de execução tem o ARN a seguir.

"Resource": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e"

É possível especificar vários ARNs colocando-os em uma lista ou especificar um valor de Resource igual a "*" sem o elemento Condition para permitir que a entidade principal exclua qualquer modelo de execução na conta.

Controlar permissões de controle de versão

Para administradores confiáveis, é possível conceder acesso para criar e excluir versões de um modelo de execução e para alterar a versão padrão de um modelo de execução usando políticas do IAM semelhantes aos exemplos a seguir.

Importante

Tenha cuidado ao conceder permissão às entidades principais para criar versões de modelos de execução ou modificar esses modelos.

  • Ao criar uma versão do modelo de execução, você afetará todos os recursos da AWS que permitem que o Amazon EC2 inicie instâncias em seu nome com a versão Latest.

  • Ao modificar um modelo de execução, você pode alterar qual versão é a Default e, consequentemente, afetar quaisquer recursos da AWS permitem que o Amazon EC2 inicie instâncias em seu nome com essa versão modificada.

Além disso, é necessário ter cuidado ao lidar com os recursos da AWS que interagem com a versão do modelo de execução Latest ou Default, como o EC2 Fleet e o Frota Spot. Quando uma versão diferente do modelo de execução é usada para Latest ou Default, o Amazon EC2 não verifica novamente as permissões para que as ações sejam concluídas ao iniciar novas instâncias para atender à capacidade desejada da frota porque não há interação do usuário com o recurso da AWS. Ao conceder permissão ao usuário para chamar as APIs CreateLaunchTemplateVersion e ModifyLaunchTemplate, o usuário receberá efetivamente a permissão iam:PassRole se apontar a frota para uma versão do modelo de execução diferente que contenha um perfil de instância (um contêiner para um perfil do IAM). Isso significa que um usuário pode atualizar um modelo de execução para transferir um perfil do IAM para uma instância, mesmo que não tenha a permissão iam:PassRole. É possível gerenciar esse risco tomando cuidado ao conceder permissões para quem pode criar e gerenciar versões de modelos de execução.

ec2:CreateLaunchTemplateVersion

Para criar uma nova versão de um modelo de execução, a entidade principal deve ter a permissão ec2:CreateLaunchTemplateVersion para o modelo de execução em uma política do IAM.

Por exemplo, a declaração de política do IAM a seguir concede à entidade principal permissão para criar versões de modelos de execução somente se a versão usa a tag especificada (environment = production). Como alternativa, você pode especificar um ou vários ARNs de modelo de execução ou especificar um valor de Resource igual a "*" sem o elemento Condition para permitir que a entidade principal crie versões de qualquer modelo de execução na conta.

{ "Sid": "IAMPolicyForCreatingLaunchTemplateVersions", "Action": "ec2:CreateLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

ec2:DeleteLaunchTemplateVersion

Importante

Como sempre, tenha cuidado ao conceder permissão às entidades principais para excluir um recurso. A exclusão de uma versão de modelo de execução pode causar uma falha em um recurso da AWS que depende dessa versão.

Para excluir uma versão de modelo de execução, a entidade principal deve ter a permissão ec2:DeleteLaunchTemplateVersion para o modelo de execução em uma política do IAM.

Por exemplo, a declaração de política do IAM a seguir concede à entidade principal permissão para excluir versões de modelos de execução somente se a versão usa a tag especificada (environment = production). Como alternativa, você pode especificar um ou vários ARNs de modelo de execução ou especificar um valor de Resource igual a "*" sem o elemento Condition para permitir que a entidade principal exclua versões de qualquer modelo de execução na conta.

{ "Sid": "IAMPolicyForDeletingLaunchTemplateVersions", "Action": "ec2:DeleteLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

ec2:ModifyLaunchTemplate

Para alterar a versão Default associada a um modelo de execução, a entidade principal deve ter a permissão ec2:ModifyLaunchTemplate para o modelo de execução em uma política do IAM.

Por exemplo, a declaração de política do IAM a seguir concede à entidade principal permissão para modificar modelos de execução somente se o modelo de execução usa a tag especificada (environment = production). Como alternativa, você pode especificar um ou vários ARNs de modelo de execução ou especificar um valor de Resource igual a "*" sem o elemento Condition para permitir que a entidade principal modifique qualquer modelo de execução na conta.

{ "Sid": "IAMPolicyForModifyingLaunchTemplates", "Action": "ec2:ModifyLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

Controlar o acesso a tags em modelos de execução

É possível usar chaves de condição para limitar permissões de tag quando o recurso é um modelo de execução. Por exemplo, a política do IAM a seguir permite remover somente a tag com a chave temporary dos modelos de lançamento na conta e região especificadas.

{ "Sid": "IAMPolicyForDeletingTagsOnLaunchTemplates", "Action": "ec2:DeleteTags", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["temporary"] } } }

Para obter mais informações sobre as chaves de condições que você pode usar para controlar as chaves e valores de tag que podem ser aplicados aos recursos do Amazon EC2, consulte Controlar o acesso a tags específicas.