

# Permissões do IAM necessárias para modelos de execução do Amazon EC2
<a name="permissions-for-launch-templates"></a>

É possível 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.

**Topics**
+ [ec2:CreateLaunchTemplate](#permissions-for-launch-templates-create)
+ [ec2:DescribeLaunchTemplates](#permissions-for-launch-templates-view)
+ [ec2:DescribeLaunchTemplateVersions](#permissions-for-launch-template-versions-view)
+ [ec2:DeleteLaunchTemplate](#permissions-for-launch-templates-delete)
+ [Controlar permissões de controle de versão](#permissions-for-launch-template-versions)
+ [Controlar o acesso a tags em modelos de execução](#permissions-for-launch-templates-tags)

## ec2:CreateLaunchTemplate
<a name="permissions-for-launch-templates-create"></a>

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 obter mais informações, consulte [Conceder permissão para marcar recursos do Amazon EC2 durante a criação](supported-iam-actions-tagging.md).

```
{
    "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation",
    "Action": "ec2:CreateTags",
    "Effect": "Allow",
    "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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](ExamplePolicies_EC2.md#iam-example-runinstances-launch-templates).

## ec2:DescribeLaunchTemplates
<a name="permissions-for-launch-templates-view"></a>

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
<a name="permissions-for-launch-template-versions-view"></a>

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
<a name="permissions-for-launch-templates-delete"></a>

**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:{{us-east-1}}:{{111122223333}}: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
<a name="permissions-for-launch-template-versions"></a>

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
<a name="permissions-for-launch-template-versions-create"></a>

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
<a name="permissions-for-launch-template-versions-delete"></a>

**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
<a name="permissions-for-launch-templates-update"></a>

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
<a name="permissions-for-launch-templates-tags"></a>

É 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:{{us-east-1}}:{{111122223333}}: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](supported-iam-actions-tagging.md#control-tagging).