

# Segurança no Amazon EC2
<a name="ec2-security"></a>

A segurança na nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você se beneficiará de um data center e de uma arquitetura de rede criados para atender aos requisitos das empresas com as maiores exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/) descreve isso como a segurança da nuvem e a segurança na nuvem:
+ **Segurança da nuvem**: a AWS é responsável pela proteção da infraestrutura que executa serviços AWS na Nuvem AWS. A AWS também fornece serviços que podem ser usados com segurança. Auditores de terceiros testam e verificam regularmente a eficácia da nossa segurança como parte dos [Programas de conformidade da AWS](https://aws.amazon.com/compliance/programs/). Para saber mais sobre os programas de compatibilidade que se aplicam ao Amazon EC2, consulte [Serviços da AWS em escopo por programa de compatibilidade](https://aws.amazon.com/compliance/services-in-scope/).
+ **Segurança na nuvem**: sua responsabilidade inclui as seguintes áreas:
  + Controlar o acesso à rede para as instâncias, por exemplo, por meio da configuração da VPC e dos grupos de segurança. Para obter mais informações, consulte [Controlar o tráfego de rede](infrastructure-security.md#control-network-traffic).
  + Gerenciar as credenciais usadas para a conexão às instâncias.
  + Gerenciar o sistema operacional convidado e o software implantado no sistema operacional convidado, incluindo atualizações e patches de segurança. Para obter mais informações, consulte [Gerenciamento de atualizações para instâncias do Amazon EC2](update-management.md).
  + Configurar as funções do IAM anexadas à instância e as permissões associadas a estas funções. Para obter mais informações, consulte [Funções do IAM para Amazon EC2](iam-roles-for-amazon-ec2.md).

Esta documentação ajuda a entender como aplicar o modelo de responsabilidade compartilhada ao usar o Amazon EC2. Ela mostra como configurar o Amazon EC2 para atender aos objetivos de segurança e conformidade. Saiba também como usar outros serviços da AWS que ajudam você a monitorar e proteger os recursos do Amazon EC2.

**Topics**
+ [Proteção de dados](data-protection.md)
+ [Segurança da infraestrutura](infrastructure-security.md)
+ [Resiliência](disaster-recovery-resiliency.md)
+ [Validação de conformidade](compliance-validation.md)
+ [Identity and Access Management](security-iam.md)
+ [Gerenciamento de atualizações](update-management.md)
+ [Práticas recomendadas para instâncias do Windows](ec2-windows-security-best-practices.md)
+ [Pares de chaves](ec2-key-pairs.md)
+ [Grupos de segurança](ec2-security-groups.md)
+ [NitroTPM](nitrotpm.md)
+ [Atestação de instância do EC2](nitrotpm-attestation.md)
+ [Credential Guard para instâncias do Windows](credential-guard.md)
+ [AWS PrivateLink](interface-vpc-endpoints.md)

# Proteção de dados no Amazon EC2
<a name="data-protection"></a>

O [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/) da AWS se aplica à proteção de dados no Amazon Elastic Compute Cloud. Conforme descrito nesse modelo, a AWS é responsável por proteger a infraestrutura global que executa toda a Nuvem AWS. Você é responsável por manter o controle sobre o conteúdo hospedado nessa infraestrutura. Você também é responsável pelas tarefas de configuração e gerenciamento de segurança dos Serviços da AWS que usa. Para saber mais sobre a privacidade de dados, consulte as [Data Privacy FAQ](https://aws.amazon.com/compliance/data-privacy-faq/). Para saber mais sobre a proteção de dados na Europa, consulte a postagem do blog [AWS Shared Responsibility Model and RGPD](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) no *Blog de segurança da AWS*.

Para fins de proteção de dados, recomendamos que você proteja as credenciais da Conta da AWS e configure as contas de usuário individuais com Centro de Identidade do AWS IAM ou AWS Identity and Access Management (IAM). Dessa maneira, cada usuário receberá apenas as permissões necessárias para cumprir suas obrigações de trabalho. Recomendamos também que você proteja seus dados das seguintes formas:
+ Use uma autenticação multifator (MFA) com cada conta.
+ Use SSL/TLS para se comunicar com os recursos da AWS. Exigimos TLS 1.2 e recomendamos TLS 1.3.
+ Configure os logs de API e atividade do usuário com AWS CloudTrail. Para saber mais sobre como usar as trilhas do CloudTrail para capturar atividades da AWS, consulte [Working with CloudTrail trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) no *Guia do usuário do AWS CloudTrail*.
+ Use as soluções de criptografia AWS, juntamente com todos os controles de segurança padrão em Serviços da AWS.
+ Use serviços gerenciados de segurança avançada, como o Amazon Macie, que ajuda a localizar e proteger dados sensíveis armazenados no Amazon S3.
+ Se você precisar de módulos criptográficos validados pelo FIPS 140-3 ao acessar a AWS por meio de uma interface de linha de comandos ou de uma API, use um endpoint do FIPS. Para saber mais sobre os endpoints FIPS disponíveis, consulte [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

É altamente recomendável que nunca sejam colocadas informações confidenciais ou sensíveis, como endereços de e-mail de clientes, em tags ou campos de formato livre, como um campo **Nome**. Isso também vale para o uso do Amazon EC2 ou de outros Serviços da AWS com o console, a API, a AWS CLI ou os AWS SDKs. Quaisquer dados inseridos em tags ou em campos de texto de formato livre usados para nomes podem ser usados para logs de faturamento ou de diagnóstico. Se você fornecer um URL para um servidor externo, é fortemente recomendável que não sejam incluídas informações de credenciais no URL para validar a solicitação nesse servidor.

**Topics**
+ [Segurança de dados do Amazon EBS](#ebs-data-security)
+ [Criptografia em repouso](#encryption-rest)
+ [Criptografia em trânsito](#encryption-transit)

## Segurança de dados do Amazon EBS
<a name="ebs-data-security"></a>

Os volumes do Amazon EBS são apresentados a você como dispositivos de bloco brutos e não formatados. Eles são dispositivos lógicos criados na infraestrutura do EBS, e o serviço Amazon EBS garante que os dispositivos estejam logicamente vazios (ou seja, os blocos brutos são zerados ou contêm dados pseudorrandomizados criptograficamente) antes de qualquer uso ou reutilização por um cliente.

Se você tiver procedimentos que exigem que todos os dados sejam apagados usando um método específico, após ou antes do uso (ou ambos), como aqueles detalhados em **DoD 5220,22-M** (Manual Operacional do Programa Nacional de Segurança Industrial) ou em **NIST 800-88** (Diretrizes para higienização de mídia), será possível fazer isso no Amazon EBS. Essa atividade em nível de bloco será refletida na mídia de armazenamento subjacente dentro do serviço do Amazon EBS.

## Criptografia em repouso
<a name="encryption-rest"></a>

**Volumes do EBS**  
A criptografia do Amazon EBS é uma solução de criptografia para snapshots e volumes do EBS. Ele usa a AWS KMS keys. Para obter mais informações, consulte [Criptografia do Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) no *Guia do usuário do Amazon EBS*.

[Instâncias do Windows] Você também pode usar permissões do Microsoft EFS e do NTFS para criptografia em nível de pastas e de arquivos.

**Volumes de armazenamento de instâncias**  
Os dados nos volumes de armazenamento de instâncias de NVMe são criptografados usando uma criptografia XTS-AES-256 implementada em um módulo de hardware na instância. As chaves usadas para criptografar dados gravados em dispositivos de armazenamento NVMe conectados localmente são por cliente e por volume. As chaves são geradas e residem apenas dentro do módulo de hardware, que é inacessível para o pessoal da AWS. As chaves de criptografia são destruídas quando a instância é interrompida ou encerrada e não podem ser recuperadas. Você não pode desativar essa criptografia e não pode fornecer sua própria chave de criptografia.

Os dados em volumes de armazenamento de instância HDD em instâncias H1, D3 e D3en são criptografados usando XTS-AES-256 e chaves de uso único.

Quando você interrompe, hiberna ou termina uma instância, cada bloco de armazenamento no volume do armazenamento de instância é redefinido. Portanto, seus dados não podem ser acessados por meio do armazenamento de instâncias de outra instância.

**Memória**

A criptografia de memória está habilitada nas seguintes instâncias:
+ Instâncias com processadores AWS Graviton2 ou AWS Graviton posteriores são compatíveis com criptografia de memória sempre ativa. As chaves de criptografia são geradas com segurança dentro do sistema host, não saem do sistema host e são destruídas quando o host é reinicializado ou desligado. Para obter mais informações, consulte [Processadores AWS Graviton](https://aws.amazon.com/ec2/graviton/).
+ Instâncias com processadores Intel Xeon Scalable de 3ª geração (Ice Lake), como instâncias M6i, e processadores Intel Xeon Scalable de 4ª geração (Sapphire Rapids), como instâncias M7i. Esses processadores são compatíveis com criptografia de memória sempre ativa usando a Intel Total Memory Encryption (TME).
+ Instâncias com processadores AMD EPYC de 3ª geração (Milan), como instâncias M6a, e processadores AMD EPYC de 4ª geração (Genoa), como instâncias M7a. Esses processadores são compatíveis com criptografia de memória always-on usando Secure Memory Encryption (SME) da AMD.
+ O Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP) do AMD é compatível com alguns tipos de instâncias baseadas em AMD. Para obter mais informações, consulte [Encontrar tipos de instância do EC2 que são compatíveis com o AMD SEV-SNP](snp-find-instance-types.md).

## Criptografia em trânsito
<a name="encryption-transit"></a>

**Criptografia na camada física**  
Todos os dados fluindo pelas regiões da AWS por meio da rede global da AWS é automaticamente criptografada na camada física antes de sair das instalações seguras da AWS. Todo o tráfego entre AZs é criptografado. Camadas adicionais de criptografia, inclusive as listadas nesta seção, podem fornecer mais proteções.

**Criptografia fornecida pelo emparelhamento da Amazon VPC e do Transit Gateway entre regiões**  
Todo o tráfego entre regiões que usa o emparelhamento da Amazon VPC e do Transit Gateway é automaticamente criptografado em massa ao sair de uma região. Uma camada adicional de criptografia é fornecida automaticamente à camada física para todo o tráfego antes que ele saia das instalações seguras da AWS, conforme observado anteriormente nesta seção.

**Criptografia entre instâncias**  
A AWS fornece conectividade privada e segura entre instâncias do EC2 de todos os tipos. Além disso, alguns tipos de instância usam os recursos de descarregamento do hardware subjacente Nitro System para criptografar automaticamente o tráfego em trânsito entre instâncias. Essa criptografia usa algoritmos de criptografia autenticada com dados associados (AEAD) com criptografia de 256 bits. Não há impacto na performance da rede. Para oferecer suporte a essa criptografia adicional de tráfego em trânsito entre instâncias, os seguintes requisitos devem ser atendidos:
+ As instâncias usam os seguintes tipos de instância:
  + **Uso geral**: M5dn, M5n, M5zn, M6a, M6i, M6id, M6idn, M6in, M7a, M7g, M7gd, M7i, M7i-flex, M8a, M8azn, M8g, M8gb, M8gd, M8gn, M8i, M8id, M8i-flex, Mac-m4, Mac-m4pro
  + **Otimizadas para computação:** C5n, C6a, C6gn, C6i, C6id, C6in, C7a, C7g, C7gd, C7gn, C7i, C7i-flex, C8a, C8g, C8gb, C8gd, C8gn, C8i, C8id, C8i-flex
  + **Otimizadas para memória:** R5dn, R5n, R6a, R6i, R6id, R6idn, R6in, R7a, R7g, R7gd, R7i, R7iz, R8a, R8g, R8gb, R8gd, R8gn, R8i, R8id, R8i-flex, U-3tb1, U-6tb1, U-9tb1, U-12tb1, U-18tb1, U-24tb1, U7i-6tb, U7i-8tb, U7i-12tb, U7in-16tb, U7in-24tb, U7in-32tb, U7inh-32tb, X2idn, X2iedn, X2iezn, X8g, X8aedz, X8i
  + **Otimizadas para armazenamento:** D3, D3en, I3en, I4g, I4i, I7i, I7ie, I8g, I8ge, Im4gn, Is4gen
  + **Computação acelerada:** DL1, DL2q, F2, G4ad, G4dn, G5, G6, G6e, G6f, Gr6, Gr6f, G7e, Inf1, Inf2, P3dn, P4d, P4de, P5, P5e, P5en, P6-B200, P6-B300, P6e-GB200, Trn1, Trn1n, Trn2, Trn2u, VT1
  + **Computação de alta performance:** Hpc6a, Hpc6id, Hpc7a, Hpc7g, Hpc8a
+ As instâncias estão na mesma região.
+ As instâncias estão na mesma VPC ou VPCs emparelhadas, e o tráfego não passa por um dispositivo ou serviço de rede virtual, como um balanceador de carga ou um gateway de trânsito.

Uma camada adicional de criptografia é fornecida automaticamente à camada física para todo o tráfego antes que ele saia das instalações seguras da AWS, conforme observado anteriormente nesta seção.

**Para visualizar os tipos de instância que criptografam o tráfego em trânsito entre instâncias usando o AWS CLI**  
Use o comando [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) a seguir.

```
aws ec2 describe-instance-types \
    --filters Name=network-info.encryption-in-transit-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```

**Criptografia de e para o AWS Outposts**  
Um Outpost cria conexões de rede especiais chamadas *links de serviço* à região da AWS inicial e, opcionalmente, conectividade privada com uma sub-rede da VPC especificada. Todo o tráfego que passa por essas conexões é totalmente criptografado. Para obter mais informações, consulte [Conectividade por meio de links de serviço](https://docs.aws.amazon.com/outposts/latest/userguide/region-connectivity.html#service-links) e [Criptografia em trânsito](https://docs.aws.amazon.com/outposts/latest/userguide/data-protection.html#encryption-transit) no *Manual do usuário do AWS Outposts*.

**Criptografia de acesso remoto**  
Os protocolos SSH e RDP fornecem canais de comunicação seguros para acesso remoto às instâncias, seja diretamente, seja por meio do EC2 Instance Connect. O acesso remoto às instâncias usando o Gerenciador de Sessões ou o Run Command do AWS Systems Manager é criptografado usando TLS 1.2, e as solicitações para criar uma conexão são assinadas usando [SigV4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) e autenticadas e autorizadas pelo [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html).

É de sua responsabilidade usar um protocolo de criptografia, como o Transport Layer Security (TLS), para criptografar dados sigilosos em trânsito entre clientes e suas instâncias do Amazon EC2.

(Instâncias do Windows) Certifique-se de permitir somente conexões criptografadas entre as instâncias do EC2 e os endpoints da API da AWS ou outros serviços de rede remota confidenciais. Isso pode ser imposto por meio do uso de grupo de segurança de saída ou regras de [Firewall do Windows](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/).

# Segurança da infraestrutura no Amazon EC2
<a name="infrastructure-security"></a>

Como um serviço gerenciado, o Amazon Elastic Compute Cloud é protegido pela segurança da rede global da AWS. Para obter informações sobre serviços de segurança da AWS e como a AWS protege a infraestrutura, consulte [Segurança na Nuvem AWS](https://aws.amazon.com/security/). Para projetar seu ambiente da AWS usando as práticas recomendadas de segurança da infraestrutura, consulte [Proteção de Infraestrutura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) em *Pilar de Segurança: AWS Estrutura bem arquitetada*.

Você usa chamadas à API publicadas pela AWS para acessar o Amazon EC2 por meio da rede. Os clientes devem oferecer compatibilidade com:
+ Transport Layer Security (TLS). Exigimos TLS 1.2 e recomendamos TLS 1.3.
+ Conjuntos de criptografia com perfect forward secrecy (PFS) como DHE (Ephemeral Diffie-Hellman) ou ECDHE (Ephemeral Elliptic Curve Diffie-Hellman). A maioria dos sistemas modernos, como Java 7 e versões posteriores, comporta esses modos.

Para obter mais informações, consulte [Proteção de infraestrutura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) no *Pilar de Segurança: AWS Well-Architected Framework*.

## Isolamento de rede
<a name="network-isolation"></a>

Uma nuvem virtual privada (VPC) é uma rede virtual na área isolada logicamente na Nuvem AWS. Use VPCs separadas para isolar a infraestrutura por workload ou entidade organizacional.

Uma sub-rede é um intervalo de endereços IP em uma VPC. Quando executa uma instância, você a executa em uma sub-rede em sua VPC. Use sub-redes para isolar as camadas de sua aplicação (por exemplo, Web, aplicação e banco de dados) em uma única VPC. Use sub-redes privadas para as instâncias que não devem ser acessadas diretamente pela Internet.

Para chamar a API do Amazon EC2 da sua VPC usando endereços IP privados, use o AWS PrivateLink. Para obter mais informações, consulte [Acessar o Amazon EC2 usando um endpoint da VPC de interface](interface-vpc-endpoints.md).

## Isolamento em hosts físicos
<a name="physical-isolation"></a>

Diferentes instâncias do EC2 no mesmo host físico são isoladas umas das outras como se estivessem em hosts físicos separados. O hipervisor isola a CPU e a memória, e as instâncias recebem discos virtualizados em vez de acesso aos dispositivos de disco bruto.

Quando você interrompe ou encerra uma instância, a memória alocada para ela é apagada (definida como zero) pelo hipervisor antes que ela seja alocada para uma nova instância, e cada bloco de armazenamento é redefinido. Isso garante que seus dados não sejam expostos acidentalmente para outra instância.

Os endereços MAC de rede são atribuídos dinamicamente às instâncias pela infraestrutura da rede da AWS. Os endereços IP são atribuídos dinamicamente a instâncias pela infraestrutura de rede da AWS ou atribuídos por um administrador do EC2 por meio de solicitações autenticadas da API. A rede da AWS permite que as instâncias enviem tráfego somente de endereços MAC e IP atribuídos a elas. Caso contrário, o tráfego será descartado.

Por padrão, uma instância não pode receber tráfego que não seja endereçado especificamente a ela. Se for necessário executar a conversão de endereço de rede (NAT), o roteamento ou os serviços de firewall em sua instância, será possível desabilitar a verificação de origem/destino da interface de rede.

## Controlar o tráfego de rede
<a name="control-network-traffic"></a>

Considere as seguintes opções de controle de tráfego de rede para suas instâncias do EC2:
+ Restrinja o acesso a suas instâncias usando [grupos de segurança](ec2-security-groups.md). Configure regras que permitam o tráfego de rede mínimo necessário. Por exemplo, é possível permitir o tráfego somente dos intervalos de endereços da rede corporativa ou apenas para protocolos específicos, como HTTPS. Para instâncias do Windows, permita o tráfego de gerenciamento do Windows e as conexões de saída mínimas.
+ Use os grupos de segurança como o mecanismo primário a fim de controlar o acesso à rede para instâncias do Amazon EC2. Quando necessário, use as ACLs de rede para fornecer controle de rede sem estado e de alta granularidade. Os grupos de segurança são mais versáteis que as ACLs de rede devido à capacidade de realizar a filtragem de pacotes com estado e criar regras que fazem referência a outros grupos de segurança. No entanto, as ACLs de rede podem ser eficientes como um controle secundário para negar um subconjunto ou tráfego específico ou fornecer grades de proteção de sub-rede de alto nível. Além disso, como as ACLs de rede se aplicam a toda uma sub-rede, elas podem ser usadas como defesa em profundidade caso uma instância seja iniciada de forma não intencional sem um grupo de segurança correto.
+ [Instâncias do Windows] Gerencie as configurações do Firewall do Windows, de maneira centralizada, com os Objetos de Política de Grupo (GPO) para aprimorar ainda mais os controles de rede. Os clientes costumam usar o Firewall do Windows para obter maior visibilidade do tráfego de rede e para complementar os filtros de grupo de segurança, criando regras avançadas para impedir que aplicações específicas acessem a rede ou filtrem o tráfego de endereços IP de um subconjunto. Por exemplo, o Firewall do Windows pode limitar o acesso ao endereço IP do serviço de metadados do EC2 para usuários ou aplicações específicas. Como alternativa, um serviço voltado para o público pode usar grupos de segurança para restringir o tráfego a portas específicas e o Firewall do Windows a manter uma lista negra de endereços IP explicitamente bloqueados.
+ Use sub-redes privadas para as instâncias que não devem ser acessadas diretamente pela Internet. Use um bastion host ou gateway NAT para acesso à Internet em uma instância em uma sub-rede privada.
+ [Instâncias do Windows] Use protocolos de administração seguros, como o encapsulamento de RDP sobre SSL e TLS. O Quick Start para Gateway de Desktop Remoto fornece as melhores práticas para implantar um gateway de desktop remoto remota, incluindo a configuração de RDP para usar SSL/TLS.
+ [Instâncias do Windows] Use o Active Directory ou o Directory Service para controlar e monitorar, de forma rígida e centralizada, o acesso interativo de usuários e de grupos às instâncias do Windows e evitar permissões de usuários locais. Evite também usar Administradores de domínio e, em vez disso, crie contas baseadas em função mais granulares e específicas para a aplicação. A Administração Suficiente (JEA) permite que as alterações nas instâncias do Windows sejam gerenciadas sem acesso interativo ou de administrador. Além disso, a JEA permite que as organizações bloqueiem o acesso administrativo ao subconjunto dos comandos do Windows PowerShell necessários para a administração da instância. Para obter informações adicionais, consulte a seção "Gerenciamento de acesso a nível de SO para o Amazon EC2" no whitepaper [Práticas recomendadas de segurança da AWS](https://d1.awsstatic.com/whitepapers/Security/AWS_Security_Best_Practices.pdf).
+ [Instâncias do Windows] Os administradores de sistema devem usar contas do Windows com acesso limitado para realizar atividades diárias e elevar o acesso somente quando necessário para realizar alterações específicas na configuração. Além disso, somente acesse as instâncias do Windows diretamente quando absolutamente necessário. Em vez disso, use os sistemas de gerenciamento de configuração central, como o Run Command do EC2, o Systems Center Configuration Manager (SCCM), o Windows PowerShell DSC ou o Amazon EC2 Systems Manager (SSM), para enviar as alterações aos servidores Windows.
+ Configure as tabelas de rotas de sub-rede da Amazon VPC com as rotas de rede mínimas necessárias. Por exemplo, insira somente as instâncias do Amazon EC2 que exijam acesso direto à Internet nas sub-redes com rotas para um gateway da Internet e insira somente instâncias do Amazon EC2 que precisem de acesso direto a redes internas nas sub-redes com rotas para um gateway privado virtual.
+ Considere usar grupos de segurança adicionais ou interfaces de rede para controlar e auditar o tráfego de gerenciamento de instâncias do Amazon EC2 separadamente do tráfego de aplicação regular. Esta abordagem permite que os clientes implementem políticas do IAM especiais para o controle de alterações, facilitando a auditoria de alterações às regras de grupo de segurança ou scripts automáticos de verificação de regras. O uso de diversas interfaces de rede também oferece opções adicionais para controlar o tráfego de rede, incluindo a capacidade de criar políticas de roteamento baseadas em host ou aproveitar diferentes regras de roteamento de sub-rede da VPC com base na sub-rede atribuída da interface de rede.
+ Use o AWS Virtual Private Network ou o Direct Connect para estabelecer conexões privadas de suas redes remotas com suas VPCs. Para obter mais informações, consulte [Opções de conectividade entre a rede e a Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html).
+ Use [Logs de fluxo da VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) para monitorar o tráfego recebido nas instâncias.
+ Use a [proteção contra malware do GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/malware-protection.html) para identificar comportamentos suspeitos indicativos de softwares mal-intencionados em suas instâncias que podem comprometer a workload, redirecionar recursos para o uso mal-intencionado e obter acesso não autorizado aos dados.
+ Use o [monitoramento do runtime do GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html) para identificar e responder a possíveis ameaças às instâncias. Para obter mais informações, consulte [How Runtime Monitoring works with Amazon EC2 instances](https://docs.aws.amazon.com/guardduty/latest/ug/how-runtime-monitoring-works-ec2.html).
+ Use o [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/), o [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/) ou o [Analisador de Acesso à Rede](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/) para verificar a existência de acessibilidade à rede não intencional proveniente das suas instâncias.
+ Use o [EC2 Instance Connect](connect-linux-inst-eic.md) para se conectar a suas instâncias usando Secure Shell (SSH) sem a necessidade de compartilhar e gerenciar chaves SSH.
+ Use o [Gerenciador de Sessões do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) para acessar as instâncias remotamente em vez de abrir portas SSH ou RDP de entrada e gerenciar pares de chaves.
+ Use o [Run Command do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html) para automatizar as tarefas administrativas comuns em vez de realizar conexão com as instâncias.
+ [Instâncias do Windows] Muitos dos perfis do sistema operacional do Windows e das aplicações de negócios da Microsoft também fornecem funcionalidades aprimoradas, como restrições de intervalo de endereços IP no IIS, políticas de filtragem de TCP/IP no Microsoft SQL Server e políticas de filtragem de conexão no Microsoft Exchange. A funcionalidade de restrição de rede na camada de aplicação pode fornecer camadas adicionais de defesa para servidores de aplicação de negócios críticos.

A Amazon VPC oferece suporte a controles adicionais de segurança de rede, como gateways, servidores proxy e opções de monitoramento de rede. Para obter mais informações, consulte [Control network traffic](https://docs.aws.amazon.com/vpc/latest/userguide/infrastructure-security.html#control-network-traffic) no *Guia do usuário da Amazon VPC*.

# Resiliência no Amazon EC2
<a name="disaster-recovery-resiliency"></a>

A infraestrutura global da AWS é criada com base em regiões e zonas de disponibilidade da AWS. As regiões fornecem várias zonas de disponibilidade separadas e isoladas fisicamente, que são conectadas com baixa latência, alta throughput e redes altamente redundantes. Com as zonas de disponibilidade, é possível projetar e operar aplicações e bancos de dados que automaticamente executam o failover entre as zonas sem interrupção. As zonas de disponibilidade são mais altamente disponíveis, tolerantes a falhas e escaláveis que uma ou várias infraestruturas de data center tradicionais.

Se você precisar replicar seus dados ou aplicações para distâncias geográficas maiores, use as zonas locais da AWS. Uma zona local da AWS é uma extensão de uma região da AWS na proximidade geográfica de seus usuários. As zonas locais têm suas próprias conexões com a Internet e suporte no Direct Connect. Como todas as regiões da AWS, as zonas locais da AWS são completamente isoladas de outras zonas da AWS.

Se você precisar replicar seus dados ou aplicações em uma zona local da AWS, a AWS recomenda que você use uma das seguintes zonas como zona de failover:
+ Outra zona local
+ Uma zona de disponibilidade na região que não é a zona principal. É possível usar o comando [describe-availability-zones](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-availability-zones.html) para visualizar a zona principal.

Para obter mais informações sobre regiões e zonas de disponibilidade da AWS, consulte [Infraestrutura global da AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Além da infraestrutura global da AWS, o Amazon EC2 oferece os seguintes recursos para oferecer suporte à resiliência de seus dados:
+ Copiar AMIs entre regiões
+ Copiar snapshots do EBS entre regiões
+ Automatizando AMIs compatíveis com EBS usando o Amazon Data Lifecycle Manager
+ Automatizar snapshots do EBS usando o Amazon Data Lifecycle Manager
+ Manter a integridade e a disponibilidade da frota usando o Amazon EC2 Auto Scaling
+ Distribuir o tráfego de entrada entre instâncias em uma única zona de disponibilidade ou em várias zonas de disponibilidade usando o Elastic Load Balancing.

# Validação de conformidade do Amazon EC2
<a name="compliance-validation"></a>

Para saber se um AWS service (Serviço da AWS) está no escopo de programas de conformidade específicos, consulte [Serviços da AWS no escopo por programa de conformidade](https://aws.amazon.com/compliance/services-in-scope/) e selecione o programa de conformidade em que você está interessado. Para obter informações gerais, consulte [Programas de Conformidade da AWS](https://aws.amazon.com/compliance/programs/).

É possível baixar relatórios de auditoria de terceiros usando o AWS Artifact. Para saber mais, consulte [Baixar relatórios no AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Sua responsabilidade de conformidade ao usar o Serviços da AWS é determinada pela confidencialidade dos seus dados, pelos objetivos de conformidade da sua empresa e pelos regulamentos e leis aplicáveis. Para ter mais informações sobre sua responsabilidade de conformidade ao usar Serviços da AWS, consulte [Documentação de segurança da AWS](https://docs.aws.amazon.com/security/).

# Identity and Access Management para o Amazon EC2
<a name="security-iam"></a>

O AWS Identity and Access Management (IAM) é um serviço da AWS service (Serviço da AWS) que ajuda um administrador a controlar com segurança o acesso aos recursos da AWS. Os administradores do IAM controlam quem pode ser *autenticado* (conectado) e *autorizado* (tem permissões) a usar os recursos do Amazon EC2. O IAM é um AWS service (Serviço da AWS) que pode ser usado sem custo adicional.

As credenciais de segurança identificam você para os serviços na AWS e concedem acesso aos recursos da AWS, como os recursos do Amazon EC2. É possível usar os recursos do Amazon EC2 e do IAM para permitir que outros usuários, serviços e aplicações usem seus recursos do Amazon EC2 sem compartilhar suas credenciais de segurança. É possível usar o IAM para controlar como outros usuários usam recursos na Conta da AWS, e pode usar grupos de segurança para controlar o acesso às instâncias do Amazon EC2. É possível optar por permitir uso completo ou limitado dos recursos do Amazon EC2.

Caso seja um desenvolvedor, será possível usar os perfis do IAM para gerenciar as credenciais de segurança necessárias para as aplicações que você executa nas instâncias do EC2. Depois de anexar um perfil do IAM à sua instância, as aplicações em execução na instância podem recuperar as credenciais do serviço de metadados de instância (IMDS).

Para conhecer as práticas recomendadas de proteção dos recursos da AWS usando o IAM, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

**Topics**
+ [Políticas baseadas em identidade do Amazon EC2](iam-policies-for-amazon-ec2.md)
+ [Exemplo de políticas para controlar o acesso à API do Amazon EC2](ExamplePolicies_EC2.md)
+ [Exemplo de políticas para controlar o acesso ao console do Amazon EC2](iam-policies-ec2-console.md)
+ [Políticas gerenciadas pela AWS para o Amazon EC2](security-iam-awsmanpol.md)
+ [Funções do IAM para Amazon EC2](iam-roles-for-amazon-ec2.md)

# Políticas baseadas em identidade do Amazon EC2
<a name="iam-policies-for-amazon-ec2"></a>

Por padrão, os usuários não têm permissão para criar ou modificar recursos do Amazon EC2 ou para executar tarefas usando a API do Amazon EC2, o colsole do Amazon EC2 ou a CLI. Para permitir que os usuários criem ou modifiquem recursos e realizem tarefas, você precisa criar políticas do IAM que concedam aos usuários do permissão para usar os recursos específicos e as ações de API de que precisam e, então, anexar essas políticas aos usuários ou grupos, ou perfis do IAM que exijam essas permissões.

Quando você anexa uma política a um usuário, um grupo de usuários ou um perfil, isso concede ou nega aos usuários permissão para realizar as tarefas especificadas nos recursos especificados. Para obter mais informações gerais sobre as políticas do IAM, consulte [Permissões e políticas no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) no *Guia do usuário do IAM*. Para obter mais informações sobre o gerenciamento e a criação de políticas do IAM;, consulte [Gerenciamento de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html).

Uma política do IAM deve conceder ou negar permissões para usar uma ou mais ações do Amazon EC2. Ela também deve especificar os recursos que podem ser usados com a ação, que podem ser todos os recursos ou, em alguns casos, recursos específicos. A política também pode incluir condições que você aplica ao recurso.

Para começar a usar, você pode verificar se as políticas gerenciadas pela AWS para o Amazon EC2 atendem às suas necessidades. Caso contrário, você pode criar suas próprias políticas personalizadas. Para obter mais informações, consulte [Políticas gerenciadas pela AWS para o Amazon EC2](security-iam-awsmanpol.md).

**Topics**
+ [Sintaxe da política](#policy-syntax)
+ [Ações do Amazon EC2](#UsingWithEC2_Actions)
+ [Permissões no nível do recurso com suporte para ações de API do Amazon EC2](#ec2-supported-iam-actions-resources)
+ [Nomes de recurso da Amazon (ARNs) para o Amazon EC2](#EC2_ARN_Format)
+ [Chaves de condição do Amazon EC2](#amazon-ec2-keys)
+ [Controlar o acesso usando acesso baseado em atributos](#control-access-with-tags)
+ [Conceder permissões a usuários, grupos e perfis](#granting-iam-permissions)
+ [Verificar se os usuários têm as permissões necessárias](#check-required-permissions)

## Sintaxe da política
<a name="policy-syntax"></a>

A política do IAM é um documento JSON que consiste em uma ou mais declarações. Cada instrução é estruturada da maneira a seguir.

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"arn",
    "Condition":{
      "condition":{
        "key":"value"
        }
      }
    }
  ]
}
```

Existem vários elementos que compõem uma instrução:
+ **Efeito:** o *efeito* pode ser `Allow` ou `Deny`. Por padrão, os usuários não têm permissão para usar recursos e ações da API. Por isso, todas as solicitações são negadas. Uma permissão explícita substitui o padrão. Uma negação explícita substitui todas as permissões.
+ **Action**: a *ação* é a ação de API específica para a qual você está concedendo ou negando permissão. Para conhecer como especificar *ação*, consulte [Ações do Amazon EC2](#UsingWithEC2_Actions). 
+ **Resource**: o recurso afetado pela ação. Algumas ações de API do Amazon EC2 permitem incluir recursos específicos na política que podem ser criados ou modificados pela ação. Você especifica um recurso usando um nome de recurso da Amazon (ARN) ou usando o caractere curinga (\$1) para indicar que a instrução se aplica a todos os recursos. Para obter mais informações, consulte [Permissões no nível do recurso com suporte para ações de API do Amazon EC2](#ec2-supported-iam-actions-resources). 
+ **Condition**: condições são opcionais. Elas podem ser usadas para controlar quando a política está em vigor. Para obter mais informações sobre como especificar condições para o Amazon EC2, consulte [Chaves de condição do Amazon EC2](#amazon-ec2-keys).

Para obter mais informações sobre requisitos de políticas, consulte a [Referência de política JSON do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) no *Guia do usuário do IAM*. Para obter um exemplo de declarações de políticas do IAM para o Amazon EC2, consulte [Exemplo de políticas para controlar o acesso à API do Amazon EC2](ExamplePolicies_EC2.md). 

## Ações do Amazon EC2
<a name="UsingWithEC2_Actions"></a>

Em uma declaração de política do IAM, é possível especificar qualquer ação de API de qualquer serviço que dê suporte ao IAM. Para o Amazon EC2, use o seguinte prefixo com o nome da ação da API: `ec2:`. Por exemplo: `ec2:RunInstances` e `ec2:CreateImage`.

Para especificar várias ações em uma única declaração, separe-as com vírgulas, conforme o seguinte:

```
"Action": ["ec2:action1", "ec2:action2"]
```

Também é possível especificar várias ações usando caracteres curinga. Por exemplo, é possível especificar todas as ações cujo nome começa com a palavra "Describe" da seguinte forma:

```
"Action": "ec2:Describe*"
```

**nota**  
No momento, as ações de API do Amazon EC2 não são compatíveis com permissões em nível de recurso. Para obter mais informações sobre permissões no nível do recurso para o Amazon EC2, consulte [Políticas baseadas em identidade do Amazon EC2](#iam-policies-for-amazon-ec2).

Para especificar todas as ações de API do Amazon EC2, use o curinga "\$1" da seguinte maneira:

```
"Action": "ec2:*"
```

Para obter uma lista de ações de Amazon EC2, consulte [Ações definidas pelo Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions) na *Referência de autorização do serviço*.

## Permissões no nível do recurso com suporte para ações de API do Amazon EC2
<a name="ec2-supported-iam-actions-resources"></a>

*Permissões no nível do recurso* se referem à capacidade de especificar em quais recursos os usuários têm permissão para realizar ações. O Amazon EC2 tem suporte parcial para permissões no nível do recurso. Isso significa que, para determinadas ações do Amazon EC2, é possível controlar quando os usuários têm permissão para usar essas ações com base em condições que precisam ser concluídas, ou em recursos específicos que os usuários têm permissão para usar. Por exemplo, é possível conceder aos usuários permissões para ativar instâncias, mas apenas de um tipo específico, e usando uma AMI específica.

Para especificar um recurso em uma declaração de política do IAM, use o respectivo nome de recurso da Amazon (ARN). Para obter mais informações sobre como especificar o valor do ARN, consulte [Nomes de recurso da Amazon (ARNs) para o Amazon EC2](#EC2_ARN_Format). Se uma ação de API não oferecer suporte a ARNs individuais, você deverá usar um curinga (\$1) para especificar que todos os recursos podem ser afetados pela ação. 

Para visualizar tabelas que identificam quais ações de API do Amazon EC2 oferecem suporte a permissões no nível do recurso e os ARNs e chaves de condição que é possível usar em uma política, consulte [Ações, recursos e chaves de condição do Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html) .

Lembre-se de que é possível aplicar permissões em nível de recurso baseadas em tags às políticas do IAM que você usa para a maioria das ações da API do Amazon EC2. Isso oferece a você mais controle sobre quais recursos o usuário pode criar, modificar ou usar. Para obter mais informações, consulte [Conceder permissão para marcar recursos do Amazon EC2 durante a criação](supported-iam-actions-tagging.md). 

## Nomes de recurso da Amazon (ARNs) para o Amazon EC2
<a name="EC2_ARN_Format"></a>

Cada declaração de política do IAM se aplica aos recursos que você especifica usando os ARNs. 

Um ARN tem a seguinte sintaxe geral:

```
arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
```

*service*  
O serviço (por exemplo, `ec2`).

*region*  
A região do recurso (por exemplo, `us-east-1`).

*account-id*  
O ID da conta da AWS, sem hifens (por exemplo, `123456789012`).

*resourceType*  
O tipo de recurso (por exemplo, `instance`).

*resourcePath*  
Um caminho que identifica o recurso. É possível usar o curinga \$1 nos caminhos.

Por exemplo, é possível indicar uma instância específica (`i-1234567890abcdef0`) na declaração usando o ARN da maneira a seguir. 

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
```

É possível especificar todas as instâncias pertencentes a uma conta específica usando o caractere curinga \$1 da maneira a seguir.

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"
```

Também é possível especificar todos os recursos do Amazon EC2 pertencentes a uma conta específica usando o caractere curinga \$1 da maneira a seguir.

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:*"
```

Para especificar todos os recursos ou caso uma ação de API específica não dê suporte a ARNs, use o curinga \$1 no elemento `Resource` da maneira a seguir.

```
"Resource": "*"
```

Muitas ações da API do Amazon EC2 envolvem vários recursos. Por exemplo, `AttachVolume` anexa um volume do Amazon EBS a uma instância, portanto, um usuário precisa ter permissões para usar o volume e a instância. Para especificar vários recursos em uma única instrução, separe seus ARNs com vírgulas, como se segue.

```
"Resource": ["arn1", "arn2"]
```

Para obter uma lista de ARNs para recursos do Amazon EC2, consulte [Tipos de recursos definidos pelo Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-resources-for-iam-policies).

## Chaves de condição do Amazon EC2
<a name="amazon-ec2-keys"></a>

Ema uma instrução de política, também é possível especificar condições que controlam quando ela entrará em vigor. Cada condição contém um ou mais pares de chave-valor. As chaves de condição não diferenciam maiúsculas de minúsculas. Definimos chaves de condição global da AWS, além de chaves de condição específicas do serviço adicionais.

Para obter uma lista de chaves de condição específicas do serviço para o Amazon EC2, consulte [Condition keys for Amazon EC2 (Chaves de condição para o Amazon EC2)](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-policy-keys). O Amazon EC2 também implementa as chaves de condição globais da AWS. Para obter mais informações, consulte [Informações disponíveis em todas as solicitações](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infoallreqs) no *Guia do usuário do IAM*.

Todas as ações do Amazon EC2 oferecem suporte às chaves de condição `aws:RequestedRegion` e `ec2:Region`. Para obter mais informações, consulte [Exemplo: restringir acesso a uma região específica](ExamplePolicies_EC2.md#iam-example-region).

Para usar uma chave de condição em sua política do IAM, use a instrução `Condition`. Por exemplo, a política a seguir concede aos usuários permissão para adicionar e remover regras de entrada e saída para qualquer grupo de segurança. Ela usa a chave de condição `ec2:Vpc` para especificar que essas ações só podem ser executadas em grupos de segurança em uma VPC específica.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement":[{
    "Effect":"Allow",
    "Action": [
       "ec2:AuthorizeSecurityGroupIngress",
       "ec2:AuthorizeSecurityGroupEgress",
       "ec2:RevokeSecurityGroupIngress",
       "ec2:RevokeSecurityGroupEgress"],
     "Resource": "arn:aws:ec2:us-east-1:111122223333:security-group/*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-11223344556677889"
        }
      }
    }
  ]
}
```

------

Caso você especifique várias condições ou várias chaves em uma única condição, avaliamos essas condições usando uma operação AND lógica. Caso você especifique uma única condição com vários valores para uma chave, avaliamos a condição usando uma operação OR lógica. Para que as permissões sejam concedidas, todas as condições devem ser atendidas.

Também é possível usar espaços reservados quando especifica as condições. Para obter mais informações, consulte [Elementos de política do IAM: variáveis e tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) no *Guia do usuário do IAM*.

**Importante**  
Muitas chaves de condição são específicas a um recurso, e algumas ações da API usam vários recursos. Se você gravar uma política com uma chave de condição, use o elemento `Resource` da declaração para especificar o recurso ao qual a chave de condição se aplica. Caso contrário, as políticas podem impedir que os usuários executem a ação, porque a verificação da condição falha para os recursos aos quais a chave de condição não se aplica. Se você não quiser especificar um recurso, ou se escreveu o elemento `Action` da política para incluir várias ações da API, será necessário usar o tipo de condição `...IfExists` para garantir que a chave de condição seja ignorada pelos recursos que não a usam. Para obter mais informações, consulte [Condições ...IfExists](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IfExists) no *Guia do usuário do IAM*.

**Topics**
+ [ec2:AttributeChave da condição](#attribute-key)
+ [ec2:ResourceIDChaves de condição do](#imageId-key)
+ [ec2:SourceInstanceARNChave da condição](#SourceInstanceARN)

### ec2:AttributeChave da condição
<a name="attribute-key"></a>

A chave de condição `ec2:Attribute` pode ser usada para condições que filtram o acesso por um atributo de um recurso.

A chave de condição é compatível somente com propriedades de um tipo de dados primitivos (como strings ou inteiros) ou objetos **[AttributeValue](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AttributeValue.html)** complexos que contêm apenas uma propriedade **Value** (como os objetos **Description** ou **ImdsSupport** da ação [ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html) da API). A chave de condição não pode ser usada com objetos complexos que contêm várias propriedades, como o objeto **LaunchPermission** da ação[ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html) da API.

Por exemplo, a política a seguir usa a chave de condição `ec2:Attribute/Description` para filtrar o acesso pelo objeto complexo **Descrição** da ação da API **ModifyImageAttribute**. A chave de condição permite somente solicitações que modifiquem a descrição de uma imagem para `Production` ou `Development`. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:ModifyImageAttribute",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:Attribute/Description": [
            "Production",
            "Development"
          ]
        }
      }
    }
  ]
}
```

------

A política a seguir usa a chave de condição `ec2:Attribute` para filtrar o acesso pela propriedade primitiva **Atributo** da ação da API **ModifyImageAttribute**. A chave de condição recusa todas as solicitações que tentam modificar a descrição de uma imagem.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "ec2:ModifyImageAttribute",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:Attribute": "Description"
        }
      }
    }
  ]
}
```

------

### ec2:ResourceIDChaves de condição do
<a name="imageId-key"></a>

Quando as chaves de condição `ec2:ResourceID` a seguir forem usadas com as ações de API especificadas, o valor da chave de condição será usado para especificar o recurso resultante criado pela ação da API. As chaves de condição `ec2:ResourceID` não podem ser usadas para especificar um recurso de origem especificado na solicitação da API. Se você usar uma das chaves de condição `ec2:ResourceID` a seguir com uma API especificada, será necessário especificar sempre o curinga (`*`). Se você especificar um valor diferente, a condição sempre será resolvida para `*` em runtime. Por exemplo, para usar a chave de condição `ec2:ImageId` com a API **CopyImage**, será necessário especificar a chave de condição da seguinte forma:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CopyImage",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:ImageID": "*"
        }
      }
    }
  ]
}
```

------

Recomendamos evitar usar estas chaves de condição com estas ações de API:
+ `ec2:DhcpOptionsID` – `CreateDhcpOptions`
+ `ec2:ImageID` – `CopyImage`, `CreateImage`, `ImportImage` e `RegisterImage`
+ `ec2:InstanceID` – `RunInstances` e `ImportInstance`
+ `ec2:InternetGatewayID` – `CreateInternetGateway`
+ `ec2:NetworkAclID` – `CreateNetworkAcl`
+ `ec2:NetworkInterfaceID` – `CreateNetworkInterface`
+ `ec2:PlacementGroupName` – `CreatePlacementGroup`
+ `ec2:RouteTableID` – `CreateRouteTable`
+ `ec2:SecurityGroupID` – `CreateSecurityGroup`
+ `ec2:SnapshotID` – `CopySnapshot`, `CreateSnapshot`, `CreateSnapshots` e `ImportSnapshots`
+ `ec2:SubnetID` – `CreateSubnet`
+ `ec2:VolumeID` – `CreateVolume` e `ImportVolume`
+ `ec2:VpcID` – `CreateVpc`
+ `ec2:VpcPeeringConnectionID` – `CreateVpcPeeringConnection`

Para filtrar o acesso com base em IDs de recursos específicos, recomendamos usar o elemento de política `Resource` conforme descrito a seguir.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CopyImage",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef"
    }
  ]
}
```

------

### ec2:SourceInstanceARNChave da condição
<a name="SourceInstanceARN"></a>

Use `ec2:SourceInstanceARN` para especificar o ARN da instância a partir da qual uma solicitação é feita. Essa é uma [chave de condição global da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html), o que significa que é possíve usá-la com outros serviços além do Amazon EC2. Para ver um exemplo de política, consulte [Exemplo: permitir que uma instância específica visualize recursos em outros serviços da AWS](ExamplePolicies_EC2.md#iam-example-source-instance).

## Controlar o acesso usando acesso baseado em atributos
<a name="control-access-with-tags"></a>

Ao criar uma política do IAM que conceda permissão aos usuários para usar recursos do EC2, é possível incluir informações de tag no elemento `Condition` da política para controlar o acesso com base em tags. Isso é conhecido como controle de acesso baseado em atributo (ABAC). O ABAC oferece um controle melhor sobre quais recursos um usuário pode modificar, usar ou excluir. Para obter mais informações, consulte [O que é ABAC para a AWS?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)

Por exemplo, é possível criar uma política que permite que os usuários encerrem uma instância, mas nega a ação se a instância tiver a tag `environment=production`. Para fazer isso, use a chave de condição `aws:ResourceTag` para permitir ou negar acesso ao recurso com base nas tags anexadas ao recurso.

```
"StringEquals": { "aws:ResourceTag/environment": "production" }
```

Para saber se uma ação de API do Amazon EC2 oferece suporte ao controle de acesso usando a chave de condição `aws:ResourceTag`, consulte [Ações, recursos e chaves de condição para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html) . Como as ações de `Describe` não oferecem suporte a permissões em nível de recurso, especifique-as em uma declaração separada sem condições.

Para obter exemplos de políticas do IAM, consulte [Exemplo de políticas para controlar o acesso à API do Amazon EC2](ExamplePolicies_EC2.md). 

Se você permitir ou negar aos usuários o acesso a recursos com base em tags, considere negar explicitamente aos usuários a capacidade de adicionar essas tags ou removê-las dos mesmos recursos. Caso contrário, é possível que um usuário contorne suas restrições e obtenha acesso a um recurso modificando as tags.

## Conceder permissões a usuários, grupos e perfis
<a name="granting-iam-permissions"></a>

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos no Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

## Verificar se os usuários têm as permissões necessárias
<a name="check-required-permissions"></a>

Depois que você tiver criado uma política do IAM, recomendaremos verificar se ela concede aos usuários as permissões para usar as ações de API e os recursos específicos de que eles precisam antes de colocar a política em produção.

Primeiro, crie um usuário para fins de teste e anexe a política do IAM que você criou ao usuário de teste. Em seguia, faça uma solicitação como o usuário de teste.

Se a ação do Amazon EC2 que você estiver testando criar ou modificar um recurso, será necessário fazer a solicitação usando o parâmetro `DryRun` (ou executar o comando da AWS CLI com a opção `--dry-run`). Nesse caso, a chamada conclui a verificação da autorização, mas não conclui a operação. Por exemplo, é possível verificar se o usuário pode encerrar uma determinada instância sem efetivamente encerrá-la. Caso o usuário de teste tenha as permissões obrigatórias, a solicitação retorna `DryRunOperation`. Do contrário, ela retorna `UnauthorizedOperation`.

Caso a política não conceda ao usuário as permissões que você esperava ou caso ela seja muito permissiva, é possível ajustar a política conforme necessário e testá-la novamente até obter os resultados desejados. 

**Importante**  
Pode levar alguns minutos para que as alterações de política sejam propagadas até entrarem em vigor. Por isso, recomendamos que você aguarde cinco minutos antes de testar as atualizações da política.

Caso uma verificação de autorização falhe, a solicitação retorna uma mensagem codificada com informações de diagnóstico. É possível decodificar a mensagem usando a ação `DecodeAuthorizationMessage`. Para obter mais informações, consulte [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) na *Referência de API do AWS Security Token Service* e [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html).

# Exemplo de políticas para controlar o acesso à API do Amazon EC2
<a name="ExamplePolicies_EC2"></a>

É possível usar as políticas do IAM para conceder aos usuários as permissões necessárias para que eles trabalhem com o Amazon EC2. Para obter instruções detalhadas, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do usuário do IAM*.

Os exemplos a seguir mostram declarações de políticas que você pode usar para conceder aos usuários as permissões para o uso do Amazon EC2. Essas políticas são criadas para solicitações feitas com a AWS CLI ou com o AWS SDK. Nos exemplos a seguir, substitua cada *espaço reservado* por suas próprias informações.

**Topics**
+ [Acesso somente leitura](#iam-example-read-only)
+ [Restringir acesso a uma região específica](#iam-example-region)
+ [Trabalhar com instâncias](#iam-example-instances)
+ [Executar instâncias (RunInstances)](#iam-example-runinstances)
+ [Trabalhar com Instâncias spot](#iam-example-spot-instances)
+ [Trabalhar com Instâncias reservadas](#iam-example-reservedinstances)
+ [Marcar recursos](#iam-example-taggingresources)
+ [Trabalhar com funções do IAM](#iam-example-iam-roles)
+ [Trabalhar com tabelas de rotas](#iam-example-route-tables)
+ [Permitir que uma instância específica visualize recursos em outros serviços da AWS](#iam-example-source-instance)
+ [Trabalhar com modelos de execução](#iam-example-launch-templates)
+ [Trabalhar com metadados de instância](#iam-example-instance-metadata)
+ [Trabalhar com volumes e snapshots do Amazon EBS](#iam-example-ebs)

Para obter exemplos de políticas para trabalhar no console do Amazon EC2, consulte [Exemplo de políticas para controlar o acesso ao console do Amazon EC2](iam-policies-ec2-console.md).

## Exemplo: acesso somente leitura
<a name="iam-example-read-only"></a>

A política a seguir concede aos usuários permissões para utilizar todas as ações da API do Amazon EC2 cujos nomes começam com `Describe`. O elemento `Resource` usa um caractere curinga para indicar que os usuários podem especificar todos os recursos com essas ações da API. O caractere curinga \$1 também é necessário em casos onde a ação da API não é compatível com as permissões em nível de recurso. Para obter mais informações sobre quais ARNs é possível usar com quais ações de API do Amazon EC2, consulte [Ações, recursos e chaves de condição do Amazon EC2 no ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Os usuários não têm permissão para executar nenhuma ação nos recursos (a menos que outra declaração conceda a eles permissão para fazer isso) porque, por padrão, a permissão para usar ações da API é negada para os usuários.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    }
   ]
}
```

------

## Exemplo: restringir acesso a uma região específica
<a name="iam-example-region"></a>

A política a seguir nega permissão aos usuários para uso de todas as ações da API do Amazon EC2 a menos que a região seja a Europa (Frankfurt). Ela usa a chave de condição global `aws:RequestedRegion`, que é compatível com todas as ações da API do Amazon EC2.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Deny",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": "eu-central-1"
        }
      }
    }  
  ]
}
```

------

Como alternativa, é possível usar a chave de condição `ec2:Region`, que é específica ao Amazon EC2 e é compatível com todas as ações da API do Amazon EC2.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Deny",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "ec2:Region": "eu-central-1"
        }
      }
    }  
  ]
}
```

------

## Trabalhar com instâncias
<a name="iam-example-instances"></a>

**Topics**
+ [Exemplo: descrever, executar, interromper, iniciar e encerrar todas as instâncias](#iam-example-instances-all)
+ [Exemplo: descrever todas as instâncias e interromper, iniciar e encerrar somente instâncias específicas](#iam-example-instances-specific)

### Exemplo: descrever, executar, interromper, iniciar e encerrar todas as instâncias
<a name="iam-example-instances-all"></a>

A política a seguir concede aos usuários permissões para utilizar as ações da API especificadas no elemento `Action`. O elemento `Resource` usa um caractere curinga \$1 para indicar que os usuários podem especificar todos os recursos com essas ações da API. O caractere curinga \$1 também é necessário em casos onde a ação da API não é compatível com as permissões em nível de recurso. Para obter mais informações sobre quais ARNs é possível usar com quais ações de API do Amazon EC2, consulte [Ações, recursos e chaves de condição do Amazon EC2 no ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Os usuários não têm permissão para usar qualquer outra ação da API (a menos que outra declaração conceda a eles permissão para fazer isso) porque, por padrão, a permissão para usar ações da API são negadas para os usuários.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances", 
        "ec2:DescribeImages",
        "ec2:DescribeKeyPairs", 
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeAvailabilityZones",
        "ec2:RunInstances", 
        "ec2:TerminateInstances",
        "ec2:StopInstances", 
        "ec2:StartInstances"
      ],
      "Resource": "*"
    }
   ]
}
```

------

### Exemplo: descrever todas as instâncias e interromper, iniciar e encerrar somente instâncias específicas
<a name="iam-example-instances-specific"></a>

A política a seguir permite que os usuários descrevam todas as instâncias, iniciem e parem somente as instâncias i-1234567890abcdef0 e i-0598c7d356eba48d7 e encerrem somente instâncias na região `us-east-1` com a tag de recurso "`purpose=test`". 

A primeira declaração usa um caractere curinga \$1 para o elemento `Resource` para indicar que os usuários podem especificar todos os recursos com a ação. Nesse caso, os usuários podem listar todas as instâncias. O caractere curinga \$1 também é necessário em casos onde a ação da API não é compatível com permissões em nível de recurso (nesse caso, `ec2:DescribeInstances`). Para obter mais informações sobre quais ARNs é possível usar com quais ações de API do Amazon EC2, consulte [Ações, recursos e chaves de condição do Amazon EC2 no ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

A segunda declaração usa permissões em nível de recurso para as ações `StopInstances` e `StartInstances`. As instâncias específicas são indicadas por seus ARNs no elemento `Resource`.

A terceira declaração permite que os usuários encerrem todas as instâncias em na região `us-east-1` que pertencem à conta da AWS especificada, mas somente quando a instância tiver a tag `"purpose=test"`. O elemento `Condition` qualifica quando a declaração de política está em vigor. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Effect": "Allow",
      "Action": "ec2:DescribeInstances",
      "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action": [
        "ec2:StopInstances", 
        "ec2:StartInstances"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890abcdef0",
        "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "ec2:TerminateInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/purpose": "test"
         }
      }
   }

   ]
}
```

------

## Executar instâncias (RunInstances)
<a name="iam-example-runinstances"></a>

A ação da API [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) inicia uma ou mais Instâncias on-demand ou uma ou mais Instâncias spot. `RunInstances` requer uma AMI e cria uma instância. Os usuários podem especificar um par de chaves e um grupo de segurança na solicitação. A inicialização em uma VPC requer uma sub-rede, e cria uma interface de rede. A inicialização de uma AMI baseada no Amazon EBS cria um volume. Portanto, o usuário deve ter permissões para usar esses recursos do Amazon EC2. É possível criar um declaração de política que exija que os usuários especifiquem um parâmetro opcional em `RunInstances` ou restringir os usuários a valores específicos para um parâmetro.

Para obter mais informações sobre as permissões em nível de recurso que são necessárias para executar uma instância, consulte [Ações, recursos e chaves de condição do Amazon EC2 no ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Observe que, por padrão, os usuários não têm permissões para descrever, iniciar, interromper ou encerrar as instâncias resultantes. Uma maneira de conceder aos usuários permissão para gerenciar as instâncias resultantes é criar uma tag específica para cada instância e criar uma declaração que permita que eles gerenciem instâncias com aquela tag. Para obter mais informações, consulte [Trabalhar com instâncias](#iam-example-instances).

**Topics**
+ [AMIs](#iam-example-runinstances-ami)
+ [Tipos de instância](#iam-example-runinstances-instance-type)
+ [Sub-redes](#iam-example-runinstances-subnet)
+ [Volumes do EBS](#iam-example-runinstances-volumes)
+ [Tags](#iam-example-runinstances-tags)
+ [Tags em um modelo de execução](#iam-example-tags-launch-template)
+ [GPUs elásticas](#iam-example-runinstances-egpu)
+ [Modelos de execução](#iam-example-runinstances-launch-templates)

### AMIs
<a name="iam-example-runinstances-ami"></a>

A política a seguir permite que os usuários iniciem instâncias usando apenas as AMIs especificadas, `ami-9e1670f7` e `ami-45cf5c3c`. Os usuários não podem executar uma instância usando outras AMIs (a menos que outra declaração conceda permissão para os usuários fazerem isso).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1::image/ami-9e1670f7",
        "arn:aws:ec2:us-east-1::image/ami-45cf5c3c",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*",
        "arn:aws:ec2:us-east-1:111122223333:subnet/*",
        "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ]
    }
   ]
}
```

------

Como alternativa, a política a seguir permite que os usuários executem instâncias em todas as AMIs pertencentes à Amazon ou a determinados parceiros confiáveis e verificados. O elemento `Condition` da primeira declaração testa se `ec2:Owner` é `amazon`. Os usuários não podem executar uma instância usando outras AMIs (a menos que outra declaração conceda permissão para os usuários fazerem isso).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Tipos de instância
<a name="iam-example-runinstances-instance-type"></a>

A política a seguir permite que os usuários executem instâncias usando somente o tipo de instância `t2.micro` ou `t2.small`, o que é possível fazer para controlar os custos. Os usuários não podem executar instâncias maiores porque o elemento `Condition` da primeira declaração testa se `ec2:InstanceType` é `t2.micro` ou `t2.small`. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

Se desejar, é possível criar uma política que negue aos usuários permissões para executar qualquer instância, com exceção dos tipos de instância `t2.micro` e `t2.small`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        { 
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringNotEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Sub-redes
<a name="iam-example-runinstances-subnet"></a>

A política a seguir permite que os usuários executem instâncias usando apenas a sub-rede especificada, `subnet-12345678`. O grupo não pode executar instâncias em outra sub-rede (a menos que outra declaração conceda permissão para os usuários fazerem isso).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678",
        "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1::image/ami-*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*"
      ]
    }
   ]
}
```

------

Se desejar, é possível criar uma política que negue aos usuários permissões para executar uma instância em qualquer outra sub-rede. A declaração faz isso negando permissão para criar uma interface de rede, exceto quando a sub-rede `subnet-12345678` for especificada. Essa negação substitui qualquer outra política criada para permitir a execução de instâncias em outras sub-redes.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ],
      "Condition": {
         "ArnNotEquals": {
            "ec2:Subnet": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Volumes do EBS
<a name="iam-example-runinstances-volumes"></a>

A política a seguir permite que os usuários executem instâncias somente se os volumes do EBS para a instância estiverem criptografados. O usuário deve executar uma instância em uma AMI criada com snapshots criptografados, para garantir que o volume raiz esteja criptografado. Qualquer volume adicional que o usuário anexe à instância durante a execução também deve estar criptografado.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
                {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:volume/*"
            ],
            "Condition": {
                "Bool": {
                    "ec2:Encrypted": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        }
    ]
}
```

------

### Tags
<a name="iam-example-runinstances-tags"></a>

**Marque instâncias na criação**

A política a seguir permite que os usuários executem instâncias e as marquem durante a criação. Para ações de criação de recursos que aplicam tags, os usuários devem ter permissões para usar a ação `CreateTags`. A segunda declaração usa a chave de condição `ec2:CreateAction` para permitir que os usuários criem tags somente no contexto de `RunInstances` e somente para instâncias. Os usuários não podem marcar recursos existentes e não podem marcar volumes usando a solicitação `RunInstances`. 

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**Marque instâncias e volumes na criação com tags específicas**

As política a seguir inclui a chave de condição `aws:RequestTag` que requer que os usuários marquem todas as instâncias e os volumes criados por `RunInstances` com as tags `environment=production` e `purpose=webserver`. Se os usuários não passarem essas tags específicas ou não especificarem nenhuma tag, haverá talha na solicitação.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/environment": "production" ,
             "aws:RequestTag/purpose": "webserver"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**Marque instâncias e volumes na criação com pelo menos uma tag específica**

A política a seguir usa o modificador `ForAnyValue` na condição `aws:TagKeys` para indicar que pelo menos uma tag deve ser especificada na solicitação e deve conter a chave `environment` ou `webserver`. A tag deve ser aplicada a instâncias e a volumes. Qualquer valor de tag pode ser especificado na solicitação. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
          "ForAnyValue:StringEquals": {
              "aws:TagKeys": ["environment","webserver"]
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
          "StringEquals": {
              "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**Se forem marcadas na criação, as instâncias deverão ser marcadas com uma tag específica**

Na política a seguir, os usuários não precisam especificar tags na solicitação, mas se o fizerem, a tag deverá ser `purpose=test`. Nenhuma outra tag é permitida. Os usuários podem aplicar as tags a qualquer recurso marcável na solicitação `RunInstances`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/purpose": "test",
             "ec2:CreateAction" : "RunInstances"
          },
          "ForAllValues:StringEquals": {
              "aws:TagKeys": "purpose"
          }
       }
    }
  ]
}
```

------

Para não permitir que ninguém adicione tags na criação para RunInstances



------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

Permitir apenas tags específicas para spot-instances-request. A inconsistência surpresa número 2 entra em jogo aqui. Em circunstâncias normais, não especificar tag alguma resultará em Não autenticado. No caso de spot-instances-request, esta política não será avaliada se não houver tags spot-instances-request, portanto, uma solicitação Spot on Run sem tag será bem-sucedida. 

### Tags em um modelo de execução
<a name="iam-example-tags-launch-template"></a>

No exemplo a seguir, os usuários poderão executar instâncias, mas apenas se usarem um modelo de execução específico (`lt-09477bcd97b0d310e`). A chave de condição `ec2:IsLaunchTemplateResource` impede que os usuários substituam alguns recursos especificados no modelo de execução. A segunda parte da instrução permite que os usuários marquem instâncias durante a criação; essa parte da instrução será necessária se as tags forem especificadas para a instância no modelo de execução.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

### GPUs elásticas
<a name="iam-example-runinstances-egpu"></a>

Na política a seguir, os usuários podem executar uma instância e especificar uma GPU elástica para anexar à instância. Os usuários podem executar instâncias em qualquer região, mas só podem anexar uma GPU elástica durante uma execução na região `us-east-2`. 

A chave de condição `ec2:ElasticGpuType` garante que as instâncias usem o tipo de GPU elástico `eg1.medium` ou `eg1.large`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
             {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:elastic-gpu/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-2",
                    "ec2:ElasticGpuType": [
                        "eg1.medium",
                        "eg1.large"
                    ]
                }  
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:111122223333:network-interface/*",
                "arn:aws:ec2:*:111122223333:instance/*",
                "arn:aws:ec2:*:111122223333:subnet/*",
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:key-pair/*",
                "arn:aws:ec2:*:111122223333:security-group/*"
            ]
        }
    ]
}
```

------

### Modelos de execução
<a name="iam-example-runinstances-launch-templates"></a>

No exemplo a seguir, os usuários poderão executar instâncias, mas apenas se usarem um modelo de execução específico (`lt-09477bcd97b0d310e`). Os usuários podem substituir quaisquer parâmetros no modelo de execução especificando os parâmetros na ação `RunInstances`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e" 
          }
       }
    }
  ]
}
```

------

Neste exemplo, os usuários poderão executar instâncias apenas se usarem um modelo de execução. A política usa a chave de condição `ec2:IsLaunchTemplateResource` para impedir que os usuários substituam os ARNs pré-existentes no modelo de execução.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    }
  ]
}
```

------

No exemplo a seguir, a política permitirá que o usuário execute instâncias, mas apenas se usarem um modelo de execução. Os usuários não podem substituir os parâmetros de interface de rede e sub-rede na solicitação; esses parâmetros só podem ser especificados no modelo de execução. A primeira parte da instrução usa o elemento [NotResource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notresource.html) para permitir todos os outros recursos, exceto interfaces de rede e sub-redes. A segunda parte da instrução permite recursos de interface de rede e sub-rede, mas somente se eles forem originários do modelo de execução.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                      "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          }
       }
    },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                   "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    }
  ]
}
```

------

O exemplo a seguir permitirá que os usuários executem instâncias somente se usarem um modelo de execução, e somente se o modelo de execução tiver a tag `Purpose=Webservers`. Os usuários não podem substituir nenhum dos parâmetros do modelo de execução na ação `RunInstances`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
         "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
       "StringEquals": {
           "aws:ResourceTag/Purpose": "Webservers" 
        }
       }
     }
  ]
}
```

------

## Trabalhar com Instâncias spot
<a name="iam-example-spot-instances"></a>

É possível usar a ação RunInstances para criar solicitações de instância spot e marcar solicitações de instância spot na criação. O recurso a ser especificado para RunInstances é `spot-instances-request`.

O recurso `spot-instances-request` é avaliado na política do IAM da seguinte forma:
+ Se você não marcar uma solicitação de instância spot na criação, o Amazon EC2 não avaliará o recurso `spot-instances-request` na instrução RunInstances.
+ Se você marcar uma solicitação de instância spot na criação, o Amazon EC2 avaliará o recurso `spot-instances-request` na instrução RunInstances.

Portanto, para o recurso `spot-instances-request`, as seguintes regras se aplicam à diretiva do IAM:
+ Caso você use RunInstances para criar uma solicitação de instância spot e não pretenda marcar a solicitação de instância spot na criação, não será necessário permitir explicitamente o recurso `spot-instances-request`. A chamada terá êxito.
+ Caso use RunInstances para criar uma solicitação de instância spot e pretenda marcar a solicitação de instância spot na criação, será necessário incluir o recurso `spot-instances-request` na instrução de permissão RunInstances, caso contrário, a chamada falhará.
+ Caso você use RunInstances para criar uma solicitação de instância spot e pretenda marcar a solicitação de instância spot na criação, especifique o recurso `spot-instances-request` ou um curinga `*` na instrução de permissão CreateTags, caso contrário, a chamada falhará. 

É possível solicitar Instâncias spot usando RunInstances ou RequestSpotInstances. Os exemplos de políticas do IAM a seguir se aplicam somente ao solicitar Instâncias spot usando RunInstances.

**Exemplo: solicitar Instâncias spot usando RunInstances**

A política a seguir permite que os usuários solicitem Instâncias spot usando a ação RunInstances. O recurso `spot-instances-request`, que é criado por RunInstances, solicita Instâncias spot.

**nota**  
Para usar RunInstances a fim de criar solicitações de instância spot, é possível omitir `spot-instances-request` da lista `Resource` caso pretenda marcar as solicitações de instância spot na criação. Isso ocorre porque o Amazon EC2 não avalia o recurso `spot-instances-request` na instrução RunInstances se a solicitação de instância spot não estiver marcada na criação.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        }
    ]
}
```

------

**Atenção**  
**NÃO COMPATÍVEL – Exemplo: negar permissão aos usuários para solicitar Instâncias spot usando RunInstances**  
A política a seguir não é compatível com o recurso `spot-instances-request`.  
A política a seguir destina-se a conceder permissão aos usuários para iniciar Instâncias on-demand, mas negar a permissão de solicitação Instâncias spot. O recurso `spot-instances-request`, criado por RunInstances, é o recurso que solicita Instâncias spot. A segunda instrução destina-se a negar a ação RunInstances para o recurso `spot-instances-request`. No entanto, esta condição não é compatível porque o Amazon EC2 não avalia o recurso `spot-instances-request` na instrução RunInstances se a solicitação de instância spot não estiver marcada na criação.  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*"
            ]
        },
        {
            "Sid": "DenySpotInstancesRequestsNOTSUPPORTEDDONOTUSE",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
        }
    ]
}
```

**Exemplo: marcar solicitações de instância spot na criação**

A política a seguir permite que os usuários marquem todos os recursos criados durante o lançamento da instância. A primeira instrução permite que RunInstances crie os recursos listados. O recurso `spot-instances-request`, criado por RunInstances, é o recurso que solicita Instâncias spot. A segunda instrução fornece um curinga `*` para permitir que todos os recursos sejam marcados quando criados no momento da execução da instância.

**nota**  
Se você marcar uma solicitação de instância spot na criação, o Amazon EC2 avaliará o recurso `spot-instances-request` na instrução RunInstances. Portanto, permita explicitamente o recurso `spot-instances-request` para a ação RunInstances, caso contrário, a chamada falhará.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

**Exemplo: negar marcações na criação para solicitações de instância spot**

A política a seguir nega aos usuários a permissão para marcar os recursos criados durante a execução da instância.

A primeira instrução permite que RunInstances crie os recursos listados. O recurso `spot-instances-request`, criado por RunInstances, é o recurso que solicita Instâncias spot. A segunda instrução fornece um curinga `*` para evitar que todos os recursos sejam marcados, quando criados, no momento da execução da instância. Se `spot-instances-request` ou qualquer outro recurso estiver marcado na criação, a chamada RunInstances falhará.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "DenyTagResources",
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

**Atenção**  
**NÃO COMPATÍVEL – Exemplo: permitir a criação de uma solicitação de instância spot apenas se lhe for atribuída uma etiqueta específica**  
A política a seguir não é compatível com o recurso `spot-instances-request`.  
A política a seguir destina-se a conceder permissão à RunInstances para criar uma solicitação de instância spot somente se a solicitação for marcada com uma tag específica.   
A primeira instrução permite que RunInstances crie os recursos listados.  
A segunda instrução destina-se a conceder permissão aos usuários para criar uma solicitação de instância spot somente se a solicitação tiver a etiqueta `environment=production`. Se essa condição for aplicada a outros recursos criados por RunInstances, não especificar nenhuma tag gerará um erro `Unauthenticated`. No entanto, se nenhuma etiqueta for especificada para a solicitação de instância spot, o Amazon EC2 não avaliará o recurso `spot-instances-request` na instrução RunInstances, o que resultará em solicitações de instância spot não marcadas sendo criadas pela RunInstances.  
Observe que especificar outra etiqueta, além de `environment=production` gera um erro `Unauthenticated`, pois se um usuário marca uma solicitação de instância spot, o Amazon EC2 avalia o recurso `spot-instances-request` na instrução RunInstances.  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*"
            ]
        },
        {
            "Sid": "RequestSpotInstancesOnlyIfTagIsEnvironmentProductionNOTSUPPORTEDDONOTUSE",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }

    ]
}
```

**Exemplo: negar a criação de uma solicitação de instância spot se lhe for atribuída uma etiqueta específica**

A política a seguir nega à RunInstances a permissão para criar uma solicitação de instância spot se a solicitação estiver marcada com `environment=production`. 

A primeira instrução permite que RunInstances crie os recursos listados.

A segunda instrução nega permissão aos usuários para criar uma solicitação de instância spot se a solicitação tiver a etiqueta `environment=production`. Especificar `environment=production` como tag gerará um erro `Unauthenticated`. Especificar outras tags ou não especificar tags resultará na criação de uma solicitação de instância spot.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "DenySpotInstancesRequests",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

## Exemplo: trabalhar com Instâncias reservadas
<a name="iam-example-reservedinstances"></a>

A política a seguir concede aos usuários permissão para visualizar, modificar e comprar Instâncias reservadas na sua conta.

Não é possível definir permissões em nível de recurso para instâncias reservadas. Essa política significa que os usuários têm acesso a todas as Instâncias reservadas na conta.

O elemento `Resource` usa um caractere curinga \$1 para indicar que os usuários podem especificar todos os recursos com a ação. Nesse caso, os usuários podem listar e modificar todas as Instâncias reservadas na conta. Eles também podem comprar Instâncias reservadas usando as credenciais da conta. O caractere curinga \$1 também é necessário em casos onde a ação da API não é compatível com as permissões em nível de recurso.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeReservedInstances", 
        "ec2:ModifyReservedInstances",
        "ec2:PurchaseReservedInstancesOffering", 
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeReservedInstancesOfferings"
      ],
      "Resource": "*"
    }
   ]
}
```

------

Para permitir que os usuários exibam e modifiquem as Instâncias reservadas na conta, mas não comprem novas Instâncias reservadas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeReservedInstances", 
        "ec2:ModifyReservedInstances",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Exemplo: marcar recursos
<a name="iam-example-taggingresources"></a>

A política a seguir permite que os usuários usem a ação `CreateTags` para aplicar tags a uma instância somente se a tag contiver a chave `environment` e o valor `production`. Nenhuma outra tag é permitida, e o usuário não pode aplicar tags em nenhum outro tipo de recurso.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        }
    ]
}
```

------

A política a seguir permite que os usuários marquem qualquer recurso marcável que já tenha uma tag com a chave `owner` e um valor do nome de usuário. Além disso, os usuários devem especificar uma tag com uma chave de `anycompany:environment-type` e um valor de `test` ou de `prod` na solicitação. Os usuários podem especificar tags adicionais na solicitação.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/anycompany:environment-type": ["test","prod"],
                    "aws:ResourceTag/owner": "${aws:username}"
                } 
            }
        }
    ]
}
```

------

É possível criar uma política do IAM que permite que os usuários excluam tags específicas de um recurso. Por exemplo, a política a seguir permite que os usuários excluam tags de um volume se as chaves das tags especificadas na solicitação forem `environment` ou `cost-center`. Qualquer valor pode ser especificado para a tag, mas a chave da tag deve corresponder a uma das chaves especificadas.

**nota**  
Se você excluir um recurso, todas as tags associadas ao recurso também serão excluídas. Os usuários não precisam de permissões para utilizar a ação `ec2:DeleteTags` para excluir um recurso que tenha tags. Eles precisam apenas das permissões para executar a ação de exclusão.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Allow",
      "Action": "ec2:DeleteTags",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["environment","cost-center"]
        }
      }
    }
  ]
}
```

------

Essa política permite que os usuários excluam somente a tag `environment=prod` em qualquer recurso e apenas se o recurso já estiver marcado com a chave do `owner` e com um valor do nome de usuário. Os usuários não podem excluir nenhuma outra tag de um recurso.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": "prod",
          "aws:ResourceTag/owner": "${aws:username}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["environment"]
        }
      }
    }
  ]
}
```

------

## Exemplo: trabalhar com funções do IAM
<a name="iam-example-iam-roles"></a>

A política a seguir permite que os usuários anexem, substituam e desanexem uma função do IAM para instâncias que tenham a tag `department=test`. As substituição ou a desanexação de uma função do IAM requer um ID de associação, portanto, a política também concede aos usuários permissão para usar a ação `ec2:DescribeIamInstanceProfileAssociations`. 

Os usuários devem ter permissão para usar a ação `iam:PassRole` para passar o perfil para a instância. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AssociateIamInstanceProfile",
        "ec2:ReplaceIamInstanceProfileAssociation",
        "ec2:DisassociateIamInstanceProfile"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/department":"test"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeIamInstanceProfileAssociations",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/DevTeam*"
    }
  ]
}
```

------

A política a seguir permite que os usuários anexem ou substituam uma função do IAM para qualquer instância. Os usuários podem anexar ou substituir apenas funções do IAM com nomes que começam com `TestRole-`. Para a ação `iam:PassRole`, especifique o nome da função do IAM e não o perfil da instância (se os nomes forem diferentes). Para obter mais informações, consulte [Perfis de instância](iam-roles-for-amazon-ec2.md#ec2-instance-profile).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssociateIamInstanceProfile",
                "ec2:ReplaceIamInstanceProfileAssociation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeIamInstanceProfileAssociations",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/TestRole-*"
        }
    ]
}
```

------

## Exemplo: trabalhar com tabelas de rotas
<a name="iam-example-route-tables"></a>

A política a seguir permite aos usuários adicionar, remover e substituir rotas em tabelas de rotas associadas à VPC `vpc-ec43eb89` somente. Para especificar uma VPC para a chave de condição `ec2:Vpc`, especifique o ARN total da VPC.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteRoute",
                "ec2:CreateRoute",
                "ec2:ReplaceRoute"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:route-table/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-ec43eb89"
                }
            }
        }
    ]
}
```

------

## Exemplo: permitir que uma instância específica visualize recursos em outros serviços da AWS
<a name="iam-example-source-instance"></a>

O exemplo a seguir é de uma política que é possível anexar a uma função do IAM. A política permite que uma instância exiba recursos em vários serviços da AWS. Ela usa a chave de condição global `ec2:SourceInstanceARN` para especificar que a instância na qual a solicitação é feita deve ser a instância `i-093452212644b0dd6`. Se a mesma função do IAM estiver associada a outra instância, a outra instância não poderá executar nenhuma dessas ações.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVolumes",
                "s3:ListAllMyBuckets",
                "dynamodb:ListTables",
                "rds:DescribeDBInstances"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnEquals": {
                    "ec2:SourceInstanceARN": "arn:aws:ec2:us-east-1:111122223333:instance/i-093452212644b0dd6"
                }
            }
        }
    ]
}
```

------

## Exemplo: trabalhar com modelos de execução
<a name="iam-example-launch-templates"></a>

A política a seguir permite que os usuários criem uma versão de modelo de execução e alterem um modelo de execução, mas somente um modelo de execução específico (`lt-09477bcd97b0d3abc`). Os usuários não podem trabalhar com outros modelos de execução.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
      "Action": [
        "ec2:CreateLaunchTemplateVersion",
        "ec2:ModifyLaunchTemplate"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d3abc"
    }
  ]
}
```

------

A política a seguir permite que os usuários excluam qualquer modelo de execução e versão de modelo de execução, desde que o modelo tenha a tag `Purpose`=`Testing`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Action": [
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteLaunchTemplateVersions"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Testing"
        }
      }
    }
  ]
}
```

------

## Trabalhar com metadados de instância
<a name="iam-example-instance-metadata"></a>

As políticas a seguir garantem que os usuários possam recuperar somente [metadados de instância](ec2-instance-metadata.md) usando o Serviço de metadados da instância versão 2 (IMDSv2). É possível combinar as quatro políticas a seguir em uma única política com quatro instruções. Quando combinadas como uma única política, é possível usar a política como uma política de controle de serviços (SCP). Ela pode funcionar tão bem como uma política de *negação* aplicada a uma política existente do IAM (retirando e limitando a permissão existente) ou como uma SCP aplicada globalmente em uma conta, uma unidade organizacional (UO) ou uma organização inteira.

**nota**  
As seguintes políticas de opções de metadados de RunInstances devem ser usadas em conjunto com uma política que concede ao principal permissões para executar uma instância com RunInstances. Se o principal também não tiver permissões para RunInstances, não poderá executar uma instância. Para obter mais informações, consulte as políticas em [Trabalhar com instâncias](#iam-example-instances) e [Executar instâncias (RunInstances)](#iam-example-runinstances).

**Importante**  
Se você usar grupos do Auto Scaling e precisar exigir o uso do IMDSv2 em todas as novas instâncias, seus grupos do Auto Scaling deverão usar *modelos de execução*.  
Quando um grupo do Auto Scaling usa um modelo de execução, as permissões de `ec2:RunInstances` do principal do IAM são verificadas quando um novo grupo do Auto Scaling é criado. Elas também são verificadas quando um grupo existente do Auto Scaling é atualizado para usar um novo modelo de execução ou uma nova versão de um modelo de execução.  
As restrições sobre o uso do IMDSv1 em principais do IAM para `RunInstances` são verificadas somente quando um grupo do Auto Scaling que está usando um modelo de inicialização é criado ou atualizado. Para um grupo do Auto Scaling configurado para usar o modelo de execução `Latest` ou `Default`, as permissões não são verificadas quando uma nova versão do modelo de execução é criada. Para que as permissões sejam verificadas, configure o grupo do Auto Scaling para usar uma *versão específica* do modelo de execução.  
Desabilite o uso de configurações de execução para todas as contas em sua organização usando SCPs (service control policies - políticas de controle de serviço) ou limites de permissões do IAM para novos principais criados. Para principais existentes do IAM com permissões de grupo do Auto Scaling, atualize suas políticas associadas com essa chave de condição. Para desabilitar o uso de configurações de execução, crie ou modifique a SCP relevante, o limite de permissões ou a política do IAM com a `"autoscaling:LaunchConfigurationName"` chave de condição com o valor especificado como `null`.
Para novos modelos de execução, configure as opções de metadados da instância no modelo de execução. Para modelos de execução existentes, crie uma versão do modelo de execução e configure as opções de metadados da instância na nova versão.
Na política que concede a qualquer principal permissão para usar um modelo de execução, restrinja a associação de `$latest` e `$default` especificando `"autoscaling:LaunchTemplateVersionSpecified": "true"`. Ao restringir o uso a uma versão específica de um modelo de execução, é possível garantir que novas instâncias serão executadas usando a versão na qual as opções de metadados da instância estão configuradas. Para obter mais informações, consulte [LaunchTemplateSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_LaunchTemplateSpecification.html) no *Referência da API do Amazon EC2 Auto Scaling*, especificamente o parâmetro `Version`.
Para um grupo do Auto Scaling que usa uma configuração de execução, substitua a configuração de execução por um modelo de execução. Para obter mais informações, consulte [Migração de seus grupos do Auto Scaling para a execução de modelos](https://docs.aws.amazon.com/autoscaling/ec2/userguide/migrate-to-launch-templates.html) no *Guia do usuário do Amazon EC2 Auto Scaling*.
Para um grupo do Auto Scaling que usa um modelo de execução, certifique-se de que ele usa um novo modelo de execução com as opções de metadados da instância configuradas ou usa uma nova versão do modelo de execução atual com as opções de metadados da instância configuradas. Para obter mais informações, consulte [update-auto-scaling-group](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html).

**Topics**
+ [Exigir o uso de IMDSv2](#iam-example-instance-metadata-requireIMDSv2)
+ [Negar a rejeição do IMDSv2](#iam-example-instance-metadata-denyoptoutIMDSv2)
+ [Especificar o limite máximo de saltos](#iam-example-instance-metadata-maxHopLimit)
+ [Limitar quem pode modificar as opções de metadados da instância](#iam-example-instance-metadata-limit-modify-IMDS-options)
+ [Exigir que as credenciais de função sejam recuperadas de IMDSv2](#iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials)

### Exigir o uso de IMDSv2
<a name="iam-example-instance-metadata-requireIMDSv2"></a>

A política a seguir especifica que não é possível chamar a API RunInstances a menos que a instância também esteja optada para exigir o uso de IMDSv2 (indicado por `"ec2:MetadataHttpTokens": "required"`). Se você não especificar que a instância requer IMDSv2, receberá um erro `UnauthorizedOperation` ao chamar a API RunInstances.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireImdsV2",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotEquals": {
                    "ec2:MetadataHttpTokens": "required"
                }
            }
        }
    ]
}
```

------

### Negar a rejeição do IMDSv2
<a name="iam-example-instance-metadata-denyoptoutIMDSv2"></a>

A política a seguir especifica que não é possível chamar a API `ModifyInstanceMetadataOptions` e permitir a opção de IMDSv1 ou IMDSv2. Se você chamar a API `ModifyInstanceMetadataOptions`, o atributo `HttpTokens` deverá ser definido como `required`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyIMDSv1HttpTokensModification",
        "Effect": "Deny",
        "Action": "ec2:ModifyInstanceMetadataOptions",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotEquals": {
                "ec2:Attribute/HttpTokens": "required"
            },
            "Null": {
                "ec2:Attribute/HttpTokens": false
            }
        }
    }]
}
```

------

### Especificar o limite máximo de saltos
<a name="iam-example-instance-metadata-maxHopLimit"></a>

A política a seguir especifica que não é possível chamar a API RunInstances a menos que também especifique um limite de saltos, que não pode ser superior a 3. Se isso não for feito, você receberá um erro `UnauthorizedOperation` ao chamar a API RunInstances.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "MaxImdsHopLimit",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "NumericGreaterThan": {
                    "ec2:MetadataHttpPutResponseHopLimit": "3"
                }
            }
        }
    ]
}
```

------

### Limitar quem pode modificar as opções de metadados da instância
<a name="iam-example-instance-metadata-limit-modify-IMDS-options"></a>

A política a seguir permite que apenas usuários com o perfil `ec2-imds-admins` façam alterações. nas opções de metadados da instância. Se qualquer principal diferente da função `ec2-imds-admins` tentar chamar a API ModifyInstanceMetadataOptions, receberá um erro `UnauthorizedOperation`. Essa instrução pode ser usada para controlar o uso da API ModifyInstanceMetadataOptions. No momento, não há controles de acesso refinados (condições) para a API ModifyInstanceMetadataOptions.

### Exigir que as credenciais de função sejam recuperadas de IMDSv2
<a name="iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials"></a>

A política a seguir especifica que, se essa política for aplicada a uma função e a função for assumida pelo serviço do EC2 e as credenciais resultantes forem usadas para assinar uma solicitação, a solicitação deverá ser assinada pelas credenciais de função do EC2 recuperadas do IMDSv2. Caso contrário, todas as suas chamadas de API receberão um erro `UnauthorizedOperation`. Essa instrução/política pode ser aplicada de modo geral porque, se a solicitação não for assinada por credenciais de função do EC2, ela não terá efeito.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireAllEc2RolesToUseV2",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NumericLessThan": {
                    "ec2:RoleDelivery": "2.0"
                }
            }
        }
    ]
}
```

------

## Trabalhar com volumes e snapshots do Amazon EBS
<a name="iam-example-ebs"></a>

Para obter exemplos de políticas para trabalhar com volumes e snapshots do Amazon EBS, consulte [Exemplos de políticas baseadas em identidade para o Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/security_iam_id-based-policy-examples.html).

# Exemplo de políticas para controlar o acesso ao console do Amazon EC2
<a name="iam-policies-ec2-console"></a>

É possível usar as políticas do IAM para conceder aos usuários as permissões necessárias para que eles trabalhem com o Amazon EC2. Para obter instruções detalhadas, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do usuário do IAM*.

O console usa ações de API adicionais para seus recursos, portanto, essas políticas talvez não funcionem como esperado. Por exemplo, um usuário que tem permissão para usar somente a ação da API `DescribeVolumes` encontrará erros ao tentar visualizar volumes no console. Esta seção demonstra políticas que permitem que os usuários trabalhem com partes específicas do console. Para obter informações adicionais sobre como criar políticas para o console do Amazon EC2, consulte a seguinte postagem do Blog de segurança da AWS: [Granting Users Permission to Work in the Amazon EC2 Console (Conceder permissão aos usuários para trabalhar no console do Amazon EC2)](https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/).

Os exemplos a seguir mostram declarações de políticas que você pode usar para conceder aos usuários as permissões para o uso do Amazon EC2. Substitua cada *espaço reservado para entrada do usuário* por suas próprias informações. Essas políticas são criadas para solicitações feitas com o Console de gerenciamento da AWS. O console do Amazon EC2 pode chamar várias ações de API para exibir um único recurso, e isso talvez não seja óbvio até que o usuário tente uma tarefa e o console exiba um erro. Para obter mais informações adicionais, consulte a seguinte postagem do Blog de segurança da AWS: [Granting Users Permission to Work in the Amazon EC2 Console](https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/).

**Topics**
+ [Acesso somente leitura](#ex-read-only)
+ [Use o assistente de início de instância do EC2](#ex-launch-wizard)
+ [Trabalhar com grupos de segurança](#ex-security-groups)
+ [Trabalhar com endereços IP elásticos](#ex-eip)
+ [Trabalhar com Instâncias reservadas](#ex-reservedinstances)

Para obter ajuda para descobrir quais ações de API são necessárias para a execução de tarefas no console, você pode usar um serviço para registrar chamadas, como o AWS CloudTrail. Se sua política não conceder permissão para criar ou modificar um recurso específico, o console exibirá uma mensagem codificada com informações de diagnóstico. É possível decodificar a mensagem usando a ação de API [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) para AWS STS, ou o comando [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html) na AWS CLI.

## Exemplo: acesso somente leitura
<a name="ex-read-only"></a>

Para permitir que os usuários visualizem todos os recursos no console do Amazon EC2, é possível usar a mesma política como no exemplo a seguir: [Exemplo: acesso somente leitura](ExamplePolicies_EC2.md#iam-example-read-only). Os usuários não podem executar nenhuma ação nesses recursos ou criar novos recursos, a menos que outra declaração conceda permissão a eles para fazer isso.

**Visualizar instâncias, AMIs e snapshots**

Como alternativa, é possível fornecer acesso somente leitura a um subconjunto de recursos. Para fazer isso, substitua o caractere curinga \$1 na ação de API `ec2:Describe` por ações `ec2:Describe` específicas para cada recurso. A política a seguir permite que os usuários visualizem todas as instâncias, AMIs e snapshots no console do Amazon EC2. A ação `ec2:DescribeTags` permite que os usuários visualizem AMIs públicas. O console requer que as informações de marcação exibam AMIs públicas. No entanto, é possível remover essa ação para permitir que os usuários visualizem somente AMIs privadas.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances", 
         "ec2:DescribeImages",
         "ec2:DescribeTags", 
         "ec2:DescribeSnapshots"
      ],
      "Resource": "*"
   }
   ]
}
```

------

**nota**  
As ações da API `ec2:Describe*` do Amazon EC2 não oferecem suporte a permissões em nível de recurso, portanto, não é possível controlar quais recursos individuais os usuários podem visualizar no console. Portanto, o caractere curinga \$1 é necessário no elemento `Resource` da declaração acima. Para obter mais informações sobre quais ARNs é possível usar com quais ações de API do Amazon EC2, consulte [Ações, recursos e chaves de condição do Amazon EC2 no ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

**Visualizar instâncias e métricas do CloudWatch**

A política a seguir permite que os usuários visualizem instâncias no console do Amazon EC2, bem como alarmes e métricas do CloudWatch na guia **Monitoring (Monitoramento)** da página **Instances (Instâncias)**. O console do Amazon EC2 usa a API do CloudWatch para exibir os alarmes e as métricas, portanto, você deve conceder aos usuários permissão para usar as ações `cloudwatch:DescribeAlarms`, `cloudwatch:DescribeAlarmsForMetric`, `cloudwatch:ListMetrics`, `cloudwatch:GetMetricStatistics` e `cloudwatch:GetMetricData`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances",
         "ec2:DescribeInstanceTypes",
         "cloudwatch:DescribeAlarms",
         "cloudwatch:DescribeAlarmsForMetric",
         "cloudwatch:ListMetrics",
         "cloudwatch:GetMetricStatistics",
         "cloudwatch:GetMetricData"
      ],
      "Resource": "*"
   }
   ]
}
```

------

## Exemplo: uso do assistente de início de instância do EC2
<a name="ex-launch-wizard"></a>

O assistente de início de instância do Amazon EC2 é uma tela com opções para configurar e iniciar uma instância. Sua política deve incluir permissão para usar as ações de API que permitem que os usuários trabalhem com as opções do assistente. Se a política não incluir a permissão para usar essas ações, alguns itens do assistente poderão não ser carregados corretamente, e os usuários não poderão concluir uma execução.

**Acesso básico ao assistente de início de instância**

Para concluir uma execução com êxito, os usuários devem receber permissão para usar a ação de API `ec2:RunInstances` e, pelo menos, as seguintes ações de API:
+ `ec2:DescribeImages`: para visualizar e selecionar uma AMI.
+ `ec2:DescribeInstanceTypes`: para visualizar e selecionar um tipo de instância.
+ `ec2:DescribeVpcs`: para ver as opções de rede disponíveis.
+ `ec2:DescribeSubnets`: para visualizar todas as sub-redes disponíveis da VPC escolhida. 
+ `ec2:DescribeSecurityGroups` ou `ec2:CreateSecurityGroup`: para visualizar e selecionar um grupo de segurança existente ou criar um. 
+ `ec2:DescribeKeyPairs` ou `ec2:CreateKeyPair`: para selecionar um par de chaves ou criar um par.
+ `ec2:AuthorizeSecurityGroupIngress`: para adicionar regras de entrada.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:CreateSecurityGroup",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateKeyPair"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*"
        }
    ]
}
```

------

É possível adicionar ações de API à sua política para fornecer mais opções aos usuários, por exemplo:
+ `ec2:DescribeAvailabilityZones`: para ver e selecionar uma zona de disponibilidade específica.
+ `ec2:DescribeNetworkInterfaces`: para visualizar e selecionar interfaces de rede existentes para a sub-rede selecionada.
+ Para adicionar regras de saída para grupos de segurança da VPC, os usuários devem receber a permissão para usar a ação de API `ec2:AuthorizeSecurityGroupEgress`. Para modificar ou excluir regras existentes, os usuários devem receber permissão para usar a ação de API relevante `ec2:RevokeSecurityGroup*`.
+ `ec2:CreateTags`: para marcar os recursos criados por `RunInstances`. Para obter mais informações, consulte [Conceder permissão para marcar recursos do Amazon EC2 durante a criação](supported-iam-actions-tagging.md). Se os usuários não tiverem permissão para usar essa ação e tentarem aplicar tags na página de marcação do assistente de início de instância, haverá falha na execução.
**Importante**  
Especifique um **Name** (Nome) ao iniciar uma instância cria uma etiqueta e exige a ação `ec2:CreateTags`. Tenha cuidado ao conceder aos usuários permissão para usar a ação `ec2:CreateTags`, pois isso limita sua capacidade de usar a chave de condição `aws:ResourceTag` para restringir o uso de outros recursos. Se você conceder aos usuários permissão para usar a ação `ec2:CreateTags`, eles poderão alterar a tag de um recurso para contornar essas restrições. Para obter mais informações, consulte [Controlar o acesso usando acesso baseado em atributos](iam-policies-for-amazon-ec2.md#control-access-with-tags).
+ Para usar parâmetros do Systems Manager ao selecionar uma AMI, você deve adicionar `ssm:DescribeParameters` e `ssm:GetParameters` à sua política. O `ssm:DescribeParameters` concede aos usuários a permissão para visualizar e selecionar parâmetros do Systems Manager. O `ssm:GetParameters` concede aos usuários a permissão para obter os valores dos parâmetros do Systems Manager. Também é possível restringir o acesso a parâmetros específicos do Systems Manager. Para obter mais informações, consulte **Restringir acesso a parâmetros específicos do Systems Manager** posteriormente nesta seção.

Atualmente, as ações da API `Describe*` do Amazon EC2 não oferecem suporte a permissões em nível de recurso, portanto, não é possível restringir quais recursos individuais os usuários podem visualizar no assistente de início de instância. Contudo, é possível aplicar permissões em nível de recurso na ação de API `ec2:RunInstances` para restringir os recursos que os usuários podem usar para executar uma instância. Haverá falha na execução se os usuários selecionarem opções que não estão autorizados a usar. 

**Restringir o acesso a um tipo de instância, uma sub-rede e uma região específicos**

A política a seguir permite que os usuários executem instâncias `t2.micro` usando AMIs de propriedade da Amazon e apenas em uma sub-rede específica (`subnet-1a2b3c4d`). Os usuários só podem iniciar na região especificada. Se os usuários selecionarem uma região diferente ou se selecionarem outro tipo de instância, outra AMI ou outra sub-rede no assistente de início de instância, a execução falhará. 

A primeira declaração concede aos usuários permissão para visualizar as opções no assistente de início de instância ou criar novas, conforme explicado no exemplo acima. A segunda declaração concede aos usuários permissão para usarem a interface de rede, o volume, o par de chaves, o grupo de segurança e os recursos de sub-rede para a ação `ec2:RunInstances`, que são necessários para executar uma instância em uma VPC. Para obter mais informações sobre como usar a ação `ec2:RunInstances`, consulte [Executar instâncias (RunInstances)](ExamplePolicies_EC2.md#iam-example-runinstances). A terceira e a quarta declaração concedem aos usuários permissão para usarem a instância e os recursos das AMIs respectivamente, mas somente se a instância for uma instância `t2.micro` e somente se a AMI pertencer à Amazon ou a determinados parceiros confiáveis e verificados.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances",
         "ec2:DescribeImages",
         "ec2:DescribeInstanceTypes",
         "ec2:DescribeKeyPairs", 
         "ec2:CreateKeyPair", 
         "ec2:DescribeVpcs", 
         "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", 
         "ec2:CreateSecurityGroup", 
         "ec2:AuthorizeSecurityGroupIngress"
	  ],
	  "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action":"ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-2:111122223333:volume/*",
         "arn:aws:ec2:us-east-2:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-2:111122223333:security-group/*",
         "arn:aws:ec2:us-east-2:111122223333:subnet/subnet-1a2b3c4d"
      ]
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": "t2.micro"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
            "arn:aws:ec2:us-east-2::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   }
   ]
}
```

------

**Restringir o acesso a parâmetros específicos do Systems Manager**

A política a seguir concede acesso para usar parâmetros do Systems Manager com um nome específico.

A primeira instrução concede aos usuários permissão para visualizar parâmetros do Systems Manager ao selecionar uma AMI no assistente de início de instância. A segunda instrução concede aos usuários a permissão para usar somente parâmetros denominados `prod-*`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ssm:DescribeParameters"
      ],
      "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action": [
         "ssm:GetParameters"
      ],
     "Resource": "arn:aws:ssm:us-east-2:123456123456:parameter/prod-*"
   }
   ]
}
```

------

## Exemplo: trabalhar com grupos de segurança
<a name="ex-security-groups"></a>

**Visualizar grupos de segurança e adicionar e remover regras**

A política a seguir concede aos usuários permissão para visualizar grupos de segurança no console do Amazon EC2, adicionar e remover regras de entrada e de saída, bem como listar e modificar descrições de regras de grupo de segurança existentes que têm a etiqueta `Department=Test`.

Na primeira declaração, a ação `ec2:DescribeTags` permite que os usuários visualizem tags no console, o que facilita a identificação dos grupos de segurança que eles têm permissão para modificar.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeSecurityGroups", 
         "ec2:DescribeSecurityGroupRules", 
         "ec2:DescribeTags"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:AuthorizeSecurityGroupIngress", 
         "ec2:RevokeSecurityGroupIngress", 
         "ec2:AuthorizeSecurityGroupEgress", 
         "ec2:RevokeSecurityGroupEgress", 
         "ec2:ModifySecurityGroupRules", 
         "ec2:UpdateSecurityGroupRuleDescriptionsIngress", 
         "ec2:UpdateSecurityGroupRuleDescriptionsEgress"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:security-group/*"
      ],
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/Department": "Test"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": [
         "ec2:ModifySecurityGroupRules"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:security-group-rule/*"
      ]
   }
]}
```

------

**Trabalhar com a caixa de diálogo Create Security Group (Criar grupo de segurança**

É possível criar uma política que permita que os usuários trabalhem com a caixa de diálogo **Create Security Group** (Criar grupo de segurança) no console do Amazon EC2. Para usar essa caixa de diálogo, os usuários devem receber a permissão para usar pelo menos as seguintes ações de API:
+ `ec2:CreateSecurityGroup`: para criar um novo grupo de segurança. 
+ `ec2:DescribeVpcs`: para visualizar uma lista de VPCs existentes na lista **VPC**.

Com essas permissões, os usuários podem criar um novo grupo de segurança com êxito, mas não podem adicionar nenhuma regra a ele. Para trabalhar com regras na caixa de diálogo **Create Security Group** (Criar grupo de segurança), é possível adicionar as seguintes ações de API à sua política:
+ `ec2:AuthorizeSecurityGroupIngress`: para adicionar regras de entrada.
+ `ec2:AuthorizeSecurityGroupEgress`: para adicionar regras de saída aos grupos de segurança da VPC.
+ `ec2:RevokeSecurityGroupIngress`: para modificar ou excluir regras de entrada existentes. Isso é útil para permitir que os usuários usem o recurso **Copy to new** no console. Esse recurso abre a caixa de diálogo **Create Security Group** (Criar grupo de segurança) e preenche-a com as mesmas regras do security group que foi selecionado. 
+ `ec2:RevokeSecurityGroupEgress`: para modificar ou excluir regras de saída de grupos de segurança da VPC. Isso é útil para permitir que os usuários modifiquem ou excluam a regra de saída padrão que permite todo o tráfego de saída.
+ `ec2:DeleteSecurityGroup`: para prover quando regras inválidas não podem ser salvas. O console primeiro cria o grupo de segurança e, em seguida, adiciona as regras especificadas. Se as regras forem inválidas, a ação falhará, e o console tentará excluir o grupo de segurança. O usuário permanece na caixa de diálogo **Create Security Group** (Criar grupo de segurança) para que possa corrigir a regra inválida e tentar criar o security group novamente. Essa ação de API não é necessária, mas se um usuário não receber permissão para usá-la e tentar criar um grupo de segurança com regras inválidas, o grupo de segurança será criado sem nenhuma regra, e o usuário deverá adicioná-las posteriormente.
+ `ec2:UpdateSecurityGroupRuleDescriptionsIngress`: para adicionar ou atualizar descrições de regras de grupo de segurança de entrada (inbound).
+ `ec2:UpdateSecurityGroupRuleDescriptionsEgress`: para adicionar ou atualizar descrições de regras de grupo de segurança de saída (outbound).
+ `ec2:ModifySecurityGroupRules`: para modificar as regras do grupo de segurança.
+ `ec2:DescribeSecurityGroupRules`: para listar as regras do grupo de segurança.

A política a seguir concede aos usuários permissão para usar a caixa de diálogo **Create Security Group** (Criar grupo de segurança) e criar regras de entrada e de saída para grupos de segurança associados a uma VPC específica (`vpc-1a2b3c4d`). Os usuários podem criar grupos de segurança para uma VPC, mas não podem adicionar nenhuma regra a eles. Da mesma forma, os usuários não podem adicionar nenhuma regra aos grupos de segurança existentes não associados à VPC `vpc-1a2b3c4d`. Os usuários também recebem permissão para visualizar todos os grupos de segurança no console. Isso facilita aos usuários identificar os grupos de segurança aos quais podem adicionar regras de entrada. Essa política também concede permissão aos usuários para excluir grupos de segurança associados à VPC `vpc-1a2b3c4d`. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeSecurityGroups", 
        "ec2:CreateSecurityGroup", 
        "ec2:DescribeVpcs"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteSecurityGroup", 
        "ec2:AuthorizeSecurityGroupIngress", 
        "ec2:AuthorizeSecurityGroupEgress"
      ],
      "Resource": "arn:aws:ec2:us-east-2:111122223333:security-group/*",
      "Condition":{
         "ArnEquals": {
            "ec2:Vpc": "arn:aws:ec2:us-east-2:111122223333:vpc/vpc-1a2b3c4d"
         }
      }
    }
   ]
}
```

------

## Exemplo: trabalhar com endereços IP elásticos
<a name="ex-eip"></a>

Para permitir que os usuários visualizem endereços IP elásticos no console do Amazon EC2, conceda aos usuários permissão para usar a ação `ec2:DescribeAddresses`.

Para permitir que os usuários trabalhem com endereços IP elásticos, é possível adicionar as seguintes ações à política.
+ `ec2:AllocateAddress`: para alocar um endereço IP elástico.
+ `ec2:ReleaseAddress`: para liberar um endereço IP elástico.
+ `ec2:AssociateAddress`: para associar um endereço IP elástico a uma instância ou a uma interface de rede.
+ `ec2:DescribeNetworkInterfaces` e `ec2:DescribeInstances`: para trabalhar com a tela **Associate address**. A tela exibe as instâncias disponíveis ou as interfaces de rede para que você possa associar um endereço IP elástico.
+ `ec2:DisassociateAddress`: para desassociar um endereço IP elástico de uma instância ou de uma interface de rede.

As políticas a seguir permitem que os usuários visualizem, aloquem e associem endereços IP elásticos a instâncias. Os usuários não podem associar endereços IP elásticos a interfaces de rede, desassociar endereços IP elásticos ou liberá-los.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAddresses",
                "ec2:AllocateAddress",
                "ec2:DescribeInstances",
                "ec2:AssociateAddress"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Exemplo: trabalhar com Instâncias reservadas
<a name="ex-reservedinstances"></a>

A política a seguir permite que os usuários visualizem e modifiquem instâncias reservadas em sua conta e que adquiram novas instâncias reservadas no Console de gerenciamento da AWS.

Esta política permite que os usuários visualizem todas as Instâncias reservadas, bem como Instâncias on-demand, na conta. Não é possível definir permissões em nível de recurso para Instâncias reservadas individuais.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeReservedInstances", 
         "ec2:ModifyReservedInstances",
         "ec2:PurchaseReservedInstancesOffering", 
         "ec2:DescribeInstances",
         "ec2:DescribeInstanceTypes",
         "ec2:DescribeAvailabilityZones", 
         "ec2:DescribeReservedInstancesOfferings"
      ],
      "Resource": "*"
   }
   ]
}
```

------

A ação `ec2:DescribeAvailabilityZones` é necessária para garantir que o console do Amazon EC2 possa exibir informações sobre as zonas de disponibilidade nas quais é possível comprar Instâncias reservadas. A ação `ec2:DescribeInstances` não é necessária, mas garante que o usuário possa visualizar as instâncias na conta e comprar reservas para atender às especificações corretas.

É possível ajustar as ações de API para limitar o acesso do usuário, por exemplo, a remoção de `ec2:DescribeInstances` e de `ec2:DescribeAvailabilityZones` significa que o usuário tem acesso somente leitura.

# Políticas gerenciadas pela AWS para o Amazon EC2
<a name="security-iam-awsmanpol"></a>

Para adicionar permissões a usuários, grupos e perfis, é mais fácil usar políticas gerenciadas pela AWS do que gravar políticas por conta própria. É necessário tempo e experiência para [criar políticas gerenciadas pelo cliente do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) que fornecem à sua equipe apenas as permissões de que precisam. Para começar rapidamente, é possível usar nossas políticas gerenciadas pela AWS. Essas políticas abrangem casos de uso comuns e estão disponíveis na sua conta da AWS. Para obter mais informações sobre políticas gerenciadas pela AWS, consulte [Políticas gerenciadas pela AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) no *Guia do usuário do IAM*.

Os serviços da AWS mantêm e atualizam políticas gerenciadas pela AWS. Não é possível alterar as permissões em políticas gerenciadas pela AWS. Os serviços ocasionalmente acrescentam permissões adicionais a uma política gerenciada pela AWS para oferecer suporte a novos recursos. Esse tipo de atualização afeta todas as identidades (usuários, grupos e funções) em que a política está anexada. É mais provável que os serviços atualizem uma política gerenciada pela AWS quando um novo recurso for iniciado ou novas operações se tornarem disponíveis. Os serviços não removem permissões de uma política gerenciada pela AWS, portanto, as atualizações de políticas não suspendem suas permissões existentes.

Além disso, a AWS é compatível com políticas gerenciadas por perfis de trabalho que abrangem vários serviços. Por exemplo, a política **ReadOnlyAccess** política gerenciada pela AWS fornece acesso somente leitura a todos os serviços e recursos da AWS. Quando um serviço executa um novo atributo, a AWS adiciona permissões somente leitura para novas operações e recursos. Para obter uma lista e descrições das políticas de funções de trabalho, consulte [Políticas gerenciadas pela AWS para funções de trabalho](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) no *Guia do usuário do IAM*.

## AWS Política gerenciada da: AmazonEC2FullAccess
<a name="security-iam-awsmanpol-AmazonEC2FullAccess"></a>

É possível anexar a política `AmazonEC2FullAccess` a suas identidades do IAM. Essa política concede permissões que possibilitam acesso total ao Amazon EC2.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2FullAccess.html) na *Referência de políticas gerenciadas pela AWS*.

## Política gerenciada da AWS: AmazonEC2ReadOnlyAccess
<a name="security-iam-awsmanpol-AmazonEC2ReadOnlyAccess"></a>

É possível anexar a política `AmazonEC2ReadOnlyAccess` às identidades do IAM. Esta política concede permissões que oferecem acesso somente leitura ao Amazon EC2.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AmazonEC2ImageReferencesAccessPolicy
<a name="security-iam-awsmanpol-AmazonEC2ImageReferencesAccessPolicy"></a>

É possível anexar a política `AmazonEC2ImageReferencesAccessPolicy` às identidades do IAM. Esta política concede as permissões necessárias para usar a API DescribeImageReferences do EC2, incluindo permissão para visualizar instâncias do EC2, modelos de inicialização, parâmetros do Systems Manager e fórmulas do Image Builder. A política é compatível com o sinalizador `IncludeAllResourceTypes` e continuará funcionando quando a AWS adicionar suporte para novos tipos de recursos, eliminando a necessidade de futuras atualizações de políticas.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AWSEC2CapacityReservationFleetRolePolicy
<a name="security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy"></a>

Essa política é anexada ao perfil vinculado a serviço denominado **AWSServiceRoleForEC2CapacityReservationFleet** para permitir que o serviço crie, modifique e cancele reservas de capacidade em uma Frota de reservas de capacidade em seu nome. Para obter mais informações, consulte [Uso de funções vinculadas aos serviços para a frota de reserva de capacidadeUso de perfis vinculados ao serviço do EC2 Capacity Manager](using-service-linked-roles.md).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityReservationFleetRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityReservationFleetRolePolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AWSEC2FleetServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2FleetServiceRolePolicy"></a>

Esta política é anexada à função vinculada ao serviço de nome **AWSServiceRoleForEC2Fleet** para permitir que o EC2 Fleet solicite, inicie, encerre e aplique tags nas instâncias para você. Para obter mais informações, consulte [Função vinculada ao serviço para Frota do EC2](ec2-fleet-prerequisites.md#ec2-fleet-service-linked-role).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2FleetServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2FleetServiceRolePolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AWSEC2SpotFleetServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2SpotFleetServiceRolePolicy"></a>

Esta política é anexada à função vinculada ao serviço de nome **AWSServiceRoleForEC2SpotFleet** para permitir que a frota spot inicie e gerencie instâncias para você. Para obter mais informações, consulte [Função vinculada ao serviço para frota spot](spot-fleet-prerequisites.md#service-linked-roles-spot-fleet-requests).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotFleetServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotFleetServiceRolePolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AWSEC2SpotServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2SpotServiceRolePolicy"></a>

Esta política é anexada à função vinculada ao serviço de nome **AWSServiceRoleForEC2Spot** para permitir que o Amazon EC2 inicie e gerencie instâncias spot para você. Para obter mais informações, consulte [Função vinculada ao serviço para solicitações de instâncias spot](service-linked-roles-spot-instance-requests.md).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotServiceRolePolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AWSEC2VssSnapshotPolicy
<a name="security-iam-awsmanpol-AWSEC2VssSnapshotPolicy"></a>

É possível anexar essa política gerenciada à função do perfil de instância do IAM usada para as instâncias do Windows do Amazon EC2. A política concede permissões que possibilitam que o Amazon EC2 crie e gerencie snapshots do VSS em seu nome.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2VssSnapshotPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2VssSnapshotPolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: DeclarativePoliciesEC2Report
<a name="security-iam-awsmanpol-DeclarativePoliciesEC2Report"></a>

Essa política é anexada ao perfil vinculado a serviço denominado `AWSServiceRoleForDeclarativePoliciesEC2Report` para fornecer acesso a APIs somente leitura necessárias para gerar o relatório de status da conta para políticas declarativas.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DeclarativePoliciesEC2Report.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DeclarativePoliciesEC2Report.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: EC2FastLaunchFullAccess
<a name="security-iam-awsmanpol-EC2FastLaunchFullAccess"></a>

É possível anexar a política de `EC2FastLaunchFullAccess` ao perfil de instância ou a outro perfil do IAM. Essa política concede total acesso às ações e às permissões direcionadas do EC2 Fast Launch como se segue.

**Detalhes da permissão**
+ **EC2 Fast Launch**: acesso administrativo é concedido para que o perfil possa habilitar ou desabilitar o EC2 Fast Launch e descrever as imagens do EC2 Fast Launch.
+ **Amazon EC2**: é concedido acesso para as operações RunInstances, CreateTags, Describe e Create and Modify Launch Template do Amazon EC2. Também é concedido acesso para criar recursos de rede e grupos de segurança, autorizar regras de entrada e excluir recursos criados pelo EC2 Fast Launch.
+ **IAM**: acesso é concedido para obter e usar perfis de instância cujo nome contenha `ec2fastlaunch` para criar o perfil vinculada ao serviço EC2FastLaunchServiceRolePolicy.
+ **CloudFormation** – é concedido acesso ao EC2 Fast Launch para descrever e criar pilhas do CloudFormation, e para excluir as pilhas que ele criou.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: AWSEC2CapacityManagerServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2CapacityManagerServiceRolePolicy"></a>

Esta política é anexada ao perfil vinculado ao serviço **AWSServiceRoleForEC2CapacityManager** para permitir que o EC2 Capacity Manager gerencie recursos de capacidade e se integre ao AWS Organizations para você. Para obter mais informações, consulte [Perfis vinculados ao serviço para o EC2 Capacity Manager](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-service-linked-roles-cm.html).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityManagerServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityManagerServiceRolePolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: EC2FastLaunchServiceRolePolicy
<a name="security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy"></a>

Esta política é anexada ao perfil vinculado ao serviço denominado **AWSServiceRoleForEC2FastLaunch** para permitir que o Amazon EC2 crie e gerencie um conjunto de snapshots pré-provisionados que reduzem o tempo necessário para iniciar instâncias usando a AMI habilitada para EC2 Fast Launch. Para obter mais informações, consulte [Perfil vinculado ao serviço para o EC2 Fast Launch](slr-windows-fast-launch.md).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: Ec2InstanceConnect
<a name="Ec2InstanceConnect"></a>

É possível anexar a política `Ec2InstanceConnect` às suas identidades do IAM. Esta política concede permissões para que os clientes chamem o EC2 Instance Connect para publicar chaves efêmeras em suas instâncias do EC2 e se conectem via ssh ou pela CLI do EC2 Instance Connect.

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceConnect.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceConnect.html) na *Referência de políticas gerenciadas pela AWS*.

## AWS Política gerenciada da: Ec2InstanceConnectEndpoint
<a name="Ec2InstanceConnectEndpoint"></a>

Essa política é anexada a um perfil vinculado a serviço chamado **AWSServiceRoleForEC2InstanceConnect** para permitir que o EC2 Instance Connect Endpoint execute ações em seu nome. Para obter mais informações, consulte [Perfil vinculado ao serviço para o EC2 Instance Connect Endpoint](eice-slr.md).

Para visualizar as permissões para esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html) na *Referência de políticas gerenciadas pela AWS*. Para obter uma descrição das atualizações desta política, consulte [Atualizações do Amazon EC2 para políticas gerenciadas pela AWS](#security-iam-awsmanpol-updates).

## Atualizações do Amazon EC2 para políticas gerenciadas pela AWS
<a name="security-iam-awsmanpol-updates"></a>

Visualize detalhes sobre atualizações em políticas gerenciadas pela AWS para o Amazon EC2 desde que esse serviço começou a rastrear essas alterações.


| Alteração | Descrição | Data | 
| --- | --- | --- | 
|  [AWSEC2CapacityManagerServiceRolePolicy](#security-iam-awsmanpol-AWSEC2CapacityManagerServiceRolePolicy) – Nova política  | O Amazon EC2 adicionou essa política para permitir que você gerencie recursos de capacidade e se integre ao AWS Organizations para você. | 15 de outubro de 2025 | 
|  [AmazonEC2ImageReferencesAccessPolicy](#security-iam-awsmanpol-AmazonEC2ImageReferencesAccessPolicy) – nova política  | O Amazon EC2 adicionou essa política para fornecer permissão para verificar todos os tipos de recursos compatíveis com a API DescribeImageReferences do EC2. | 26 de agosto de 2025 | 
| [Ec2InstanceConnectEndpoint](#Ec2InstanceConnectEndpoint) – Atualizar política | Para oferecer suporte à modificação dos endpoints de conexão de instâncias existentes, o Amazon EC2 atualizou essa política para adicionar permissões para atribuir e cancelar a atribuição de endereços IPv6 e modificar grupos de segurança em interfaces de rede criadas pelo endpoint de conexão de instância do EC2. O Amazon EC2 também atualizou essa política para substituir o operador de condição Null pelo operador de condição StringLike. | 31 de julho de 2025 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – Atualizar política | Para ajudar a evitar recursos órfãos, o Amazon EC2 atualizou essa política para adicionar permissão para descrever volumes, atributos de volume e interfaces de rede, e para excluir volumes e interfaces de rede criados pelo EC2 Fast Launch. | 17 de julho de 2025 | 
| [EC2FastLaunchFullAccess](#security-iam-awsmanpol-EC2FastLaunchFullAccess) – Atualizar política | O Amazon EC2 atualizou essa política para incluir as operações Create and Modify Launch Template, para criar recursos de rede e grupos de segurança, autorizar regras de entrada e excluir recursos criados pelo EC2 Fast Launch. Ela também pode descrever e criar pilhas do CloudFormation, e excluir pilhas criadas pelo EC2 Fast Launch. | 14 de maio de 2025 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – Atualizar política | O Amazon EC2 atualizou essa política para adicionar acesso ao Amazon EventBridge para criar e gerenciar regras de eventos para o EC2 Fast Launch. Além disso, o EC2 Fast Launch agora pode descrever pilhas do CloudFormation, iniciar uma instância a partir de uma AMI associada ao AWS License Manager, obter uma lista das concessões do AWS KMS que ele criou e que podem ser retiradas, e excluir os modelos de inicialização que ele criou. | 14 de maio de 2025 | 
| [AWSEC2CapacityReservationFleetRolePolicy](#security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy): Permissões atualizadas | O Amazon EC2 atualizou a política gerenciada AWSEC2CapacityReservationFleetRolePolicy para utilizar o operador de condição ArnLike em vez do operador de condição StringLike. | 03 de março de 2025 | 
| [AmazonEC2ReadOnlyAccess](#security-iam-awsmanpol-AmazonEC2ReadOnlyAccess) – adicionou permissões | O Amazon EC2 adicionou uma permissão que permite recuperar grupos de segurança usando a operação GetSecurityGroupsForVpc. | 27 de dezembro de 2024 | 
| [EC2FastLaunchFullAccess](#security-iam-awsmanpol-EC2FastLaunchFullAccess) – nova política | O Amazon EC2 adicionou essa política para realizar ações de API relacionadas ao atributo EC2 Fast Launch em uma instância. A política pode ser anexada ao perfil de instância para uma instância que é iniciada usando uma AMI habilitada para o EC2 Fast Launch. | 14 de maio de 2024 | 
| [AWSEC2VssSnapshotPolicy](#security-iam-awsmanpol-AWSEC2VssSnapshotPolicy) – nova política | O Amazon EC2 adicionou a política AWSEC2VssSnapshotPolicy que contém permissões para criar e adicionar tags a images de máquina da Amazon (AMIs) e a snapshots do EBS. | 28 de março de 2024 | 
| [Ec2InstanceConnectEndpoint](#Ec2InstanceConnectEndpoint) – nova política | A Amazon EC2 adicionou a política Ec2InstanceConnectEndpoint. Essa política está anexada ao perfil vinculado ao serviço AWSServiceRoleForEC2InstanceConnect, para permitir que o Amazon EC2 execute ações em seu nome quando você criar um endpoint de conexão de instância do EC2. | 24 de janeiro de 2023 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – nova política | O Amazon EC2 adicionou o atributo EC2 Fast Launch para habilitar as AMIs do Windows a executar instâncias mais rapidamente criando um conjunto de snapshots pré-provisionados. | 26 de novembro de 2021 | 
| O Amazon EC2 passou a monitorar as alterações | O Amazon EC2 passou a controlar as alterações nas políticas gerenciadas pela AWS. | 1.º de março de 2021 | 

# Funções do IAM para Amazon EC2
<a name="iam-roles-for-amazon-ec2"></a>

As aplicações devem assinar suas solicitações de API com as credenciais da AWS. Portanto, se você for um desenvolvedor de aplicações, precisará de uma estratégia para gerenciar credenciais para suas aplicações que executam em instâncias do EC2. Por exemplo, é possível distribuir de maneira segura suas credenciais da AWS para as instâncias, permitindo que as aplicações nessas instâncias usem suas credenciais para assinar solicitações, enquanto protege suas credenciais de outros usuários. Contudo, é um desafio distribuir credenciais para cada instância de maneira segura, especialmente aquelas que a AWS cria em seu nome, como instâncias spot ou instâncias em grupos do Auto Scaling. Você também deve poder atualizar as credenciais em cada instância quando alterna suas credenciais da AWS.

Projetamos funções do IAM para que suas aplicações possam fazer solicitações de API de suas instâncias de maneira segura, sem exigir que você gerencie as credenciais de segurança que as aplicações usam. Em vez de criar e distribuir suas credenciais da AWS, é possível delegar permissão para fazer solicitações de API usando funções do IAM da seguinte forma:

1. Crie uma função do IAM.

1. Defina quais contas ou serviços da AWS podem assumir a função.

1. Defina quais ações e recursos de API a aplicação pode usar depois de assumir a função.

1. Especifique a função quando você executar a instância ou anexe a função a uma instância existente.

1. Faça com que a aplicação recupere um conjunto de credenciais temporárias e use-as.

Por exemplo, é possível usar funções do IAM para conceder permissões a aplicações em execução em suas instâncias que precisam usar um bucket no Amazon S3. É possível especificar permissões para funções do IAM criando uma política em formato JSON. Essas são semelhantes às políticas que você cria para os usuários do . Se você alterar uma função, a alteração será propagada para todas as instâncias.

**nota**  
As credenciais do perfil do IAM do Amazon EC2 não estão sujeitas às durações máximas de sessão configuradas no perfil. Para obter mais informações, consulte [Métodos para assumir um perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) no *Manual do usuário do IAM*.

Ao criar funções do IAM, associe políticas do IAM de privilégio mínimo que restringem o acesso às chamadas de API específicas exigidas pela aplicação. Para comunicação Windows para Windows, use grupos e funções bem definidos e bem documentados do Windows para conceder acesso no nível de aplicação entre instâncias do Windows. Grupos e funções permitem que os clientes definam permissões de aplicação de privilégio mínimo e no nível de pasta do NTFS para limitar o acesso a requisitos específicos da aplicação.

Você só pode anexar uma função do IAM a uma instância, mas pode anexar a mesma função a muitas instâncias. Para obter mais informações sobre como criar e usar funções do IAM, consulte [Funções](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM*.

É possível aplicar permissões em nível de recurso às políticas do IAM para controlar a capacidade de anexar, substituir ou desanexar funções do IAM de uma instância. Para obter mais informações, consulte [Permissões no nível do recurso com suporte para ações de API do Amazon EC2](iam-policies-for-amazon-ec2.md#ec2-supported-iam-actions-resources) e o seguinte exemplo: [Exemplo: trabalhar com funções do IAM](ExamplePolicies_EC2.md#iam-example-iam-roles).

**Topics**
+ [Perfis de instância](#ec2-instance-profile)
+ [Permissões para seu caso de uso](#generate-policy-for-iam-role)
+ [Recuperar credenciais de segurança](instance-metadata-security-credentials.md)
+ [Permissões para anexar um perfil a uma instância](permission-to-pass-iam-roles.md)
+ [Anexar um perfil a uma instância](attach-iam-role.md)
+ [Perfis de identidade da instância](#ec2-instance-identity-roles)

## Perfis de instância
<a name="ec2-instance-profile"></a>

O Amazon EC2 usa um *perfil de instância* como um contêiner para uma função do IAM. Se você criar uma função do IAM usando o console do IAM o console criará automaticamente um perfil de instância e dará a ele o mesmo nome da função correspondente. Se você usar o console do Amazon EC2 para executar uma instância com uma função do IAM ou anexar uma função do IAM a uma instância, deve escolher a função com base em uma lista de nomes de perfis de instância. 

Se você usar a AWS CLI, a API ou um AWS SDK para criar uma função, você cria a função e o perfil da instância como ações separadas, com nomes potencialmente diferentes. Se você usar a AWS CLI, a API ou o AWS SDK para iniciar uma instância com uma função do IAM ou para anexar uma função do IAM a uma instância, especifique o nome do perfil da instância. 

Um perfil de instância pode conter somente uma função do IAM. É possível incluir um perfil do IAM em vários perfis de instâncias.

Para atualizar as permissões de uma instância, substitua o perfil da instância. Não é recomendável remover um perfil de um perfil de instância, pois existe um atraso de até uma hora antes que essa alteração entre em vigor.

Para obter mais informações, consulte [Usar perfis de instâncias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) no *Guia do usuário do IAM*.

## Permissões para seu caso de uso
<a name="generate-policy-for-iam-role"></a>

Quando você cria uma função do IAM pela primeira vez para suas aplicações, às vezes é possível conceder permissões além do que é necessário. Antes de iniciar sua aplicação em seu ambiente de produção, é possível gerar uma política do IAM baseada na atividade de acesso para uma função do IAM. O IAM Access Analyzer revisa seus logs do AWS CloudTrail e gera um modelo de política que contém as permissões que foram usadas pela função no intervalo de datas especificado. É possível usar o modelo para criar uma política gerenciada com permissões refinadas e anexá-la à função do IAM. Dessa forma, você concede apenas as permissões necessárias à interação com os recursos da AWS, de acordo com a especificidade do caso de uso. Isso ajuda você a aderir às melhores práticas de [conceder privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Para obter mais informações, consulte [Geração de política do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html) no *Guia do usuário do IAM*.

# Recuperar credenciais de segurança dos metadados da instância
<a name="instance-metadata-security-credentials"></a>

Uma aplicação na instância recupera as credenciais de segurança fornecidas pela função no item `iam/security-credentials/`*role-name* dos metadados da instância. A aplicação recebe as permissões para as ações e recursos que você definiu para a função por meio das credenciais de segurança associadas à função. Essas credenciais de segurança são temporárias e são alternadas automaticamente. Tornamos novas credenciais disponíveis pelo menos cinco minutos antes da expiração das credenciais antigas.

Para obter mais informações sobre os metadados da instância, consulte [Usar metadados da instância para gerenciar a instância do EC2](ec2-instance-metadata.md).

**Atenção**  
Se você usar serviços que usam os metadados da instância com funções do IAM, não exponha suas credenciais quando os serviços criarem chamadas HTTP em seu nome. Os tipos de serviços que podem expor suas credenciais incluem proxies HTTP, serviços de validação HTML/CSS e processadores XML que são compatíveis com a inclusão XML.

Para suas workloads do Amazon EC2, recomendamos recuperar as credenciais da sessão usando o método descrito abaixo. Essas credenciais devem permitir que sua workload faça solicitações da API da AWS sem precisar usar `sts:AssumeRole` para assumir a mesma função que já está associada à instância. A menos que seja necessário passar etiquetas de sessão para controle de acesso por atributo (ABAC) ou passar uma política de sessão para restringir ainda mais as permissões da função, essas chamadas de suposição de função são desnecessárias, pois criam um novo conjunto das mesmas credenciais de sessão de função temporária.

Se sua workload usa uma função para assumir a si mesma, é necessário criar uma política de confiança que permita explicitamente que essa função se assuma sozinha. Se a política de confiança não for criada, o erro `AccessDenied` ocorrerá. Para obter mais informações, consulte [Atualização de uma política de confiança de perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html) no *Guia do usuário do IAM*.

------
#### [ IMDSv2 ]

**Linux**  
Execute o seguinte comando em sua instância Linux para recuperar as credenciais de segurança de um perfil do IAM.

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
Execute o seguinte cmdlet em sua instância Windows para recuperar as credenciais de segurança de um perfil do IAM.

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------
#### [ IMDSv1 ]

**Linux**  
Execute o seguinte comando em sua instância Linux para recuperar as credenciais de segurança de um perfil do IAM.

```
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
Execute o seguinte cmdlet em sua instância Windows para recuperar as credenciais de segurança de um perfil do IAM.

```
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------

O seguinte é um exemplo de saída. Se você não conseguir recuperar as credenciais de segurança, consulte [Não é possível acessar as credenciais de segurança temporárias em minha instância do EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-ec2.html#troubleshoot_iam-ec2_no-keys) no *Guia do usuário do IAM*.

```
{
  "Code" : "Success",
  "LastUpdated" : "2012-04-26T16:39:16Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
  "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  "Token" : "token",
  "Expiration" : "2017-05-17T15:09:54Z"
}
```

Para comandos de aplicações, AWS CLI e Tools for Windows PowerShell que são executados na instância, não é necessário obter as credenciais de segurança temporárias explicitamente – os AWS SDKs, a AWS CLI e o Tools for Windows PowerShell obtêm automaticamente as credenciais do serviço de metadados da instância do EC2 e as usam. Para fazer uma chamada fora da instância usando credenciais de segurança temporárias (por exemplo, para testar as políticas do IAM), forneça a chave de acesso, a chave secreta e o token da sessão. Para obter mais informações, consulte [Usar credenciais de segurança temporárias para solicitar acesso aos recursos da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) no *Manual do usuário do IAM*.

# Conceder permissões para anexar um perfil do IAM a uma instância
<a name="permission-to-pass-iam-roles"></a>

As identidades em sua Conta da AWS, como usuários do IAM, devem ter permissões específicas para executar uma instância do Amazon EC2 com um perfil do IAM, anexar um perfil do IAM a uma instância, substituir o perfil do IAM por uma instância ou desanexar um perfil do IAM de uma instância. Você deve conceder permissão para usar as seguintes ações de API, conforme necessário:
+ `iam:PassRole`
+ `ec2:AssociateIamInstanceProfile`
+ `ec2:DisassociateIamInstanceProfile`
+ `ec2:ReplaceIamInstanceProfileAssociation`

**nota**  
Se você especificar o recurso para `iam:PassRole` como `*`, isso concederá acesso para passar qualquer um dos perfis do IAM para uma instância. Para seguir a prática recomendada de [privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), especifique os ARNs de perfis específicos do IAM com `iam:PassRole`, conforme mostrado no exemplo de política abaixo.

**Exemplo de política para acesso programático**  
A política do IAM a seguir concede permissões para executar instâncias com um perfil do IAM, anexar um perfil do IAM a uma instância ou substituir um perfil do IAM por uma instância usando a AWS CLI ou a API do Amazon EC2.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances",
         "ec2:AssociateIamInstanceProfile",
         "ec2:DisassociateIamInstanceProfile",
         "ec2:ReplaceIamInstanceProfileAssociation"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/DevTeam*"
    }
  ]
}
```

------

**Requisito adicional para acesso ao console**  
Para conceder permissões para concluir as mesmas tarefas usando o console do Amazon EC2, você também deve incluir a ação da API `iam:ListInstanceProfiles`.

# Anexar uma função do IAM a uma instância
<a name="attach-iam-role"></a>

É possível criar uma função do IAM e anexá-la a uma instância durante ou depois da execução. Você também pode substituir ou desanexar perfis do IAM.

**Criar e anexar um perfil do IAM durante a inicialização da instância (recomendado)**

1. Durante a inicialização da instância EC2, expanda os **Detalhes avançados**.

1. Na seção **Perfil de instância do IAM**, escolha **Criar novo perfil do IAM**.

1. Um formulário de criação de perfil em linha é aberto, permitindo que você:
   + Especifique o **Nome do perfil** (por exemplo, `EC2-S3-Access-Role`)
   + Defina permissões selecionando políticas gerenciadas da AWS ou criando políticas personalizadas para sua instância

     Por exemplo, para conceder acesso ao S3, selecione a política gerenciada da `AmazonS3ReadOnlyAccess`
   + Revise a política de confiança que permita a `ec2.amazonaws.com` a assumir o perfil
   + Adicione tags opcionais para metadados

1. Selecione **Criar perfil**.

   O perfil recém-criado é selecionado automaticamente e será anexado à sua instância por meio de um perfil de instância quando a instância for iniciada.

**nota**  
Ao criar um perfil usando o console durante a inicialização da instância, um perfil de instância com o mesmo nome de perfil é criado automaticamente. O perfil de instância é um contêiner que transmite as informações do perfil do IAM para uma instância do EC2 na inicialização.

**Importante**  
Você só pode anexar uma função do IAM a uma instância, mas pode anexar a mesma função a muitas instâncias.
Associe as políticas de IAM com privilégios mínimos que restrinjam o acesso às chamadas de API específicas que o aplicativo requer.

Para obter mais informações sobre como criar e usar funções do IAM, consulte [Funções](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM*.

**Anexar um perfil do IAM existente durante a inicialização da instância**  
Para anexar um perfil do IAM a uma instância na inicialização usando o console do Amazon EC2, expanda **Detalhes avançados**. Para **Perfil de instância do IAM**, selecione o perfil do IAM na lista do menu suspenso.

**nota**  
Caso tenha criado o perfil do IAM usando o console do IAM, o perfil da instância terá sido criado para você e terá o mesmo nome do perfil. Caso tenha criado o perfil do IAM usando a AWS CLI, a API ou um SDK da AWS, é possível que você tenha dado um nome diferente do perfil para o perfil da instância.

É possível anexar um perfil do IAM a uma instância que está em execução ou interrompida. Se a instância já tiver um perfil do IAM anexado, você deverá substituí-lo pelo novo perfil do IAM.

------
#### [ Console ]<a name="attach-iam-role-console"></a>

**Como anexar uma função do IAM a uma instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância.

1. Selecione **Actions** (Ações), **Security** (Segurança), **Modify IAM role** (Modificar perfil do IAM).

1. Para **Perfil do IAM**, selecione o perfil de instância do IAM.

1. Escolha **Atualizar perfil do IAM**.

------
#### [ AWS CLI ]
<a name="attach-iam-role-instance-cli"></a>
**Como anexar uma função do IAM a uma instância**  
Use o comando [associate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) para anexar o perfil do IAM à instância. Ao especificar o perfil de instância, você pode usar o nome do recurso da Amazon (ARN) do perfil de instância ou o seu nome.

```
aws ec2 associate-iam-instance-profile \
    --instance-id i-1234567890abcdef0 \
    --iam-instance-profile Name="TestRole-1"
```

------
#### [ PowerShell ]

**Como anexar uma função do IAM a uma instância**  
Use o cmdlet [Register-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2IamInstanceProfile.html).

```
Register-EC2IamInstanceProfile `
    -InstanceId i-1234567890abcdef0 `
    -IamInstanceProfile_Name TestRole-1
```

------

Para substituir o perfil do IAM em uma instância que já tenha um perfil do IAM anexado, essa instância deve estar em execução. Será possível fazer isso se você quiser alterar a função do IAM de uma instância sem desanexar a existente primeiro. Por exemplo, é possível fazer isso para garantir que as ações de API desempenhadas por aplicações executadas na instância não sejam interrompidas.

------
#### [ Console ]<a name="replace-iam-role-console"></a>

**Como substituir uma função do IAM para uma instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância.

1. Selecione **Actions** (Ações), **Security** (Segurança), **Modify IAM role** (Modificar perfil do IAM).

1. Para **Perfil do IAM**, selecione o perfil de instância do IAM.

1. Escolha **Atualizar perfil do IAM**.

------
#### [ AWS CLI ]<a name="replace-iam-role-cli"></a>

**Como substituir uma função do IAM para uma instância**

1. Se necessário, use o comando [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) para obter o ID da associação.

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. Use o comando [replace-iam-instance-profile-association](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-iam-instance-profile-association.html). Especifique o ID de associação do perfil de instância existente e o ARN ou o nome do novo perfil de instância.

   ```
   aws ec2 replace-iam-instance-profile-association \
       --association-id iip-assoc-0044d817db6c0a4ba \
       --iam-instance-profile Name="TestRole-2"
   ```

------
#### [ PowerShell ]

**Como substituir uma função do IAM para uma instância**

1. Se necessário, use o cmdlet [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) para obter o ID da associação.

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. Use o cmdlet [Set-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2IamInstanceProfileAssociation.html). Especifique o ID de associação do perfil de instância existente e o ARN ou o nome do novo perfil de instância.

   ```
   Set-EC2IamInstanceProfileAssociation `
       -AssociationId iip-assoc-0044d817db6c0a4ba `
       -IamInstanceProfile_Name TestRole-2
   ```

------

É possível desvincular um perfil do IAM de uma instância que esteja em execução ou interrupção.

------
#### [ Console ]<a name="detach-iam-role-console"></a>

**Como desanexar uma função do IAM de uma instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância.

1. Selecione **Actions** (Ações), **Security** (Segurança), **Modify IAM role** (Modificar perfil do IAM).

1. Em **IAM role (Função do IAM)**, selecione **No IAM Role (Nenhuma função do IAM)**.

1. Escolha **Atualizar perfil do IAM**.

1. Quando a confirmação for solicitada, insira **Desanexar** e depois escolha **Desanexar**.

------
#### [ AWS CLI ]<a name="detach-iam-role-cli"></a>

**Como desanexar uma função do IAM de uma instância**

1. Se necessário, use [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) para obter o ID de associação do perfil de instância do IAM a ser desanexado.

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. Use o comando [disassociate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html).

   ```
   aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-0044d817db6c0a4ba
   ```

------
#### [ PowerShell ]

**Como desanexar uma função do IAM de uma instância**

1. Se necessário, use [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) para obter o ID de associação do perfil de instância do IAM a ser desanexado.

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. Use o cmdlet [Unregister-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2IamInstanceProfile.html).

   ```
   Unregister-EC2IamInstanceProfile -AssociationId iip-assoc-0044d817db6c0a4ba
   ```

------

## Perfis de identidade da instância para instâncias do Amazon EC2
<a name="ec2-instance-identity-roles"></a>

Cada instância do Amazon EC2 inicializada tem um *perfil de identidade da instância* que representa sua identidade. Um perfil de identidade de instância é um tipo de perfil do IAM. Serviços da AWS e recursos integrados para usar o perfil de identidade da instância podem usá-lo para identificar a instância com o serviço.

As credenciais do perfil de identidade da instância podem ser acessadas no Serviço de metadados da instância (IMDS) em `/identity-credentials/ec2/security-credentials/ec2-instance`. As credenciais consistem em um par temporário de chave de acesso da AWS e um token de sessão. Eles são usados para assinar solicitações AWS Sigv4 para os serviços da AWS que usam o perfil de identidade da instância. As credenciais estão presentes nos metadados da instância, independentemente de um serviço ou recurso que faça uso dos perfils de identidade da instância estar habilitado na instância.

Os perfis de identidade da instância são criados automaticamente quando uma instância é iniciada, não possuem nenhum documento de política de confiança de perfil e não estão sujeitos a nenhuma política de identidade ou de recursos.

### Serviços com suporte
<a name="iir-supported-services"></a>

Os serviços da AWS a seguir usam o perfil de identidade da instância:
+ **Amazon EC2**: o [EC2 Instance Connect](connect-linux-inst-eic.md) usa o perfil de identidade da instância para atualizar as chaves de host de uma instância do Linux.
+ **Amazon GuardDuty**: o [monitoramento de runtime do GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html) usa o perfil de identidade da instância para permitir que o agente de runtime envie telemetria de segurança para o endpoint da VPC do GuardDuty.
+ **AWS Lambda** – As [instâncias gerenciadas do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html) utilizam a função de identidade da instância para ganchos de ciclo de vida, telemetria e distribuição de artefatos.
+ **AWS Security Token Service (AWS STS)**: as credenciais do perfil de identidade da instância podem ser usadas com a ação AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html).
+ **AWS Systems Manager**: ao usar a [Configuração padrão de gerenciamento de host](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-default-host-management-configuration.html), o AWS Systems Manager usa a identidade fornecida pelo perfil de identidade da instância para registrar instâncias do EC2. Depois de identificar sua instância, o Systems Manager pode passar seu perfil do IAM `AWSSystemsManagerDefaultEC2InstanceManagementRole` para sua instância.

Os perfis de identidade da instância não podem ser usados com outros serviços ou recursos da AWS, pois eles não têm uma integração com os perfis de identidade da instância.

### ARN de perfil de identidade da instância
<a name="iir-arn"></a>

O ARN de perfil de identidade da instância assume o seguinte formato:

```
arn:aws-partition:iam::account-number:assumed-role/aws:ec2-instance/instance-id
```

Por exemplo:

```
arn:aws:iam::0123456789012:assumed-role/aws:ec2-instance/i-1234567890abcdef0
```

Para obter mais informações sobre ARNs, consulte [Nome do recurso da Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) no *Guia do usuário do IAM*.

# Gerenciamento de atualizações para instâncias do Amazon EC2
<a name="update-management"></a>

Recomendamos que você aplique patches, atualize e proteja regularmente o sistema operacional e as aplicações em suas instâncias do EC2. É possível usar o [Gerenciador de patches do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html) para automatizar o processo de instalação de atualizações relacionadas à segurança para o sistema operacional e para a aplicação.

Para instâncias do EC2 em um grupo de Auto Scaling, você pode usar o [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-patchasginstance.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-patchasginstance.html) runbook para ajudar a evitar que instâncias que estão passando por patches sejam substituídas Como alternativa, é possível usar qualquer serviço de atualização automática ou processos recomendados para instalar atualizações fornecidas pelo fornecedor da aplicação.

**Recursos**
+ **AL2023**: [Atualização do AL2023](https://docs.aws.amazon.com/linux/al2023/ug/updating.html) no *Guia do usuário do Amazon Linux 2023*
+ **AL2**: [Gerenciamento de software na sua instância do Amazon Linux 2](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) no *Guia do usuário do Amazon Linux 2*
+ **Instâncias do Windows**: [Gerenciamento de atualizações](ec2-windows-security-best-practices.md#ec2-windows-update-management)

# Práticas recomendadas de segurança para instâncias do Windows
<a name="ec2-windows-security-best-practices"></a>

Recomendamos seguir estas práticas recomendadas de segurança para as instâncias do Windows.

**Topics**
+ [Práticas recomendadas de segurança de alto nível](#high-level-security)
+ [Gerenciamento de atualizações](#ec2-windows-update-management)
+ [Gerenciamento de configuração](#configuration-management)
+ [Gerenciamento de alterações](#change-management)
+ [Auditoria e responsabilidade para instâncias do Windows do Amazon EC2](#audit-accountability)

## Práticas recomendadas de segurança de alto nível
<a name="high-level-security"></a>

Você deve seguir as seguintes práticas recomendadas de segurança de alto nível para as instâncias do Windows:
+ **Menos acesso**: conceda acesso somente a sistemas e locais confiáveis ​​e esperados. Isso se aplica a todos os produtos da Microsoft, como o Active Directory, servidores de produtividade empresarial da Microsoft e serviços de infraestrutura, como Serviços de área de trabalho remota, servidores de proxy reverso, servidores Web IIS e outros. Use os recursos da AWS, como os grupos de segurança da instância do Amazon EC2, listas de controle de acesso (ACLs) à rede e sub-redes públicas/privadas da Amazon VPC, para colocar a segurança em camadas em vários locais em uma arquitetura. Em uma instância do Windows, os clientes podem usar o Firewall do Windows para colocar mais uma camada na estratégia de defesa completa em sua implantação. Instale apenas os componentes e as aplicações do sistema operacional necessários para que o sistema funcione conforme projetado. Configure serviços de infraestrutura, como o IIS, para serem executados em contas de serviço ou para usar recursos como identidades de grupo de aplicações para acessar recursos local e remotamente na infraestrutura.
+ **Privilégio mínimo**: determine o conjunto mínimo de privilégios de que as instâncias e contas precisam para executar as funções. Restringir esses servidores e usuários para permitir apenas essas permissões definidas. Use técnicas, como controles de acesso baseados em função, para reduzir a área de superfície das contas administrativas e criar as funções mais limitadas para realizar uma tarefa. Use recursos do sistema operacional, como o Encrypting File System (EFS – Criptografia do sistema de arquivos) dentro do NTFS, para criptografar dados confidenciais em repouso e controlar o acesso de aplicações e de usuários a ele.
+ **Gerenciamento de configuração**: crie uma configuração de linha de base do servidor que incorpore a aplicação de patches de segurança atualizados e pacotes de proteção baseados em host que incluem antivírus, antimalware, detecção e prevenção de invasões, e monitoramento da integridade dos arquivos. Avalie cada servidor em relação à linha de base registrada atual para identificar e sinalizar quaisquer desvios. Verifique se cada servidor está configurado para gerar e armazenar com segurança os dados adequados de log e auditoria.
+ **Gerenciamento de alterações**: crie processos para controlar as alterações nas linhas de base da configuração do servidor e trabalhe em processos de alterações totalmente automatizados. Além disso, aproveite Just Enough Administration (JEA) com o Windows PowerShell DSC para limitar o acesso administrativo às funções mínimas necessárias.
+ **Gerenciamento de patches**: implemente processos que corrijam, atualizem e protejam o sistema operacional e as aplicações, regularmente, nas instâncias do EC2.
+ **Logs de auditoria**: audite o acesso e todas as alterações nas instâncias do Amazon EC2 para verificar a integridade do servidor e garantir que somente alterações autorizadas sejam feitas. Utilize funcionalidades como [Enhanced Log for IIS (Log aprimorado para IIS)](https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-85/enhanced-logging-for-iis85) para melhorar os recursos de registo de log padrão. Os recursos da AWS como Logs de fluxo da VPC e AWS CloudTrail também estão disponíveis para auditar o acesso à rede, incluindo solicitações permitidas/negadas e chamadas de API, respectivamente.

## Gerenciamento de atualizações
<a name="ec2-windows-update-management"></a>

Para garantir os melhores resultados ao executar o Windows Server no Amazon EC2, recomendamos implantar as seguintes práticas recomendadas:
+ [Configure Windows Update](#windows-update)
+ [Update drivers](#drivers)
+ [Use the latest Windows AMIs](#AMI)
+ [Test performance before migration](#test)
+ [Update launch agents](#agents)
+ Reiniciar a instância do Windows após instalar as atualizações. Para obter mais informações, consulte [Reinicializar uma instância do Amazon EC2](ec2-instance-reboot.md).

Para obter informações sobre como atualizar ou migrar uma instância do Windows para uma versão mais recente do Windows Server, consulte [Atualizar uma instância do Windows do EC2 para uma versão mais recente do Windows Server](serverupgrade.md).

**Configurar o Windows Update**  
Por padrão, as instâncias iniciadas usando AMIs do AWS Windows Server não recebem atualizações por meio do Windows Update.

**Atualizar drivers do Windows**

Mantenha os drivers mais recentes em todas as instâncias do EC2 do Windows para garantir que as correções de problemas e melhorias de performance mais recentes sejam aplicadas em toda a sua frota. Dependendo do tipo de instância, você deve atualizar os drivers PV da AWS, do Amazon ENA e do AWS NVMe.
+ Use [tópicos do SNS](xen-drivers-overview.md#drivers-subscribe-notifications) para receber atualizações de novos lançamentos de driver.
+ Use o runbook do AWS Systems Manager Automation [AWSSupport-UpgradeWindowsAWSDrivers](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-upgradewindowsawsdrivers.html) para aplicar facilmente as atualizações em todas as instâncias.

**Executar instâncias usando as AMIs mais recentes do Windows**

A AWS realiza o lançamento de AMIs do Windows todos os meses. Essas AMIs contêm os patches, os drivers e os agentes de inicialização mais recentes para o sistema operacional. É necessário utilizar a AMI mais recente ao executar novas instâncias ou ao criar suas próprias imagens personalizadas.
+ Para visualizar atualizações para cada versão das AMIs do Windows na AWS, consulte [Histórico de versões da AMI do Windows na AWS](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html).
+ Para criar com as AMIs mais recentes disponíveis, consulte [Consulta para a AMI mais recente do Windows usando o Systems Manager Parameter Store](https://aws.amazon.com/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/).
+ Para obter mais informações sobre as AMIs do Windows especializadas que você pode usar para executar instâncias para o seu banco de dados e casos de uso de hardening de conformidade, consulte [Specialized Windows AMIs](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/specialized-windows-amis.html) na *Referência de AMI do Windows da AWS*.

**Testar a performance do sistema/aplicação antes da migração**

Migrar aplicações empresariais para a AWS pode envolver muitas variáveis e configurações. Sempre teste a performance da solução do EC2 para garantir que:
+ Os tipos de instância estão configurados corretamente, incluindo o tamanho da instância, as redes avançadas e a locação (compartilhada ou dedicada).
+ A topologia da instância é apropriada para a workload e utiliza recursos de alta performance quando necessário, com locação dedicada, grupos de alocação, volumes de armazenamento de instâncias e bare metal.

**Instalar a versão mais recente do EC2Launch v2**  
Instale o agente EC2Launch v2 mais recente para garantir que os aprimoramentos mais recentes sejam aplicados em toda a sua frota. Para obter mais informações, consulte [Instalar o EC2Launch v2](ec2launch-v2-install.md).

Se você tiver uma frota mista ou quiser continuar usando os agentes EC2Launch (Windows Server 2016 e 2019) ou EC2 Config (somente SO herdado), atualize para as versões mais recentes dos respectivos agentes.

Há suporte para as atualizações automáticas nas seguintes combinações de agentes de execução e versão do Windows Server. É possível optar por receber atualizações automáticas no console [SSM Quick Setup Host Management](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-host-management.html) em **Amazon EC2 Launch Agents**.


| Versão do Windows | EC2Launch v1 | EC2Launch v2 | 
| --- | --- | --- | 
| 2016 | ✓ | ✓ | 
| 2019 | ✓ | ✓ | 
| 2022 |  | ✓ | 
+ Para obter mais informações sobre a atualização para o EC2Launch v2, consulte [Instalar a versão mais recente do EC2Launch v2](ec2launch-v2-install.md).
+ Para obter informações sobre como atualizar manualmente o EC2Config, consulte [Instalar a versão mais recente do EC2Config](UsingConfig_Install.md). 
+ Para obter informações sobre como atualizar manualmente o EC2Launch, consulte [Instalar a versão mais recente do EC2Launch](ec2launch-download.md).

## Gerenciamento de configuração
<a name="configuration-management"></a>

As imagens de máquina da Amazon (AMIs) fornecem uma configuração inicial para uma instância do Amazon EC2, que inclui o sistema operacional Windows e personalizações opcionais específicas do cliente, como aplicações e controles de segurança. Crie um catálogo de AMI que contém linhas de base de configuração de segurança personalizadas para garantir que todas as instâncias do Windows sejam iniciadas com controles de segurança padrão. As linhas de base de segurança podem ser incorporadas em uma AMI, inicializadas dinamicamente quando uma instância do EC2 é executada ou empacotadas como um produto para distribuição uniforme por meio de portfólios do AWS Service Catalog. Para obter mais informações sobre como proteger uma AMI, consulte [Práticas recomendadas para criar uma AMI](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html).

Cada instância do Amazon EC2 deve aderir aos padrões de segurança organizacional. Não instale nenhuma função e recurso do Windows que não seja necessário e instale software (antivírus, antimalware, mitigação de vulnerabilidades) para proteger contra códigos mal-intencionados, monitore a integridade do host e execute a detecção de intrusões. Configure o software de segurança para monitorar e manter as configurações de segurança do SO, proteger a integridade de arquivos críticos do SO e alertar sobre desvios da linha de base de segurança. Considere implementar benchmarks recomendados de configuração de segurança publicados pela Microsoft, pelo Centro de Segurança da Internet (CIS) ou pelo National Institute of Standards and Technology (NIST). Considere usar outras ferramentas da Microsoft para servidores de aplicações específicos, como o [Analisador de melhores práticas para SQL Server](https://www.microsoft.com/en-us/download/details.aspx?id=29302).

AWSOs clientes da também podem executar avaliações do Amazon Inspector para aprimorar a segurança e a conformidade das aplicações implantadas nas instâncias do Amazon EC2. O Amazon Inspector avalia automaticamente as aplicações quanto a vulnerabilidades ou desvios das práticas recomendadas e inclui uma base de conhecimento de centenas de regras mapeadas para padrões comuns de conformidade de segurança (por exemplo, PCI DSS) e definições de vulnerabilidade. Exemplos de regras incorporadas incluem verificar se o início remoto de sessão raiz está habilitado ou se versões de software vulneráveis estão instaladas. Essas regras são atualizadas regularmente pelos pesquisadores de segurança da AWS.

Ao proteger instâncias do Windows, recomendamos que você implemente os Serviços de Domínio do Active Directory para habilitar uma infraestrutura escalável, segura e gerenciável para locais distribuídos. Além disso, depois de iniciar instâncias por meio do console do Amazon EC2 ou usar uma ferramenta de provisionamento do Amazon EC2, como o AWS CloudFormation, é recomendável utilizar recursos nativos do SO, como o Microsoft Windows PowerShell DSC, para manter o estado de configuração em caso de oscilação de configuração.

## Gerenciamento de alterações
<a name="change-management"></a>

Depois que as linhas de base de segurança iniciais forem aplicadas às instâncias do Amazon EC2 durante a execução, controle as alterações contínuas do Amazon EC2 para manter a segurança das máquinas virtuais. Estabeleça um processo de gerenciamento de alterações para autorizar e incorporar alterações aos recursos da AWS (como grupos de segurança, tabelas de rotas e ACLs de rede), bem como a configurações do SO e de aplicações (como aplicação de patches do Windows ou da aplicação, atualizações de software ou atualizações de arquivos de configuração).

A AWS fornece várias ferramentas para ajudar a gerenciar alterações nos recursos da AWS, incluindo o AWS CloudTrail, o AWS Config, o CloudFormation e o AWS Elastic Beanstalk, além de pacotes de gerenciamento para o Systems Center Operations Manager e o System Center Virtual Machine Manager. Observe que a Microsoft lança patches do Windows na segunda terça-feira de cada mês (ou conforme necessário), e a AWS atualiza todas as AMIs do Windows gerenciadas pela AWS em até cinco dias após a Microsoft lançar um patch. Portanto, é importante corrigir continuamente todas as AMIs de linha de base, atualizar modelos do CloudFormation e configurações de grupo de Auto Scaling com os IDs de AMI mais recentes e implementar ferramentas para automatizar o gerenciamento de patches de instâncias em execução.

A Microsoft fornece várias opções para gerenciar o sistema operacional Windows e as alterações de aplicações. O SCCM, por exemplo, fornece cobertura completa do ciclo de vida das modificações do ambiente. Selecione ferramentas que atendam aos requisitos comerciais e controlem como as alterações afetarão os SLAs de aplicações, a capacidade, a segurança e os procedimentos de recuperação de desastres. Evite alterações manuais e, em vez disso, utilize o software de gerenciamento de configuração automatizado ou ferramentas da linha de comando, como o Run Command do EC2 ou o Windows PowerShell, para implementar processos de alteração com script e repetíveis. Para ajudar com esse requisito, use bastion hosts com registro em log aprimorado para todas as interações com suas instâncias do Windows para garantir que todos os eventos e tarefas sejam gravados automaticamente.

## Auditoria e responsabilidade para instâncias do Windows do Amazon EC2
<a name="audit-accountability"></a>

O AWS CloudTrail, o AWS Config e o Regras do AWS Config fornecem recursos de auditoria e controle de alterações para a auditoria de alterações de recursos da AWS. Configure os logs de eventos do Windows para enviar arquivos de log locais a um sistema centralizado de gerenciamento de logs a fim de preservar os dados de log para a análise de comportamento operacional e de segurança. O Microsoft System Center Operations Manager (SCOM) agrega informações sobre aplicações da Microsoft implantadas em instâncias do Windows e aplica conjuntos de regras pré-configurados e personalizados com base em funções e serviços de aplicações. Os Pacotes de Gerenciamento do System Center são baseados no SCOM para fornecer monitoramento e orientações de configuração específicos da aplicação. Esses [Pacotes de Gerenciamento](https://learn.microsoft.com/en-us/archive/technet-wiki/16174.microsoft-management-packs) oferecem suporte ao Windows Server Active Directory, SharePoint Server 2013, Exchange Server 2013, Lync Server 2013, SQL Server 2014 e muitos mais servidores e tecnologias.

Além das ferramentas de gerenciamento de sistemas da Microsoft, os clientes podem usar o Amazon CloudWatch para monitorar a utilização da CPU da instância, a performance do disco, a E/S da rede e realizar verificações de status do host e da instância. Os agentes de inicialização EC2Config, EC2Launch e EC2Launch v2 fornecem acesso a recursos avançados adicionais para instâncias do Windows. Por exemplo, eles podem exportar logs do sistema, de segurança, de aplicações e de Serviços de Informações da Internet (IIS) do Windows para o CloudWatch Logs, os quais poderão ser integrados a métricas e alarmes do Amazon CloudWatch. Os clientes também podem criar scripts que exportam contadores de performance do Windows para métricas personalizadas do Amazon CloudWatch.

# Pares de chaves do Amazon EC2 e instâncias do Amazon EC2
<a name="ec2-key-pairs"></a>

Um par de chaves, que consiste em uma chave pública e uma chave privada, trata-se de um conjunto de credenciais de segurança usadas para provar sua identidade ao se conectar a uma instância do Amazon EC2. Para instâncias do Linux, a chave privada permite usar o SSH com segurança en sua instância. Para instâncias do Windows, a chave privada é necessária para descriptografar a senha de administrador, que poderá então ser usada para se conectar à instância.

O Amazon EC2 armazena a chave pública na instância, e você armazena a chave privada, conforme mostrado no diagrama a seguir. É importante armazenar sua chave privada em um local seguro, pois qualquer pessoa que tiver acesso a ela poderá se conectar a suas instâncias que usam o par de chaves.

![\[Um par de chaves consiste em uma chave privada para o computador e em uma chave pública para a instância.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/ec2-key-pair.png)


Ao iniciar uma instância, é possível [especificar um par de chaves](ec2-instance-launch-parameters.md#liw-key-pair) para poder se conectar à instância usando um método que requer um par de chaves. Dependendo de como você gerencia sua segurança, é possível especificar o mesmo par de chaves para todas as suas instâncias ou especificar pares de chaves diferentes.

Para instâncias do Linux, quando a instância é inicializada pela primeira vez, a chave pública que você especificou na inicialização é colocada na instância do Linux em uma entrada dentro de `~/.ssh/authorized_keys`. Ao conectar-se à instância do Linux usando SSH, especifique a chave privada que corresponde à chave pública para fazer login.

Para obter mais informações sobre como se conectar à instância do EC2, consulte [Conexão com a instância do EC2](connect.md).

**Importante**  
Como o Amazon EC2 não mantém uma cópia da sua chave privada, não há como recuperar a chave privada caso você a perca. No entanto, ainda pode haver uma maneira de se conectar a instâncias para as quais você perdeu a chave privada. Para obter mais informações, consulte . [Perdi minha chave privada. Como posso me conectar à instância?](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair)

Como alternativa aos pares de chaves, é possível usar [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) para se conectar à instância como um shell interativo de um clique baseado no navegador ou a AWS Command Line Interface (AWS CLI).

**Topics**
+ [Criar um par de chaves para sua instância do Amazon EC2](create-key-pairs.md)
+ [Descrever seus pares de chaves](describe-keys.md)
+ [Excluir o par de chaves](delete-key-pair.md)
+ [Adicionar ou substituir uma chave pública na instância do Linux](replacing-key-pair.md)
+ [Verificar a impressão digital do par de chaves](verify-keys.md)

# Criar um par de chaves para sua instância do Amazon EC2
<a name="create-key-pairs"></a>

É possível usar o Amazon EC2 para criar seus pares de chaves ou usar uma ferramenta de terceiros para criar seus pares de chaves e depois importá-los para o Amazon EC2.

O Amazon EC2 é compatível com as chaves SSH-2 RSA de 2.048 bits para instâncias do Linux e do Windows. Além disso, o Amazon EC2 é compatível com chaves ED25519 para instâncias do Linux.

Para obter as instruções sobre como se conectar à instância depois de criar um par de chaves, consulte [Conectar-se à instância do Linux usando SSH](connect-to-linux-instance.md) e [Conectar-se à instância do Windows no usando RDP](connecting_to_windows_instance.md).

**Topics**
+ [Criar um par de chaves usando o Amazon EC2](#having-ec2-create-your-key-pair)
+ [Criar um par de chaves usando o AWS CloudFormation](#create-key-pair-cloudformation)
+ [Criar um par de chaves usando uma ferramenta de terceiros e importe a chave pública para o Amazon EC2](#how-to-generate-your-own-key-and-import-it-to-aws)

## Criar um par de chaves usando o Amazon EC2
<a name="having-ec2-create-your-key-pair"></a>

Quando você criar um par de chaves usando o Amazon EC2, a chave pública será armazenada no Amazon EC2 e você armazenará a chave privada.

É possível criar até 5.000 pares de chaves por região. Para solicitar um aumento de cota, crie um caso de suporte. Para obter mais informações, consulte [Criação de um caso de suporte](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case) no *Guia do usuário do Suporte*.

------
#### [ Console ]

**Para criar um par de chaves usando o Amazon EC2**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, em **Rede e segurança**, selecione **Pares de chaves**.

1. Escolha **Create key pair (Criar par de chaves)**.

1. Em **Name (Nome)**, insira um nome descritivo para o par de chaves. O Amazon EC2 associa a chave pública ao nome especificado como o nome da chave. Um nome de chave pode incluir até 255 caracteres ASCII. Não pode incluir espaços no início nem no final.

1. Selecione um tipo de par de chaves apropriado para seu sistema operacional:

   (Instâncias do Linux) Em **Tipo de par de chaves**, escolha **RSA** ou **ED25519**.

   (Instâncias do Windows) Em **Tipo de par de chaves**, escolha **RSA**. As chaves **ED25519** não são compatíveis com as instâncias do Windows.

1. Para **Formato de arquivo de chave privada**, escolha o formato no qual salvar a chave privada. Para salvar a chave privada em um formato que possa ser usado com o OpenSSH, escolha **pem**. Para salvar a chave privada em um formato que possa ser usado com o PuTTY, escolha **ppk**.

1. Para adicionar uma etiqueta à chave pública, escolha **Adicionar etiqueta**, e insira a chave e o valor da etiqueta. Repita esse procedimento para cada tag. 

1. Escolha **Create key pair (Criar par de chaves)**.

1. O arquivo de chave privada é baixado automaticamente pelo navegador. O nome do arquivo base é o nome especificado como o nome do par de chaves, e a extensão do nome do arquivo é determinada pelo formato do arquivo escolhido. Salve o arquivo de chave privada em um lugar seguro.
**Importante**  
Esta é a única chance de você salvar o arquivo de chave privada.

1. Se você planeja usar um cliente SSH em um computador macOS ou Linux para se conectar à instância do Linux, use o seguinte comando para definir as permissões do seu arquivo de chave privada para que apenas você possa lê-lo.

   ```
   chmod 400 key-pair-name.pem
   ```

   Se você não definir essas permissões, não poderá conectar-se à instância usando esse par de chaves. Para obter mais informações, consulte [Erro: arquivo de chave privada desprotegido](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

------
#### [ AWS CLI ]

**Para criar um par de chaves usando o Amazon EC2**

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html) da seguinte forma para gerar um par de chaves e salvar a chave privada em um arquivo `.pem`. A opção `--query` imprime o material da chave privada na saída. A opção `--output` salva o material da chave privada no arquivo especificado. A extensão deve ser `.pem` ou `.ppk`, dependendo do formato da chave. O nome da chave privada pode ser diferente do nome da chave pública mas, para facilitar, use o mesmo nome.

   ```
   aws ec2 create-key-pair \
       --key-name my-key-pair \
       --key-type rsa \
       --key-format pem \
       --query "KeyMaterial" \
       --output text > my-key-pair.pem
   ```

1. Se você planeja usar um cliente SSH em um computador macOS ou Linux para se conectar à instância do Linux, use o seguinte comando para definir as permissões do seu arquivo de chave privada para que apenas você possa lê-lo.

   ```
   chmod 400 key-pair-name.pem
   ```

   Se você não definir essas permissões, não poderá conectar-se à instância usando esse par de chaves. Para obter mais informações, consulte [Erro: arquivo de chave privada desprotegido](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

------
#### [ PowerShell ]

**Para criar um par de chaves usando o Amazon EC2**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2KeyPair.html) como a seguir para gerar e salvar a chave em um arquivo `.pem` ou `.ppk`. O cmdlet **Out-File** salva o material da chave privada em um arquivo com a extensão especificada. A extensão deve ser `.pem` ou `.ppk`, dependendo do formato da chave. O nome da chave privada pode ser diferente do nome da chave pública mas, para facilitar, use o mesmo nome.

```
(New-EC2KeyPair `
    -KeyName "my-key-pair" `
    -KeyType "rsa" `
    -KeyFormat "pem").KeyMaterial | Out-File -Encoding ascii -FilePath C:\path\my-key-pair.pem
```

------

## Criar um par de chaves usando o AWS CloudFormation
<a name="create-key-pair-cloudformation"></a>

Quando você cria um novo par de chaves usando o CloudFormation, a chave privada é salva no AWS Systems Manager Parameter Store. O nome do parâmetro tem o seguinte formato:

```
/ec2/keypair/key_pair_id
```

Para obter mais informações, consulte o [Armazenamento de parâmetros do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html), no *Guia do usuário do AWS Systems Manager*.

**Para criar um par de chaves usando o CloudFormation**

1. Especifique o recurso [AWS::EC2::KeyPair](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html) em seu modelo.

   ```
   Resources:
     NewKeyPair:
       Type: 'AWS::EC2::KeyPair'
       Properties: 
         KeyName: new-key-pair
   ```

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html) da seguinte forma para obter o ID do par de chaves.

   ```
   aws ec2 describe-key-pairs --filters Name=key-name,Values=new-key-pair --query KeyPairs[*].KeyPairId --output text
   ```

   O seguinte é um exemplo de saída.

   ```
   key-05abb699beEXAMPLE
   ```

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) da seguinte forma para obter o parâmetro para sua chave e salvar o material da chave em um arquivo `.pem`.

   ```
   aws ssm get-parameter --name /ec2/keypair/key-05abb699beEXAMPLE --with-decryption --query Parameter.Value --output text > new-key-pair.pem
   ```

**Permissões obrigatórias do IAM**

Para habilitar o CloudFormation a gerenciar parâmetros da Parameter Store em seu nome, o perfil do IAM assumido pelo CloudFormation ou seu usuário devem ter as permissões a seguir:
+ `ssm:PutParameter`: concede permissão para criar um parâmetro para o material da chave privada.
+ `ssm:DeleteParameter`: concede permissão para excluir o parâmetro que armazenou o material da chave privada. Essa permissão é necessária independentemente de o par de chaves ter sido importado ou criado pelo CloudFormation.

Quando o CloudFormation exclui um par de chaves criado ou importado por uma pilha, ele realiza uma verificação de permissões para determinar se você tem permissão para excluir os parâmetros, embora o CloudFormation só crie um parâmetro quando cria um par de chaves, não quando importa um par de chaves. O CloudFormation testa a permissão necessária usando um nome de parâmetro fabricado que não corresponde a nenhum parâmetro em sua conta. Portanto, você pode ver um nome de parâmetro fabricado na mensagem de erro `AccessDeniedException`.

## Criar um par de chaves usando uma ferramenta de terceiros e importe a chave pública para o Amazon EC2
<a name="how-to-generate-your-own-key-and-import-it-to-aws"></a>

Em vez de usar o Amazon EC2 para criar um par de chaves, você pode criar um par de chaves RSA ou ED25519 usando uma ferramenta de terceiros e, então, importar a chave pública para o Amazon EC2.

**Requisitos para pares de chaves**
+ Tipos compatíveis:
  + (Linux e Windows) RSA
  + (Somente Linux) ED25519
**nota**  
As chaves ED25519 não são compatíveis com as instâncias do Windows.
  + O Amazon EC2 não aceita chaves DSA.
+ Formatos com suporte
  + Formato de chave pública OpenSSH (para Linux, o formato em `~/.ssh/authorized_keys`)
  + (Somente Linux) Se você se conectar usando SSH enquanto usa a API do EC2 Instance Connect, o formato do SSH2 também será compatível.
  + O formato de arquivo de chave privada SSH deve ser PEM ou PPK
  + (Apenas RSA) Formato DER codificado em Base64
  + (Apenas RSA) Formato de arquivo de chave pública SSH, conforme especificado em [RFC 4716](https://www.ietf.org/rfc/rfc4716.txt)
+ Tamanhos compatíveis:
  + 1024, 2048 e 4096.
  + (Somente Linux) Se você se conectar usando SSH enquanto usa a API do EC2 Instance Connect, os tamanhos compatíveis serão 2048 e 4096.

**Para criar um par de chaves usando uma ferramenta de terceiros**

1. Gere um par de chaves com uma ferramenta de terceiros de sua escolha. Por exemplo, é possível usar **ssh-keygen** (uma ferramenta fornecida com a instalação padrão de OpenSSH). Como alternativa, Java, Ruby, Python e muitas outras linguagens de programação fornecem bibliotecas padrão que podem ser usadas para criar um par de chaves.
**Importante**  
A chave privada deve estar no formato PEM ou PPK. Por exemplo, use `ssh-keygen -m PEM` para gerar a chave OpenSSH no formato PEM.

1. Salve a chave pública em um arquivo local. Por exemplo, `~/.ssh/my-key-pair.pub` (Linux, macOS) ou `C:\keys\my-key-pair.pub` (Windows). A extensão do nome de arquivo para esse arquivo não é importante.

1. Salve a chave privada em um arquivo local que tenha a extensão `.pem` ou `.ppk`. Por exemplo, `~/.ssh/my-key-pair.pem` ou `~/.ssh/my-key-pair.ppk` (Linux, macOS) ou `C:\keys\my-key-pair.pem` ou `C:\keys\my-key-pair.ppk` (Windows). A extensão do arquivo é importante porque, dependendo da ferramenta usada para se conectar à instância, você precisará de um formato de arquivo específico. O OpenSSH requer um arquivo `.pem`, enquanto o PuTTY requer um arquivo `.ppk`.
**Importante**  
Salve o arquivo de chave privada em um lugar seguro. Você precisará fornecer o nome da chave pública ao iniciar uma instância e a chave privada correspondente sempre que se conectar à instância.

Depois de criar o par de chaves, use um dos seguintes métodos para importar o par de chaves para Amazon EC2.

------
#### [ Console ]

**Para importar a chave pública para o Amazon EC2**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Key Pairs (Pares de chaves)**.

1. Selecione **Import key pair (Importar par de chaves)**.

1. Em **Name** (Nome), insira um nome descritivo para a chave pública. O nome pode incluir até 255 caracteres ASCII. Não pode incluir espaços no início nem no final.
**nota**  
Quando você se conecta à instância pelo console do EC2, o console sugere esse nome para o arquivo de chave privada.

1. Escolha **Browse (Procurar)** para navegar e selecionar a chave pública ou cole o conteúdo da chave pública no campo **Public key contents (Conteúdo da chave pública)**.

1. Selecione **Import key pair (Importar par de chaves)**.

1. Verifique se a chave pública que você importou aparece na lista de pares de chaves.

------
#### [ AWS CLI ]

**Para importar a chave pública para o Amazon EC2**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html).

```
aws ec2 import-key-pair \
    --key-name my-key-pair \
    --public-key-material fileb://path/my-key-pair.pub
```

**Como verificar se o par de chaves foi importado com êxito**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html).

```
aws ec2 describe-key-pairs --key-names my-key-pair
```

------
#### [ PowerShell ]

**Para importar a chave pública para o Amazon EC2**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Import-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Import-EC2KeyPair.html).

```
$publickey=[Io.File]::ReadAllText("C:\Users\TestUser\.ssh\id_rsa.pub")
Import-EC2KeyPair `
    -KeyName my-key-pair `
    -PublicKey $publickey
```

**Como verificar se o par de chaves foi importado com êxito**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
Get-EC2KeyPair -KeyName my-key-pair
```

------

# Descrever seus pares de chaves
<a name="describe-keys"></a>

É possível descrever os pares de chaves que você armazenou no Amazon EC2. Também é possível recuperar o material da chave pública e identificar a chave pública especificada na inicialização.

**Topics**
+ [Descrever seus pares de chaves](#describe-public-key)
+ [Recuperar o material da chave pública](#retrieving-the-public-key)
+ [Identifique a chave pública que foi especificada na inicialização](#identify-key-pair-specified-at-launch)

## Descrever seus pares de chaves
<a name="describe-public-key"></a>

É possível visualizar as seguintes informações sobre suas chaves públicas armazenadas no Amazon EC2: nome da chave pública, ID, tipo de chave, impressão digital, material da chave pública, a data e a hora (no fuso horário UTC) em que a chave foi criada pelo Amazon EC2 (se a chave foi criada por uma ferramenta de terceiros, será mostrado a data e a hora em que a chave foi importada para o Amazon EC2) e todas as etiquetas associadas à chave pública.

------
#### [ Console ]

**Para visualizar informações sobre seus pares de chave**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação à esquerda, escolha **Key Pairs** (Pares de chaves).

1. É possível visualizar as informações sobre cada chave pública na tabela **Key pairs** (Pares de chaves).  
![\[Tabela de pares de chaves.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/key-pairs-describe-console.png)

1. Para visualizar as tags de uma chave pública, marque a caixa de seleção ao lado da chave e escolha **Ações**, **Gerenciar tags**.

------
#### [ AWS CLI ]

**Para visualizar informações sobre um par de chaves**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html).

```
aws ec2 describe-key-pairs --key-names key-pair-name
```

------
#### [ PowerShell ]

**Para visualizar informações sobre um par de chaves**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
Get-EC2KeyPair -KeyName key-pair-name
```

------

## Recuperar o material da chave pública
<a name="retrieving-the-public-key"></a>

É possível obter o material de chave pública para seus pares de chaves. Veja a seguir um exemplo de chave pública. Observe que as quebras de linha estão presentes para facilitar a legibilidade.

```
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
```

------
#### [ Private key ]

**Para recuperar o material de chave pública usando ssh-keygen (Linux)**  
No computador Linux ou macOS local, use o comando **ssh-keygen**. Especifique o caminho onde você fez download de sua chave privada (o arquivo `.pem`).

```
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
```

Se esse comando do **ssh-keygen** falhar, execute o seguinte comando **chmod** para garantir que o arquivo de chave privada tenha as permissões necessárias.

```
chmod 400 key-pair-name.pem
```

**Para recuperar o material de chave pública usando PuTTYgen (Windows)**  
Em seu computador Windows local, inicie o PuTTYgen. Escolha **Load**. Selecione o arquivo `.ppk` ou `.pem` de chave privada. O PuTTYgen exibe a chave pública em **Public key for pasting into OpenSSH authorized\$1keys file (Chave pública para colar no arquivo authorized\$1keys do OpenSSH)**. Também é possível visualizar a chave pública selecionando **Save public key (Salvar a chave pública)**, especificando um nome para o arquivo, salvando-o e abrindo-o.

------
#### [ AWS CLI ]

**Para recuperar o material de chave pública**  
Use o seguinte comando [describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html) e especifique a opção `--include-public-key`.

```
aws ec2 describe-key-pairs \
    --key-names key-pair-name \
    --include-public-key \
    --query "KeyPairs[].PublicKey"
```

------
#### [ PowerShell ]

**Para recuperar o material de chave pública**  
Use o cmdlet [Get-EC2KeyPair](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
(Get-EC2KeyPair -KeyName key-pair-name -IncludePublicKey $true).PublicKey
```

------
#### [ IMDSv2 ]

**Linux**  
Execute os seguintes comandos em sua instância Linux.

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

**Windows**  
Execute os seguintes cmdlets na sua instância Windows.

```
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

------
#### [ IMDSv1 ]

**Linux**  
Execute o seguinte comando em sua instância Linux.

```
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

**Windows**  
Execute o seguinte cmdlet na sua instância Windows.

```
Invoke-RestMethod -uri  http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

------

## Identifique a chave pública que foi especificada na inicialização
<a name="identify-key-pair-specified-at-launch"></a>

Se você especificar uma chave pública ao iniciar uma instância, o nome da chave pública será registrado pela instância. O nome de chave pública relatado para uma instância não muda mesmo que você altere a chave pública na instância ou adicione chaves públicas.

------
#### [ Console ]

**Para identificar a chave pública especificada na inicialização da instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância.

1. Na guia **Detalhes**, em **Detalhes da instância**, encontre **Par de chaves atribuído na inicialização**.

------
#### [ AWS CLI ]

**Para identificar a chave pública especificada na inicialização da instância**  
Use o seguinte comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-id i-1234567890abcdef0 \
    --query "Reservations[].Instances[].KeyName" \
    --output text
```

O seguinte é um exemplo de saída.

```
key-pair-name
```

------
#### [ PowerShell ]

**Para identificar a chave pública especificada na inicialização da instância**  
Use o cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances | Select KeyName
```

O seguinte é um exemplo de saída.

```
KeyName
-------
key-pair-name
```

------

# Excluir o par de chaves
<a name="delete-key-pair"></a>

É possível excluir um par de chaves, o que remove a chave pública armazenada no Amazon EC2. A exclusão de um par de chaves não exclui a chave privada correspondente.

Ao excluir uma chave pública usando os métodos a seguir, você só exclui a chave pública que foi armazenada no Amazon EC2 quando você [criou](create-key-pairs.md#having-ec2-create-your-key-pair) ou [importou](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws) o par de chaves. A exclusão de uma chave pública não a remove de nenhuma instância às quais você a adicionou, seja quando você iniciou a instância ou mais tarde. Também não exclui a chave privada do computador local. É possível continuar a se conectar a instâncias iniciadas usando um par de chaves excluído do Amazon EC2, desde que ainda tenha o arquivo (`.pem`) da chave privada.

**Importante**  
Se você estiver usando um grupo do Auto Scaling (por exemplo, em um ambiente do Elastic Beanstalk), verifique se a chave pública que você está excluindo não está especificada em um modelo de inicialização associado ou configuração de execução. Se o Amazon EC2 Auto Scaling detectar uma instância não íntegra, executará uma instância de substituição. No entanto, a inicialização da instância falhará se o par de chaves públicas não for encontrado. Para obter mais informações, consulte [Modelos de execução](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html) no *Manual do usuário do Amazon EC2 Auto Scaling*.

------
#### [ Console ]

**Exclua sua chave pública no Amazon EC2**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Key Pairs (Pares de chaves)**.

1. Selecione o par de chaves a ser excluído e escolha **Actions** (Ações), **Delete** (Excluir).

1. No campo de confirmação, insira `Delete` e escolha **Delete (Excluir)**.

------
#### [ AWS CLI ]

**Exclua sua chave pública no Amazon EC2**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html).

```
aws ec2 delete-key-pair --key-name my-key-pair
```

------
#### [ PowerShell ]

**Exclua sua chave pública no Amazon EC2**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2KeyPair.html).

```
Remove-EC2KeyPair -KeyName my-key-pair
```

------

# Adicionar ou substituir uma chave pública na instância do Linux
<a name="replacing-key-pair"></a>


|  | 
| --- |
| Se você perder uma chave privada, perderá o acesso a todas as instâncias que usam o par de chaves. Para obter mais informações sobre como se conectar a uma instância usando um par de chaves diferente daquele que você especificou ao iniciar a execução, consulte [Eu perdi minha chave privada](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair). | 

Ao iniciar uma instância, é possível [especificar um par de chaves](ec2-instance-launch-parameters.md#liw-key-pair). Quando a instância é iniciada pela primeira vez, a chave pública especificada no lançamento é colocada na instância do Linux em uma entrada dentro de `~/.ssh/authorized_keys`. Ao conectar-se pela primeira vez à instância do Linux usando SSH, você especifica o usuário padrão e a chave privada que corresponde à chave pública que está armazenada na instância do Linux.

Depois de se conectar à instância, você pode alterar o par de chaves usado para acessar a conta padrão do sistema da instância adicionando uma nova chave pública na instância ou substituindo a chave pública (excluindo a chave pública existente e adicionando uma nova) na instância. Também é possível remover todas as chaves públicas de uma instância.

É possível adicionar ou substituir um par de chaves pelos seguintes motivos:
+ Se um usuário da sua organização requisitar acesso ao usuário no sistema usando um par de chaves separado, será possível adicionar a chave pública à sua instância.
+ Se alguém tiver uma cópia da chave privada (arquivo `.pem`) e você quiser impedir que essa pessoa se conecte à sua instância (por exemplo, se tiver saído da organização), poderá excluir a chave pública na instância e substituí-la por uma nova.
+ Se você criar uma AMI do Linux a partir de uma instância, o material da chave pública será copiado da instância para a AMI. Se você executar uma instância da AMI, a nova instância incluirá a chave pública da instância original. Para impedir que alguém com a chave privada se conecte à nova instância, remova a chave pública da instância original *antes* de criar a AMI.

Use os procedimentos a seguir para modificar o par de chaves para o usuário padrão, como `ec2-user`. Para obter informações sobre como adicionar usuários à sua instância, consulte a documentação do sistema operacional utilizado na instância.

**Para adicionar ou substituir um par de chaves**

1. Crie um par de chaves usando [o console do Amazon EC2](create-key-pairs.md#having-ec2-create-your-key-pair) ou uma [ferramenta de terceiros](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws).

1. Recupere a chave pública do seu novo par de chaves. Para obter mais informações, consulte [Recuperar o material da chave pública](describe-keys.md#retrieving-the-public-key).

1. [Conecte-se à sua instância](connect-to-linux-instance.md).

1. Na instância, usando o editor de texto de sua escolha, abra o arquivo `.ssh/authorized_keys`. Cole as informações de chave pública do novo par de chaves abaixo das informações de chave pública existentes e salve o arquivo.

1. Desconecte-se da instância. Teste se é possível se conectar à instância usando o arquivo de chave privada do novo par de chaves.

1. Se você estiver usando o Auto Scaling, a frota do EC2 ou um modelo de inicialização para iniciar as instâncias, verifique se o par de chaves sendo substituído está especificado no modelo de inicialização ou na configuração de inicialização. Caso contrário, ocorrerá falha nas inicializações de instâncias

1. (Opcional) Se você estiver substituindo um par de chaves existente, conecte-se à sua instância e exclua as informações de chave pública para o par de chaves original do arquivo `.ssh/authorized_keys`.

**Para remover uma chave pública de uma instância**

1. [Conecte-se à sua instância](connect-to-linux-instance.md).

1. Usando um editor de texto à sua escolha, abra o arquivo `.ssh/authorized_keys` na instância. Exclua as informações da chave pública e salve o arquivo.

**Atenção**  
Se você remover todas as chaves públicas e se desconectar de uma instância, não poderá se reconectar a menos que tenha configurado uma maneira alternativa de fazer login.

# Verificar a impressão digital do par de chaves
<a name="verify-keys"></a>

Para verificar a impressão digital do seu par de chaves, compare a impressão digital exibida na página **Pares de chaves** no console do Amazon EC2 ou a impressão digital retornada pelo comando [describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html) com a impressão digital gerada usando a chave privada em seu computador local. Essas impressões digitais devem coincidir.

Quando o Amazon EC2 calcula uma impressão digital, ele pode incluir preenchimento na impressão digital com caracteres `=`. Outras ferramentas, como **ssh-keygen**, podem omitir esse preenchimento.

Se você estiver tentando verificar a impressão digital da instância do Linux do EC2 em vez da impressão digital do par de chaves, consulte [Obter a impressão digital da instância](connection-prereqs-general.md#connection-prereqs-fingerprint).

## Como as impressões digitais são calculadas
<a name="how-ec2-key-fingerprints-are-calculated"></a>

O Amazon EC2 usa diferentes funções de hash para calcular as impressões digitais de pares de chaves RSA e ED25519. Além disso, para pares de chaves RSA, o Amazon EC2 calcula as impressões digitais de maneira diferente. O serviço usa funções diferentes de hash dependendo de o par de chaves ter sido criado pelo Amazon EC2 ou importado para o Amazon EC2.

A tabela a seguir lista as funções de hash usadas para calcular as impressões digitais para pares de chaves RSA e ED25519 que são criados pelo Amazon EC2 e importados para o Amazon EC2.


**(Instâncias do Linux) Funções de hash usadas para calcular impressões digitais**  

| Fonte do par de chaves | Pares de chaves RSA (Windows e Linux) | Pares de chaves ED25519 (Linux) | 
| --- | --- | --- | 
| Criado pelo Amazon EC2 | SHA-1 | SHA-256 | 
| Importado para o Amazon EC2 | MD5¹ | SHA-256 | 

¹ Se você importar uma chave RSA pública para o Amazon EC2, a impressão digital será calculada usando uma função hash MD5. Isso continua sendo verdadeiro independentemente de como você tenha criado o par de chaves. Por exemplo, usando uma ferramenta de terceiros ou gerando uma nova chave pública com base em uma chave privada existente criada usando o Amazon EC2.

## Ao usar o mesmo par de chaves em regiões diferentes
<a name="when-using-same-key-pair-in-different-regions"></a>

Se você planeja usar o mesmo par de chaves para se conectar a instâncias em diferentes Regiões da AWS, é necessário importar a chave pública para todas as regiões nas quais você a usará. Se usar o Amazon EC2 para criar o key pair, será possível [Recuperar o material da chave pública](describe-keys.md#retrieving-the-public-key) de forma que você possa importar a chave pública para as outras regiões.

**nota**  
Se você criar um par de chaves RSA usando o Amazon EC2 e gerar uma chave pública com base na chave privada do Amazon EC2, as chaves públicas importadas terão uma impressão digital diferente da chave pública original. Isso ocorre porque a impressão digital da chave RSA original criada usando o Amazon EC2 é calculada usando uma função de hash SHA-1, enquanto a impressão digital das chaves RSA importadas é calculada usando uma função de hash MD5.
Para pares de chaves ED25519, as impressões digitais serão as mesmas, independentemente de terem sido criadas pelo Amazon EC2 ou importadas para o Amazon EC2, porque a mesma função hash SHA-256 é usada para calcular a impressão digital.

## Gerar uma impressão digital com base em uma chave privada
<a name="generate-fingerprint-from-private-key"></a>

Use um dos seguintes comandos para gerar uma impressão digital com base na chave privada em sua máquina local.

Se estiver usando uma máquina local do Windows, poderá executar os comandos a seguir usando o Subsistema do Windows para Linux (WSL). Instale o WSL e uma distribuição do Linux usando as instruções em [Como instalar Linux no Windows com WSL](https://learn.microsoft.com/en-us/windows/wsl/install). O exemplo fornecido nas instruções instala a distribuição Ubuntu do Linux, mas é possível instalar qualquer distribuição. Você é solicitado a reiniciar o computador para que as alterações sejam implementadas.
+ **Se tiver criado o par de chaves usando o Amazon EC2**

  Use as ferramentas OpenSSL para gerar uma impressão digital como apresentado nos exemplos a seguir.

  Para pares de chaves do RSA:

  ```
  openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
  ```

  (Instâncias do Linux) Para pares de chaves ED25519:

  ```
  ssh-keygen -l -f path_to_private_key
  ```
+ **(Somente pares de chaves RSA) Se você tiver importado a chave pública para o Amazon EC2**

  É possível seguir este procedimento independentemente de como criou o par de chaves, usando, por exemplo, uma ferramenta de terceiros ou gerando uma nova chave pública a partir de uma chave privada existente criada usando o Amazon EC2

  Use as ferramentas OpenSSL para gerar a impressão digital como apresentado no exemplo a seguir.

  ```
  openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c
  ```
+ **Se tiver criado um par de chaves OpenSSH usando o OpenSSH 7.8 ou posterior e importado a chave pública para o Amazon EC2**

  Use o **ssh-keygen** para gerar uma impressão digital como apresentado nos exemplos a seguir.

  Para pares de chaves do RSA:

  ```
  ssh-keygen -ef path_to_private_key -m PEM | openssl rsa -RSAPublicKey_in -outform DER | openssl md5 -c
  ```

  (Instâncias do Linux) Para pares de chaves ED25519:

  ```
  ssh-keygen -l -f path_to_private_key
  ```

# Grupos de segurança do Amazon EC2 para as instâncias do EC2
<a name="ec2-security-groups"></a>

Um *grupo de segurança* atua como firewall virtual para as instâncias do EC2 visando controlar o tráfego de entrada e de saída. As regras de entrada controlam o tráfego de entrada para a instância e as regras de saída controlam o tráfego de saída da instância. Ao executar sua instância, é possível especificar um ou mais grupos de segurança. Se você não especificar um grupo de segurança, o Amazon EC2 usará o grupo de segurança padrão para a VPC. Depois de executar uma instância, é possível alterar seus grupos de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. Para obter mais informações, consulte [Segurança no Amazon EC2](ec2-security.md). A AWS fornece grupos de segurança como uma das ferramentas para proteger as instâncias, e você precisa configurá-los para atender às suas necessidades de segurança. Se houver requisitos que não sejam totalmente atendidos pelos grupos de segurança, é possível manter seu próprio firewall em qualquer uma das instâncias além de usar grupos de segurança.

**Preços**  
Não há cobrança adicional pelo uso de grupos de segurança.

**Topics**
+ [Visão geral](#security-group-basics)
+ [Criar um grupo de segurança para a instância do Amazon EC2](creating-security-group.md)
+ [Alterar os grupos de segurança da instância do Amazon EC2](changing-security-group.md)
+ [Excluir um grupo de segurança do Amazon EC2](deleting-security-group.md)
+ [Rastreamento de conexão de grupo de segurança do Amazon EC2](security-group-connection-tracking.md)
+ [Regras de grupo de segurança para diferentes casos de uso](security-group-rules-reference.md)

## Visão geral
<a name="security-group-basics"></a>

É possível associar cada instância a vários grupos de segurança e associar cada grupo de segurança a várias instâncias. Você adiciona regras a cada security group que permite tráfego de entrada ou de saída das instâncias associadas. É possível modificar as regras de um grupo de segurança a qualquer momento. As regras novas e modificadas são aplicadas automaticamente para todas as instâncias que estão associados ao grupo de segurança. Quando o Amazon EC2 decide se deve permitir que o tráfego atinja uma instância, ele avalia todas as regras de todos os grupos de segurança associados à instância. Para ter mais informações, consulte [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) no *Guia do usuário da Amazon VPC*.

O diagrama a seguir mostra uma VPC com uma sub-rede, um gateway da Internet e um grupo de segurança. A sub-rede contém instâncias do EC2. O grupo de segurança está associado às instâncias. O único tráfego que chega à instância é aquele permitido pelas regras do grupo de segurança. Por exemplo, se o grupo de segurança contiver uma regra que permita o tráfego SSH da rede, será possível realizar a conexão com a instância com o computador ao usar SSH. Se o grupo de segurança contiver uma regra que permita todo o tráfego dos recursos associados a ele, cada instância poderá receber qualquer tráfego enviado das outras instâncias.

![\[Uma VPC com um grupo de segurança. As instâncias do EC2 na sub-rede estão associadas ao grupo de segurança.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/ec2-security-groups.png)


Os grupos de segurança são stateful — se você enviar uma solicitação da instância, o tráfego da resposta dessa solicitação terá permissão para fluir, independentemente das regras de entrada do grupo de segurança. Além disso, as respostas ao tráfego de entrada autorizado são permitidas para fluir, independentemente das regras de saída. Para obter mais informações, consulte [Acompanhamento da conexão](security-group-connection-tracking.md).

# Criar um grupo de segurança para a instância do Amazon EC2
<a name="creating-security-group"></a>

Os grupos de segurança atuam como firewall para instâncias associadas, controlando o tráfego de entrada e de saída no nível da instância. É possível adicionar regras a um grupo de segurança que permitam que você se conecte à instância usando SSH (instâncias do Linux) ou RDP (instâncias do Windows). Você também pode adicionar regras que permitam o tráfego do cliente, por exemplo, o tráfego HTTP e HTTPS destinado a um servidor Web.

É possível associar um grupo de segurança a uma instância quando a inicia. Quando você adiciona ou remove regras de grupos de segurança associados, essas alterações são aplicadas automaticamente a todas as instâncias às quais você associou o grupo de segurança.

Depois de iniciar uma instância, você pode associar grupos de segurança adicionais. Para obter mais informações, consulte [Alterar os grupos de segurança da instância do Amazon EC2](changing-security-group.md).

É possível adicionar regras de grupo de segurança de entrada e saída quando criar um grupo de segurança ou pode adicioná-las mais tarde. Para obter mais informações, consulte [Configurar regras de grupos de segurança](changing-security-group.md#add-remove-security-group-rules). Para obter exemplos de regras que você pode adicionar a um grupo de segurança, consulte [Regras de grupo de segurança para diferentes casos de uso](security-group-rules-reference.md).

**Considerações**
+ Novos grupos de segurança começam com apenas uma regra de saída que permite que todo o tráfego deixe as instâncias. Adicione regras para permitir qualquer tráfego de entrada ou para restringir o tráfego de saída.
+ Ao configurar uma fonte para uma regra que permita acesso SSH ou RDP às instâncias, não autorize acesso de qualquer lugar, pois isso concederia acesso à instância de todos os endereços IP da Internet. Isso é aceitável por um período curto em um ambiente de teste, mas não é seguro em ambientes de produção.
+ Se houver mais de uma regra para uma porta específica, o Amazon EC2 aplicará a regra mais permissiva. Por exemplo, se você tiver uma regra que permita o acesso à porta TCP 22 (SSH) do endereço IP 203.0.113.1 e outra regra que permita o acesso à porta TCP 22 de qualquer lugar, todos terão acesso à porta TCP 22.
+ É possível associar vários grupos de segurança a uma instância. Portanto, uma instância pode ter centenas de regras aplicáveis. Isso pode causar problemas quando você acessar a instância. Recomendamos que você condense suas regras o máximo possível.
+ Quando você especifica um grupo de segurança como a origem ou o destino de uma regra, a regra afeta todas as instâncias associadas ao grupo de segurança. O tráfego de entrada é permitido com base nos endereços IP privados das instâncias associadas ao grupo de segurança de origem (e não aos endereços IP público ou IP elástico). Para obter mais informações sobre endereços IP, consulte [Endereçamento IP de instâncias do Amazon EC2](using-instance-addressing.md).
+ O Amazon EC2 bloqueia o tráfego na porta 25 por padrão. Para obter mais informações, consulte [Restrição para e-mails enviados usando a porta 25](ec2-resource-limits.md#port-25-throttle).

------
#### [ Console ]

**Para criar um security group**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Grupos de segurança**.

1. Escolha **Criar grupo de segurança**.

1. Insira um nome descritivo e uma breve descrição para o grupo de segurança. Você não pode alterar o nome e a descrição de um grupo de segurança depois que ele é criado.

1. Em **VPC**, escolha a VPC na qual você executará suas instâncias do Amazon EC2.

1. (Opcional) Para adicionar regras de entrada, escolha **Regras de entrada**. Em cada regra, escolha **Adicionar regra** e especifique o protocolo, a porta e a origem. Por exemplo, para permitir tráfego SSH, escolha **SSH** em **Tipo** e especifique o endereço IPv4 público do seu computador ou rede em **Origem**.

1. (Opcional) Para adicionar regras de saída, escolha **Regras de saída**. Em cada regra, escolha **Adicionar regra** e especifique o protocolo, a porta e o destino. Caso contrário, você pode manter a regra padrão, o que permite todo o tráfego de saída.

1. (Opcional) Para adicionar uma tag, escolha **Add new tag** (Adicionar nova tag) e insira a chave e o valor da tag.

1. Escolha **Create security group (Criar grupo de segurança)**.

------
#### [ AWS CLI ]

**Como criar um grupo de segurança**  
Use o seguinte comando [create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html).

```
aws ec2 create-security-group \
    --group-name my-security-group \
    --description "my security group" \
    --vpc-id vpc-1234567890abcdef0
```

Para exemplos que adicionam regras, consulte [Configurar regras de grupos de segurança](changing-security-group.md#add-remove-security-group-rules).

------
#### [ PowerShell ]

**Como criar um grupo de segurança**  
Use o cmdlet [New-EC2SecurityGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2SecurityGroup.html).

```
New-EC2SecurityGroup `
    -GroupName my-security-group `
    -Description "my security group" `
    -VpcId vpc-1234567890abcdef0
```

Para exemplos que adicionam regras, consulte [Configurar regras de grupos de segurança](changing-security-group.md#add-remove-security-group-rules).

------

# Alterar os grupos de segurança da instância do Amazon EC2
<a name="changing-security-group"></a>

É possível especificar grupos de segurança para instâncias do Amazon EC2 quando iniciá-las. Depois de iniciar uma instância, você pode adicionar ou remover grupos de segurança. Você também pode adicionar, remover ou editar regras de grupos de segurança para grupos de segurança associados a qualquer momento.

Os grupos de segurança estão associados a interfaces de rede. Adicionar ou remover grupos de segurança altera os grupos de segurança associados à interface de rede primária. Também é possível alterar os grupos de segurança associados a interfaces de rede secundárias. Para obter mais informações, consulte [Modificar atributos da interface de rede](modify-network-interface-attributes.md).

**Topics**
+ [Adicionar ou remover grupos de segurança](#add-remove-instance-security-groups)
+ [Configurar regras de grupos de segurança](#add-remove-security-group-rules)

## Adicionar ou remover grupos de segurança
<a name="add-remove-instance-security-groups"></a>

Após iniciar uma instância, você pode adicionar ou remover grupos de segurança da lista de grupos de segurança associados. Quando você associa vários grupos de segurança a uma instância, as regras de cada security group são efetivamente agregadas para criar um conjunto de regras. O Amazon EC2 usa esse conjunto de regras para determinar se deve permitir tráfego.

**Requisitos**
+ A instância deve estar no estado `running` ou `stopped`.

------
#### [ Console ]

**Para modificar os grupos de segurança de uma instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância e, em seguida, escolha **Actions** (Ações), **Security ** (Segurança), **Change security groups** (Alterar grupos de segurança).

1. Em **Associated security groups** (Grupos de segurança associados), selecione um grupo de segurança na lista e escolha **Add security group** (Adicionar grupo de segurança).

   Para remover um grupo de segurança já associado, escolha **Remove (Remover)** para esse grupo de segurança.

1. Escolha **Salvar**.

------
#### [ AWS CLI ]

**Para modificar os grupos de segurança de uma instância**  
Use o seguinte comando [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html).

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --groups sg-1234567890abcdef0
```

------
#### [ PowerShell ]

**Para modificar os grupos de segurança de uma instância**  
Use o cmdlet [Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html).

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -Group sg-1234567890abcdef0
```

------

## Configurar regras de grupos de segurança
<a name="add-remove-security-group-rules"></a>

Depois de criar um grupo de segurança, você pode adicionar, atualizar e excluir as regras dele. Quando você adiciona, atualiza ou exclui uma regra, a alteração é aplicada automaticamente aos recursos associados ao grupo de segurança.

Para obter exemplos de regras que você pode adicionar a um grupo de segurança, consulte [Regras de grupo de segurança para diferentes casos de uso](security-group-rules-reference.md).

**Permissões obrigatórias**  
Antes de começar, verifique se você tem as permissões necessárias. Para obter mais informações, consulte [Exemplo: trabalhar com grupos de segurança](iam-policies-ec2-console.md#ex-security-groups).

**Protocolos e portas**
+ Com o console, quando você seleciona um tipo predefinido, **Protocolo** e **Intervalo de portas** são especificados para você. Para inserir um intervalo de portas, você deve selecionar um dos seguintes tipos personalizados: **TCP personalizado** ou **UDP personalizado** .
+ Com a AWS CLI, você pode adicionar uma única regra com uma única porta usando as opções `--protocol` e `--port`. Para adicionar várias regras ou uma regra com um intervalo de portas, use a opção `--ip-permissions`.

**Origens e destinos**
+ Com o console, você pode especificar o seguinte como origens para as regras de entrada ou destinos para as regras de saída.
  + **Personalizado**: um bloco CIDR IPv4 e um bloco CIDR IPv6, um grupo de segurança ou uma lista de prefixos.
  + **Anywhere-IPv4**: o bloco CIDR IPv4 0.0.0.0/0.
  + **Anywhere-IPv6**: o bloco CIDR IPv6 ::/0.
  + **Meu IP**: o endereço IPv4 público do computador local.
+ Com a AWS CLI, você pode especificar um bloco CIDR IPv4 usando a opção `--cidr` ou um grupo de segurança usando a opção `--source-group`. Para especificar uma lista de prefixos ou um bloco CIDR IPv6, use a opção `--ip-permissions`.

**Atenção**  
Se você adicionar regras de entrada para as portas 22 (SSH) ou 3389 (RDP), recomendamos enfaticamente que você autorize somente o endereço IP específico ou um intervalo de endereços que precisem de acesso às instâncias. Caso escolha **Anywhere-IPv4**, você permitirá que o tráfego de todos os endereços IPv4 acessem as instâncias usando o protocolo especificado. Caso escolha **Anywhere-IPv6**, você permitirá que o tráfego de todos os endereços IPv6 acessem as instâncias usando o protocolo especificado.

------
#### [ Console ]

**Para configurar regras do grupo de segurança**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Grupos de segurança**.

1. Selecione o grupo de segurança.

1. Para editar as regras de entrada, escolha **Editar regras de entrada** em **Ações** ou na guia **Regras de entrada**.

   1. Para adicionar uma regra, escolha **Adicionar regra** e insira o tipo, o protocolo, a porta e a origem da regra.

      Se o tipo for TCP ou UDP, será necessário inserir o intervalo de portas a ser permitido. Para ICMP personalizado, você deverá escolher o nome do tipo ICMP em **Protocol** (Protocolo) e, se aplicável, o nome do código em **Port range** (Intervalo de portas). Para qualquer outro tipo, o protocolo e o intervalo de portas serão configurados para você.

   1. Para atualizar uma regra, altere o protocolo, a descrição e a origem da regra, conforme necessário. Porém, você não pode alterar o tipo de origem. Por exemplo, se a origem for um bloco CIDR IPv4, você não poderá especificar um bloco CIDR IPv6, uma lista de prefixos ou um grupo de segurança.

   1. Para excluir uma regra, escolha seu botão **Excluir**.

1. Para editar as regras de saída, escolha **Editar regras de saída** em **Ações** ou na guia **Regras de saída**.

   1. Para adicionar uma regra, escolha **Adicionar regra** e insira o tipo, o protocolo, a porta e o destino da regra. Você também pode inserir uma descrição opcional.

      Se o tipo for TCP ou UDP, será necessário inserir o intervalo de portas a ser permitido. Para ICMP personalizado, você deverá escolher o nome do tipo ICMP em **Protocol** (Protocolo) e, se aplicável, o nome do código em **Port range** (Intervalo de portas). Para qualquer outro tipo, o protocolo e o intervalo de portas serão configurados para você.

   1. Para atualizar uma regra, altere o protocolo, a descrição e a origem da regra, conforme necessário. Porém, você não pode alterar o tipo de origem. Por exemplo, se a origem for um bloco CIDR IPv4, você não poderá especificar um bloco CIDR IPv6, uma lista de prefixos ou um grupo de segurança.

   1. Para excluir uma regra, escolha seu botão **Excluir**.

1. Selecione **Salvar regras**.

------
#### [ AWS CLI ]

**Para adicionar regras de grupo de segurança**  
Use o comando [authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html) para adicionar regras de entrada. O exemplo a seguir permite tráfego SSH de entrada proveniente dos blocos CIDR na lista de prefixos especificada.

```
aws ec2 authorize-security-group-ingress \
    --group-id sg-1234567890abcdef0 \
    --ip-permissions 'IpProtocol=tcp,FromPort=22,ToPort=22,PrefixListIds=[{PrefixListId=pl-f8a6439156EXAMPLE}]'
```

Use o comando [authorize-security-group-egress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-egress.html) para adicionar regras de saída. O exemplo a seguir permite tráfego TCP de saída na porta 80 para instâncias com o grupo de segurança especificado.

```
aws ec2 authorize-security-group-egress \
    --group-id sg-1234567890abcdef0 \
    --ip-permissions 'IpProtocol=tcp,FromPort=80,ToPort=80,UserIdGroupPairs=[{GroupId=sg-0aad1c26bb6EXAMPLE}]'
```

**Para remover regras de grupo de segurança**  
Use o seguinte comando [revoke-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/revoke-security-group-ingress.html) para remover uma regra de entrada.

```
aws ec2 revoke-security-group-egress \
    --group id sg-1234567890abcdef0 \
    --security-group-rule-ids sgr-09ed298024EXAMPLE
```

Use o seguinte comando [revoke-security-group-egress](https://docs.aws.amazon.com/cli/latest/reference/ec2/revoke-security-group-egress.html) para remover uma regra de saída.

```
aws ec2 revoke-security-group-ingress \
    --group id sg-1234567890abcdef0 \
    --security-group-rule-ids sgr-0352250c1aEXAMPLE
```

**Para modificar regras do grupo de segurança**  
Use o comando [modify-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-security-group-rules.html). O exemplo a seguir altera o bloco CIDR IPv4 da regra do grupo de segurança especificado.

```
aws ec2 modify-security-group-rules \
    --group id sg-1234567890abcdef0 \
    --security-group-rules 'SecurityGroupRuleId=sgr-09ed298024EXAMPLE,SecurityGroupRule={IpProtocol=tcp,FromPort=80,ToPort=80,CidrIpv4=0.0.0.0/0}'
```

------
#### [ PowerShell ]

**Para adicionar regras de grupo de segurança**  
Use o cmdlet [Grant-EC2SecurityGroupIngress](https://docs.aws.amazon.com/powershell/latest/reference/items/Grant-EC2SecurityGroupIngress.html) para adicionar regras de entrada. O exemplo a seguir permite tráfego SSH de entrada proveniente dos blocos CIDR na lista de prefixos especificada.

```
$plid = New-Object -TypeName Amazon.EC2.Model.PrefixListId
$plid.Id = "pl-f8a6439156EXAMPLE"
Grant-EC2SecurityGroupIngress `
    -GroupId sg-1234567890abcdef0 `
    -IpPermission @{IpProtocol="tcp"; FromPort=22; ToPort=22; PrefixListIds=$plid}
```

Use o cmdlet [Grant-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Grant-EC2SecurityGroupEgress.html) para adicionar regras de saída. O exemplo a seguir permite tráfego TCP de saída na porta 80 para instâncias com o grupo de segurança especificado.

```
$uigp = New-Object -TypeName Amazon.EC2.Model.UserIdGroupPair
$uigp.GroupId = "sg-0aad1c26bb6EXAMPLE"
Grant-EC2SecurityGroupEgress `
    -GroupId sg-1234567890abcdef0 `
    -IpPermission @{IpProtocol="tcp"; FromPort=80; ToPort=80; UserIdGroupPairs=$uigp}
```

**Para remover regras de grupo de segurança**  
Use o cmdlet [Revoke-EC2SecurityGroupIngress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupIngress.html) para remover regras de entrada.

```
Revoke-EC2SecurityGroupIngress `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRuleId sgr-09ed298024EXAMPLE
```

Use o cmdlet [Revoke-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupEgress.html) para remover regras de saída.

```
Revoke-EC2SecurityGroupEgress `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRuleId sgr-0352250c1aEXAMPLE
```

**Para modificar regras do grupo de segurança**  
Use o cmdlet [Edit-EC2SecurityGroupRule](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SecurityGroupRule.html). O exemplo a seguir altera o bloco CIDR IPv4 da regra do grupo de segurança especificado.

```
$sgrr = New-Object -TypeName Amazon.EC2.Model.SecurityGroupRuleRequest
$sgrr.IpProtocol = "tcp"
$sgrr.FromPort = 80
$sgrr.ToPort = 80
$sgrr.CidrIpv4 = "0.0.0.0/0"
$sgr = New-Object -TypeName Amazon.EC2.Model.SecurityGroupRuleUpdate
$sgr.SecurityGroupRuleId = "sgr-09ed298024EXAMPLE"
$sgr.SecurityGroupRule = $sgrr
Edit-EC2SecurityGroupRule  `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRule $sgr
```

------

# Excluir um grupo de segurança do Amazon EC2
<a name="deleting-security-group"></a>

Quando você não precisar mais de um grupo de segurança que criou para usar com instâncias do Amazon EC2, poderá excluí-lo.

**Requisitos**
+ O grupo de segurança não pode ser associado a uma instância ou a uma interface de rede.
+ O grupo de segurança não pode ser referenciado por uma regra de outro grupo de segurança.

------
#### [ Console ]

**Para excluir um security group**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. (Opcional) Para verificar se o grupo de segurança não está associado a uma instância, faça o seguinte:

   1. No painel de navegação, escolha **Security Groups (Grupos de segurança)**.

   1. Copie o ID do grupo de segurança a ser excluído.

   1. No painel de navegação, escolha **Instâncias**.

   1. Na barra de pesquisa, adicione o filtro **IDs do grupo de segurança que são iguais a** e cole o ID do grupo de segurança. Se não houver resultados, então o grupo de segurança não está associado a uma instância. Caso contrário, você deverá desassociar o grupo de segurança antes de poder excluí-lo.

1. No painel de navegação, escolha **Security Groups (Grupos de segurança)**.

1. Selecione o grupo de segurança e escolha **Ações**, **Excluir grupos de segurança**.

1. Caso tenha selecionado mais de um grupo de segurança, será solicitada sua confirmação. Se alguns dos grupos de segurança não puderem ser excluídos, exibiremos o status de cada grupo de segurança, que indicará se ele será ou não excluído. Para confirmar a exclusão, insira **Excluir**.

1. Escolha **Excluir**.

------
#### [ AWS CLI ]

**Para excluir um security group**  
Use o seguinte comando [delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html).

```
aws ec2 delete-security-group --group-id sg-1234567890abcdef0
```

------
#### [ PowerShell ]

**Para excluir um security group**  
Use o cmdlet [Remove-EC2SecurityGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2SecurityGroup.html).

```
Remove-EC2SecurityGroup -GroupId sg-1234567890abcdef0
```

------

# Rastreamento de conexão de grupo de segurança do Amazon EC2
<a name="security-group-connection-tracking"></a>

Os grupos de segurança usam o acompanhamento da conexão para acompanhar as informações sobre o tráfego de entrada e saída da instância. As regras são aplicadas com base no estado da conexão do tráfego para determinar se o tráfego é permitido ou negado. Com essa abordagem, os grupos de segurança são tipo com estado. Isso significa que as respostas ao tráfego de entrada têm permissão para sair da instância independentemente das regras do grupo de segurança de saída e vice-versa.

Por exemplo, suponha que você inicie um comando como netcat ou similar para instâncias de seu computador doméstico, e as regras de grupo de segurança de entrada permitam tráfego ICMP. As informações sobre a conexão (inclusive as informações da porta) são rastreadas. O tráfego de resposta da instância para o comando não é monitorado como uma nova solicitação, mas sim como uma conexão estabelecida e tem permissão para sair da instância, mesmo que as regras de seu grupo de segurança restrinjam o tráfego de saída ICMP.

Para protocolos diferentes de TCP, UDP ou ICMP, somente o endereço IP e o número do protocolo são acompanhados. Se a instância enviar tráfego para outro host e esse host iniciar o mesmo tipo de tráfego para a instância em 600 segundos, o grupo de segurança para a instância o aceitará independentemente das regras de entrada do grupo de segurança. O grupo de segurança aceitará isso, pois será considerado como tráfego de resposta para o tráfego original.

Quando você altera uma regra do grupo de segurança, suas conexões monitoradas não são imediatamente interrompidas. O grupo de segurança continua a permitir pacotes até o tempo limite das conexões existentes. Para garantir que o tráfego seja interrompido imediatamente, ou que todo o tráfego esteja sujeito às regras do firewall, independentemente do estado de monitoramento, será possível usar uma Network ACL para a sub-rede. As Network ACLs são stateless e, portanto, não permitem automaticamente o tráfego de resposta. A adição de uma ACL de rede que bloqueia o tráfego em qualquer direção quebra as conexões existentes. Para saber mais, consulte [Network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) no *Guia do usuário da Amazon VPC*.

**nota**  
Os grupos de segurança não têm efeito sobre o tráfego de DNS de ou para o Route 53 Resolver, às vezes chamadas de “endereço IP VPC\$12” (consulte [O que é o Amazon Route 53 Resolver?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html) no *Guia do desenvolvedor do Amazon Route 53*) ou o “AmazonProvidedDNS” (consulte [Trabalhar com conjuntos de opções de DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/DHCPOptionSet.html) no *Guia do usuário do Amazon Virtual Private Cloud*). Se você quiser filtrar solicitações de DNS por meio do Route 53 Resolver, é possível habilitar o Route 53 Resolver DNS Firewall (consulte [Route 53 Resolver DNS Firewall](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall.html) no *Guia do desenvolvedor do Amazon Route 53*).

## Conexões não rastreadas
<a name="untracked-connections"></a>

Nem todos os fluxos de tráfego são acompanhados. Se uma regra do grupo de segurança permitir fluxos TCP ou UDP para todo o tráfego (0.0.0.0/0 ou ::/0) e houver uma regra correspondente na outra direção que permita todo o tráfego de resposta (0.0.0.0/0 ou ::/0) para qualquer porta (0-65535), esse fluxo de tráfego não será monitorado, a menos que faça parte de uma [conexão monitorada automaticamente](#automatic-tracking). O tráfego de resposta para um fluxo não monitorado é permitido com base na regra de entrada ou de saída que permite o tráfego de resposta, e não é baseado nas informações de monitoramento.

Um fluxo de tráfego não acompanhado será interrompido imediatamente se a regra que permite o fluxo for removida ou alterada. Por exemplo, se você tiver uma regra de saída aberta (0.0.0.0/0) e remover uma regra que permita todo tráfego (porta TCP 22) SSH de entrada (0.0.0.0/0) para a instância (ou modificá-la de forma que a conexão não seja mais permitida), suas conexões SSH existentes na instância serão imediatamente descartadas. A conexão não estava sendo rastreada anteriormente, então a alteração interromperá a conexão. Por outro lado, se você tiver uma regra de entrada mais restrita que inicialmente permita uma conexão SSH (o que significa que a conexão foi monitorada), mas altere essa regra para não permitir mais novas conexões do endereço do cliente SSH atual, a conexão existente não será interrompida pela alteração da regra.

## Conexões rastreadas automaticamente
<a name="automatic-tracking"></a>

As conexões feitas a seguir são monitoradas automaticamente, mesmo que a configuração do grupo de segurança não exija monitoramento:
+ Gateways da Internet apenas de saída
+ Aceleradoras do Global Accelerator
+ Gateways NAT
+ Endpoints do Network Firewall
+ Network Load Balancers
+ AWS PrivateLink (endpoints da VPC de interface)
+ AWS Lambda (Interfaces de rede elástica hiperplanas)
+ Endpoints de gateway do DynamoDB: cada conexão com o DynamoDB consome duas entradas da funcionalidade conntrack.

## Subsídios para monitoramento de conexão
<a name="connection-tracking-throttling"></a>

O Amazon EC2 define um número máximo de conexões que podem ser rastreadas por instância. Depois que o máximo é atingido, todos os pacotes enviados ou recebidos são descartados, porque não é possível estabelecer uma nova conexão. Quando isso acontece, as aplicações que enviam e recebem pacotes não podem se comunicar corretamente. Use a métrica de desempenho da rede `conntrack_allowance_available` para determinar o número de conexões rastreadas ainda disponíveis para esse tipo de instância.

Para determinar se os pacotes foram descartados porque o tráfego de rede para sua instância excedeu o número máximo de conexões que podem ser rastreadas, use a métrica `conntrack_allowance_exceeded` de performance de rede. Para obter mais informações, consulte [Monitorar o desempenho de rede de instâncias do EC2](monitoring-network-performance-ena.md).

Com o Elastic Load Balancing, se você exceder o número máximo de conexões que podem ser rastreadas por instância, recomendamos que escale o número de instâncias registradas com o balanceador de carga ou o tamanho das instâncias registradas com o balanceador de carga.

## Práticas recomendadas para monitoramento de conexões
<a name="connection-tracking-performance"></a>

O roteamento assimétrico, em que o tráfego entra em uma instância por meio de uma interface de rede e sai por meio de uma interface de rede diferente, pode reduzir a performance máxima que uma instância poderá alcançar se os fluxos forem rastreados.

Para manter a performance máxima e otimizar o gerenciamento de conexões quando o monitoramento de conexões estiver habilitado para os grupos de segurança, recomendamos a seguinte configuração:
+ Evite topologias de roteamento assimétrico, se possível.
+ Em vez de usar grupos de segurança para filtragem, use ACLs de rede.
+ Se você precisar usar grupos de segurança com rastreamento de conexão, configure o menor possível de tempo limite do rastreio de conexões inativas. Para obter mais informações sobre o tempo limite do rastreio de conexões inativas, consulte a seção a seguir.
+ Devido aos tempos de espera padrão mais curtos nas instâncias Nitrov6, as aplicações com conexões de longa duração (como conjuntos de conexões de banco de dados, conexões HTTP persistentes ou cargas de trabalho de streaming) devem definir um valor adequado para o `TcpEstablishedTimeout` no momento da inicialização da instância.
+ Para conexões de longa duração, configure os keep alives do TCP para enviar pacotes de verificação em intervalos de menos de 5 minutos para garantir que as conexões permaneçam abertas e mantenham seu estado rastreado. Isso ajuda a evitar que as conexões sejam encerradas devido ao tempo de limite de inatividade e reduz a sobrecarga associada ao restabelecimento das conexões.

Para obter mais informações sobre a performance do ajuste no sistema Nitro, consulte [Considerações sobre o Nitro System para ajuste de performance](ena-nitro-perf.md).

## Tempo limite de rastreamento de conexão ociosa
<a name="connection-tracking-timeouts"></a>

O grupo de segurança monitora cada conexão estabelecida para garantir que os pacotes de retorno sejam entregues como esperado. Há um número máximo de conexões que podem ser rastreadas por instância. As conexões que permanecem ociosas podem levar à exaustão do rastreamento da conexão e fazer com que as conexões não sejam rastreadas e os pacotes sejam descartados. É possível definir o tempo limite de rastreamento de conexões em uma interface de rede do Elastic.

**nota**  
Esse recurso só está disponível para [instâncias baseadas em Nitro](instance-types.md#instance-hypervisor-type). Você deve testar as aplicações em instâncias da geração Nitrov6 com o tempo limite padrão reduzido de `350` segundos para rastreamento de conexão antes de implantá-las em produção.

Há três tempos limite configuráveis:
+ **Tempo limite para TCP estabelecido**: tempo limite (em segundos) para conexões TCP ociosas em um estado estabelecido.
  + Mín: `60` segundos
  + Máx: `432000` segundos
  + Padrão: `350` segundos para tipos de instância [Nitrov6](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html), excluindo P6e-GB200. E `432000` segundos para outros tipos de instâncias, incluindo P6e-GB200.
  + Recomendado: menos de `432000` segundos
+ **Tempo limite de UDP**: tempo limite (em segundos) para fluxos UDP ociosos que só tiverem tráfego em uma única direção ou uma única transação de solicitação-resposta.
  + Mín: `30` segundos
  + Máx: `60` segundos
  + Padrão: `30` segundos
+ **Tempo limite de fluxo UDP**: tempo limite (em segundos) para fluxos UDP ociosos classificados como fluxos que tiveram mais de uma transação de solicitação-resposta.
  + Mín: `60` segundos
  + Máx: `180` segundos
  + Padrão: `180` segundos

Talvez você queira modificar os tempos limite padrão para algum dos seguintes casos:
+  Se você estiver [monitorando conexões rastreadas usando as métricas de performance de rede do Amazon EC2](monitoring-network-performance-ena.md), as métricas *conntrack\$1allowance\$1exceeded* e *conntrack\$1allowance\$1available* permitem monitorar os pacotes descartados e a utilização da conexão rastreada para gerenciar proativamente a capacidade da instância do EC2 com ações de aumento ou redução de escala para ajudar a atender à demanda de conexões de rede antes de descartar pacotes. Se você estiver observando quedas de *conntrack\$1allowance\$1exceeded* nas instâncias do EC2, pode ser benéfico definir um tempo limite de TCP estabelecido mais baixo para levar em conta sessões TCP/UDP paralisadas devido a clientes ou caixas intermediárias de rede inadequados.
+ Normalmente, os balanceadores de carga ou os firewalls têm um tempo limite de ociosidade de TCP estabelecido na faixa de 60 a 90 minutos. Se você estiver executando workloads que devem lidar com um número muito alto de conexões (mais de 100 mil) de dispositivos como firewalls de rede, é recomendável configurar um tempo limite semelhante em uma interface de rede do EC2.
+ Se você estiver executando uma workload que utiliza uma topologia de roteamento assimétrico, recomendamos que você configure um tempo limite de inatividade estabelecido por TCP de 60 segundos.
+ Se você estiver executando workloads com um grande número de conexões, como DNS, SIP, SNMP, Syslog, Radius e outros serviços que usam principalmente UDP para atender a solicitações, definir o tempo limite do ‘fluxo UDP’ como 60 segundos proporciona maior escala/performance para a capacidade existente e evita falhas cinzentas.
+ Em conexões TCP/UDP por Network Load Balancers (NLBs), todas as conexões são rastreadas. O valor do tempo limite de ociosidade para fluxos TCP é de 350 segundos e para fluxos UDP é de 120 segundos e difere dos valores de tempo limite do nível da interface. Talvez você queira configurar limites de tempos no nível da interface de rede para permitir mais flexibilidade de limite de tempo do que os padrões para o balanceador de carga.

Você tem a opção de configurar os tempos limite de rastreamento de conexão ao fazer o seguinte:
+ [Criar uma interface de rede](create-network-interface.md)
+ [Modificar atributos da interface de rede](modify-network-interface-attributes.md)
+ [Iniciar uma instância do EC2](ec2-instance-launch-parameters.md#liw-network-settings)
+ [Criar um modelo de inicialização de instância do EC2](ec2-instance-launch-parameters.md#liw-network-settings)

## Exemplo
<a name="connection-tracking-example"></a>

No exemplo a seguir, o grupo de segurança tem regras de entrada específicas para tráfego TCP e ICMP, e uma regra de saída que permite todo o tráfego de saída.


**Entrada**  

| Tipo de protocolo | Número da porta | Origem | 
| --- | --- | --- | 
| TCP  | 22 (SSH) | 203.0.113.1/32 | 
| TCP  | 80 (HTTP) | 0.0.0.0/0 | 
| TCP  | 80 (HTTP) | ::/0 | 
| ICMP | Todos | 0.0.0.0/0 | 


**Saída**  

| Tipo de protocolo | Número da porta | Destino | 
| --- | --- | --- | 
| Todos | Tudo | 0.0.0.0/0 | 
| Tudo | Tudo | ::/0 | 

Com uma conexão de rede direta com a instância ou interface de rede, o comportamento de rastreamento é o seguinte:
+ O tráfego TCP de entrada e saída na porta 22 (SSH) é monitorado porque a regra de entrada permite o tráfego somente de 203.0.113.1/32, e não de todos os endereços IP (0.0.0.0/0).
+ O tráfego TCP de entrada e de saída na porta 80 (HTTP) não é monitorado porque as regras de entrada e saída permitem o tráfego de todos os endereços IP.
+ O tráfego ICMP é sempre monitorado.

Se você remover a regra de saída para o tráfego IPv4, todo o tráfego IPv4 de entrada e saída será monitorado, incluindo o tráfego na porta 80 (HTTP). O mesmo se aplica ao tráfego IPv6 se você remover a regra de saída para o tráfego IPv6.

# Regras de grupo de segurança para diferentes casos de uso
<a name="security-group-rules-reference"></a>

É possível criar um grupo de segurança e adicionar regras que reflitam a função da instância associada ao grupo de segurança. Por exemplo, uma instância configurada como servidor Web precisa de regras de grupo de segurança que permitam acesso HTTP e HTTPS de entrada. Da mesma forma, uma instância de banco de dados precisa de regras que permitam o acesso para o tipo de banco de dados, como acesso pela porta 3306 para MySQL.

Os seguintes são exemplos de tipos de regras que é possível adicionar aos grupos de segurança para tipos específicos de acesso.

**Topics**
+ [Regras do servidor da Web](#sg-rules-web-server)
+ [Regras do servidor de banco de dados](#sg-rules-db-server)
+ [Regras para se conectar a instâncias pelo computador](#sg-rules-local-access)
+ [Regras para se conectar a instâncias por uma instâncias com o mesmo grupo de segurança](#sg-rules-other-instances)
+ [Regras de ping/ICMP](#sg-rules-ping)
+ [Regras do servidor DNS](#sg-rules-dns)
+ [Regras do Amazon EFS](#sg-rules-efs)
+ [Regras do Elastic Load Balancing](#sg-rules-elb)

Para obter instruções, consulte [Criar um grupo de segurança](creating-security-group.md) e [Configurar regras de grupos de segurança](changing-security-group.md#add-remove-security-group-rules).

## Regras do servidor da Web
<a name="sg-rules-web-server"></a>

As seguintes regras de entrada permitem acesso HTTP e HTTPS de qualquer endereço IP. Se a VPC estiver habilitada para IPv6, será possível adicionar regras para controlar o tráfego de entrada HTTP e HTTPS em endereços IPv6.


| Tipo de protocolo | Número do protocolo | Porta | IP de origem | Observações | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 80 (HTTP) | 0.0.0.0/0 | Permite acesso HTTP de entrada em qualquer endereço IPv4 | 
| TCP | 6 | 443 (HTTPS) | 0.0.0.0/0 | Permite acesso HTTPS de entrada em qualquer endereço IPv4 | 
| TCP | 6 | 80 (HTTP) | ::/0 | Permite acesso HTTP de entrada em qualquer endereço IPv6 | 
| TCP | 6 | 443 (HTTPS) | ::/0 | Permite acesso HTTPS de entrada em qualquer endereço IPv6 | 

## Regras do servidor de banco de dados
<a name="sg-rules-db-server"></a>

As seguintes regras de entrada são exemplos de regras que é possível adicionar para acesso ao banco de dados, dependendo do tipo de banco de dados que você está executando na instância. Para obter mais informações sobre instâncias do Amazon RDS, consulte o [Manual do usuário do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/).

Para o IP de origem, especifique um dos seguintes:
+ Um endereço IP específico ou um intervalo de endereços IP (na notação de bloco CIDR) em sua rede local
+ Um ID de grupo de segurança para um grupo de instâncias que acessa o banco de dados


| Tipo de protocolo | Número do protocolo | Porta | Observações | 
| --- | --- | --- | --- | 
| TCP | 6 | 1433 (MS SQL) | A porta padrão para acessar um banco de dados Microsoft SQL Server, por exemplo, em uma instância do Amazon RDS | 
| TCP | 6 | 3306 (MYSQL/Aurora) | A porta padrão para acessar um banco de dados MySQL ou Aurora, por exemplo, em uma instância do Amazon RDS | 
| TCP | 6 | 5439 (Redshift) | A porta padrão para acessar um banco de dados de cluster do Amazon Redshift. | 
| TCP | 6 | 5432 (PostgreSQL) | A porta padrão para acessar um banco de dados PostgreSQL, por exemplo, em uma instância do Amazon RDS | 
| TCP | 6 | 1521 (Oracle) | A porta padrão para acessar um banco de dados Oracle, por exemplo, em uma instância do Amazon RDS | 

Também é possível restringir o tráfego de saída de seus servidores de banco de dados. Por exemplo, talvez você queira permitir o acesso à Internet para atualizações de software, mas restringir todos os outros tipos de tráfego. Primeiro, remova a regra de saída padrão que permite todo o tráfego de saída.


| Tipo de protocolo | Número do protocolo | Porta | IP de destino | Observações | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 80 (HTTP) | 0.0.0.0/0 | Permite acesso HTTP de saída a qualquer endereço IPv4 | 
| TCP | 6 | 443 (HTTPS) | 0.0.0.0/0 | Permite acesso HTTPS de saída a qualquer endereço IPv4 | 
| TCP | 6 | 80 (HTTP) | ::/0 | (VPC habilitada para IPv6 somente) Permite acesso de saída HTTP a qualquer endereço IPv6 | 
| TCP | 6 | 443 (HTTPS) | ::/0 | (VPC habilitada para IPv6 somente) Permite acesso de saída HTTPS a qualquer endereço IPv6 | 

## Regras para se conectar a instâncias pelo computador
<a name="sg-rules-local-access"></a>

Para se conectar à instância, seu grupo de segurança deve ter regras de entrada que permitam acesso SSH (para instâncias do Linux) ou acesso RDP (para instâncias do Windows).


| Tipo de protocolo | Número do protocolo | Porta | IP de origem | 
| --- | --- | --- | --- | 
| TCP | 6 | 22 (SSH) | O endereço IPv4 público de seu computador ou um intervalo de endereços IP na rede local. Se a VPC estiver habilitada para IPv6 e sua instância tiver um endereço IPv6, será possível digitar um endereço IPv6 ou um intervalo. | 
| TCP | 6 | 3389 (RDP) | O endereço IPv4 público de seu computador ou um intervalo de endereços IP na rede local. Se a VPC estiver habilitada para IPv6 e sua instância tiver um endereço IPv6, será possível digitar um endereço IPv6 ou um intervalo. | 

## Regras para se conectar a instâncias por uma instâncias com o mesmo grupo de segurança
<a name="sg-rules-other-instances"></a>

Para permitir que as instâncias associadas ao mesmo grupo de segurança se comuniquem entre si, adicione regras explícitas para isso. 

**nota**  
Se você configurar rotas para encaminhar o tráfego entre duas instâncias em sub-redes diferentes por meio de um dispositivo middlebox, deverá garantir que os grupos de segurança de ambas as instâncias permitam o fluxo de tráfego entre as instâncias. O grupo de segurança para cada instância deve fazer referência ao endereço IP privado da outra instância ou ao intervalo CIDR da sub-rede que contém a outra instância, como a origem. Se você fizer referência ao grupo de segurança da outra instância como a origem, isso não permitirá que o tráfego flua entre as instâncias.

A tabela a seguir descreve a regra de entrada para um grupo de segurança que permite que as instâncias associadas se comuniquem entre si. A regra permite todos os tipos de tráfego.


| Tipo de protocolo | Número do protocolo | Portas | IP de origem | 
| --- | --- | --- | --- | 
| -1 (todos) | -1 (todos) | -1 (todos) | O ID do grupo de segurança ou o intervalo CIDR da sub-rede que contém a outra instância (consulte a observação). | 

## Regras de ping/ICMP
<a name="sg-rules-ping"></a>

O comando **ping** é um tipo de tráfego ICMP. Para emitir um ping para a instância,você deve adicionar uma das seguintes regras de entrada ICMP.


| Tipo | Protocolo | Origem | 
| --- | --- | --- | 
| ICMP personalizado: IPv4 | Solicitação de eco | O endereço IPv4 público do computador, um endereço IPv4 específico ou um endereço IPv4 ou IPv6 de qualquer lugar. | 
| Todos os ICMP - IPv4 | ICMP IPv4 (1) | O endereço IPv4 público do computador, um endereço IPv4 específico ou um endereço IPv4 ou IPv6 de qualquer lugar. | 

Para usar o comando **ping6** para fazer ping no endereço IPv6 da instância, adicione a seguinte regra ICMPv6 de entrada.


| Tipo | Protocolo | Origem | 
| --- | --- | --- | 
| Todos os ICMP: IPv6 | ICMP Pv6 (58) | O endereço IPv6 do computador, um endereço IPv4 específico ou um endereço IPv4 ou IPv6 de qualquer lugar. | 

## Regras do servidor DNS
<a name="sg-rules-dns"></a>

Se tiver configurado a instância do EC2 como um servidor DNS, você deverá garantir que o tráfego TCP e UDP possa atingir seu servidor DNS pela porta 53. 

Para o IP de origem, especifique um dos seguintes:
+ Um endereço IP ou um intervalo de endereços IP (na notação de bloco CIDR) em uma rede
+ O ID de um grupo de segurança de um conjunto de instâncias na rede que requer acesso ao servidor DNS


| Tipo de protocolo | Número do protocolo | Porta | 
| --- | --- | --- | 
| TCP | 6 | 53 | 
| UDP | 17 | 53 | 

## Regras do Amazon EFS
<a name="sg-rules-efs"></a>

Se estiver usando um sistema de arquivos do Amazon EFS com instâncias do Amazon EC2, o grupo de segurança que você associa a seus destinos de montagem do Amazon EFS deve permitir tráfego por meio do protocolo NFS. 


| Tipo de protocolo | Número do protocolo | Portas | IP de origem | Observações | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 2049 (NFS) | O ID do grupo de segurança | Permite acesso NFS de entrada de recursos (incluindo o destino de montagem) associados a esse grupo de segurança | 

Para montar um sistema de arquivos do Amazon EFS na instância do Amazon EC2, conecte-se à instância. Portanto, o grupo de segurança associado à instância deve ter regras que permitam SSH de entrada do computador local ou da rede local.


| Tipo de protocolo | Número do protocolo | Portas | IP de origem | Observações | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 22 (SSH) | O intervalo de endereços IP do computador local ou o intervalo de endereços IP (na notação de bloco CIDR) da rede. | Permite acesso SSH de entrada no computador local. | 

## Regras do Elastic Load Balancing
<a name="sg-rules-elb"></a>

Se você registrar as instâncias do EC2 com um balanceador de carga, o grupo de segurança associado ao balanceador de carga deverá permitir comunicação com as instâncias. Para obter mais informações, consulte os tópicos a seguir na documentação do Elastic Load Balancing.
+ [Grupos de segurança para o Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-update-security-groups.html)
+ [Grupos de segurança para o Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-security-groups.html)
+ [Configurar grupos de segurança para o Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-vpc-security-groups.html)

# NitroTPM para instâncias do Amazon EC2
<a name="nitrotpm"></a>

O Nitro Trusted Platform Module (NitroTPM) é um dispositivo virtual fornecido pelo [AWS Nitro System](https://aws.amazon.com//ec2/nitro/) que está em conformidade com a [especificação TPM 2.0](https://trustedcomputinggroup.org/resource/trusted-platform-module-2-0-a-brief-introduction/). Armazena, com segurança, artefatos (como senhas, certificados ou chaves de criptografia) que são usados para autenticar a instância. O NitroTPM pode gerar chaves e usá-las em funções criptográficas (como hash, assinatura, criptografia e descriptografia).

O NitroTPM fornece *inicialização medida*, um processo em que o carregador de inicialização e o sistema operacional criam hashes criptográficos de cada binário de inicialização e os combinam aos valores anteriores nos registros de configuração de plataforma (PCRs) internos do NitroTPM. Com a inicialização medida, é possível obter valores de PCR assinados do NitroTPM e usá-los para provar às entidades remotas a integridade do software de inicialização da instância. Isto é conhecido como *atestado* remoto.

Com o NitroTPM, chaves e segredos podem ser marcados com um valor de PCR específico de modo que nunca possam ser acessados se houver alteração no valor da PCR e, portanto, na integridade da instância. Essa forma especial de acesso condicional é chamada de *selagem e desselagem*. Tecnologias de sistema operacional, como [BitLocker](https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/), podem usar o NitroTPM para selar uma chave de descriptografia da unidade, de modo que a unidade só possa ser descriptografada quando o sistema operacional for inicializado corretamente e estiver em bom estado.

Para usar o NitroTPM, é necessário selecionar uma [imagem de máquina da Amazon](AMIs.md) (AMI) que foi configurada para ser compatível com o NitroTPM e depois usá-la para executar [instâncias baseadas em Nitro](instance-types.md#instance-hypervisor-type). É possível selecionar uma das AMIs pré-criadas da Amazon ou criar a sua própria.

**Preços**  
Não há custo adicional para usar o NitroTPM. Você paga apenas pelos recursos adjacentes que usar.

**Topics**
+ [Requisitos](enable-nitrotpm-prerequisites.md)
+ [Habilitar uma AMI do Linux para NitroTPM](enable-nitrotpm-support-on-ami.md)
+ [Certifique-se de que uma AMI esteja habilitada para o NitroTPM](verify-nitrotpm-support-on-ami.md)
+ [Habilitar ou interromper o uso do NitroTPM](nitrotpm-instance.md)
+ [Verificar se uma instância está habilitada para o NitroTPM](verify-nitrotpm-support-on-instance.md)
+ [Recuperar a chave pública de endosso](retrieve-ekpub.md)

# Requisitos para usar o NitroTPM com instâncias do Amazon EC2
<a name="enable-nitrotpm-prerequisites"></a>

Para iniciar uma instância com o NitroTPM habilitado, você deve atender aos pré-requisitos a seguir.

**Topics**
+ [AMIs](#nitrotpm-ami)
+ [Tipos de instância](#nitrotpm-instancetypes)
+ [Considerações](#nitrotpm-considerations)

## AMIs
<a name="nitrotpm-ami"></a>

A AMI deve ter o NitroTPM habilitado.

**AMIs do Linux**  
Não há nenhuma AMI pré-configurada. Você deve configurar sua própria AMI. Para obter mais informações, consulte [Habilitar uma AMI do Linux para NitroTPM](enable-nitrotpm-support-on-ami.md).

**AMIs Windows**  
Para encontrar uma AMI do AWS Windows pré-configurada para NitroTPM e UEFI Secure Boot com chaves da Microsoft, consulte [Encontrar AMIs do Windows Server configuradas com NitroTPM e UEFI Secure Boot](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ami-windows-tpm.html#ami-windows-tpm-find) na *Referência de AMIs do AWS Windows*.

**nota**  
**Sistema operacional**: a AMI deve incluir um sistema operacional com um driver TPM 2.0 Command Response Buffer (CRB). A maioria dos sistemas operacionais atuais contém um driver TPM 2.0 CRB.  
**Modo de inicialização da UEFI**: a AMI deve ser configurada para o modo de inicialização da UEFI. Para obter mais informações, consulte [UEFI Secure Boot para instâncias do Amazon EC2](uefi-secure-boot.md).

## Tipos de instância
<a name="nitrotpm-instancetypes"></a>

Você deve usar um dos seguintes tipos de instância virtualizada:
+ **Uso geral**: M5, M5a, M5ad, M5d, M5dn, M5n, M5zn, M6a, M6g, M6gd, M6i, M6id, M6idn, M6in, M7a, M7g, M7gd, M7i, M7i-flex, M8a, M8azn, M8g, M8gb, M8gd, M8gn, M8i, M8id, M8i-flex, T3, T3a, T4g
+ **Otimizadas para computação**: C5, C5a, C5ad, C5d, C5n, C6a, C6g, C6gd, C6gn, C6i, C6id, C6in, C7a, C7g, C7gd, C7gn, C7i, C7i-flex, C8a, C8g, C8gb, C8gd, C8gn, C8i, C8id, C8i-flex
+ **Otimizadas para memória**: R5, R5a, R5ad, R5b, R5d, R5dn, R5n, R6a, R6g, R6gd, R6i, R6id, R6idn, R6in, R7a, R7g, R7gd, R7i, R7iz, R8a, R8g, R8gb, R8gd, R8gn, R8i, R8id, R8i-flex, U7i-6tb, U7i-8tb, U7i-12tb, U7in-16tb, U7in-24tb, U7in-32tb, X2idn, X2iedn, X2iezn, X8g, X8aedz, X8i, z1d
+ **Otimizadas para armazenamento**: D3, D3en, I3en, I4i, I7i, I7ie, I8g, I8ge, Im4gn
+ **Computação acelerada**: F2, G4dn, G5, G6, G6e, G6f, Gr6, Gr6f, G7e, Inf1, Inf2, P5, P5e, P5en, P6-B200, P6-B300, Trn2, Trn2u
+ **Computação de alta performance: **Hpc6a, Hpc6id, Hpc8a

## Considerações
<a name="nitrotpm-considerations"></a>

As seguintes considerações se aplicam ao usar o NitroTPM:
+ Depois de iniciar uma instância usando uma AMI com o NitroTPM habilitado, se você quiser alterar o tipo de instância, o novo tipo de instância escolhido também deverá ser compatível com o NitroTPM.
+ Os volumes BitLocker criptografados com chaves baseadas no NitroTPM só podem ser usados na instância original.
+ O estado do NitroTPM não é exibido no console do Amazon EC2.
+ O estado do NitroTPM não está incluído nos [snapshots do Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html).
+ O estado do NitroTPM não está incluído nas imagens do [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/).
+ O NitroTPM não é compatível com o AWS Outposts, em zonas locais ou em zonas do Wavelength.

# Habilitar uma AMI do Linux para NitroTPM
<a name="enable-nitrotpm-support-on-ami"></a>

Para habilitar o NitroTPM para uma instância, você deve iniciar a instância usando uma AMI com o NitroTPM habilitado. Será possível configurar a AMI do Linux com suporte do NitroTPM quando registrá-la. Você não pode configurar o suporte ao NitroTPM posteriormente.

Para obter a lista de AMIs do Windows que são configuradas previamente para oferecer suporte ao NitroTPM, consulte [Requisitos para usar o NitroTPM com instâncias do Amazon EC2](enable-nitrotpm-prerequisites.md).

Você deve criar uma AMI com o NitroTPM configurado usando a API [RegisterImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html). Você não pode usar o console do Amazon EC2 ou o VM Import/Export.

**Habilitar uma AMI do Linux para NitroTPM**

1. Inicie uma instância temporária com a AMI do Linux necessária. Observe o ID do volume raiz, que você pode encontrar no console na guia **Armazenamento** da instância.

1. Depois que a instância atingir o estado `running`, crie um snapshot do volume raiz da instância. Para obter mais informações, consulte [Criar um snapshot de um volume do EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-create-snapshot.html).

1. Registre o snapshot que você criou como uma AMI. No mapeamento de dispositivos de blocos, especifique o snapshot que você criou para o volume raiz.

   Um exemplo do comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) é mostrado a seguir. Para `--tpm-support`, especifique `v2.0`. Para `--boot-mode`, especifique `uefi`. 

   ```
   aws ec2 register-image \
       --name my-image \
       --boot-mode uefi \
       --architecture x86_64 \
       --root-device-name /dev/xvda \
       --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0abcdef1234567890} \
       --tpm-support v2.0
   ```

   Um exemplo do cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) é mostrado a seguir.

   ```
   $block = @{SnapshotId=snap-0abcdef1234567890}
   Register-EC2Image `
       -Name my-image `
       -Architecture "x86_64" `
       -RootDeviceName /dev/xvda `
       -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
       -BootMode Uefi `
       -TpmSupport V20
   ```

1. Encerre a instância temporária que você iniciou na etapa 1.

# Certifique-se de que uma AMI esteja habilitada para o NitroTPM
<a name="verify-nitrotpm-support-on-ami"></a>

Para habilitar o NitroTPM para uma instância, você deve iniciar a instância usando uma AMI com o NitroTPM habilitado. É possível descrever uma imagem para verificar se ela está habilitada para o NitroTPM. Se você for o proprietário da AMI, poderá descrever o atributo da imagem `tpmSupport`.

O console do Amazon EC2 não exibe `TpmSupport`.

------
#### [ AWS CLI ]

**Para verificar se o NitroTPM está habilitado**  
Use o comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[*].TpmSupport
```

Se o NitroTPM estiver habilitado para a AMI, a saída será como a seguir. Se o TPM não estiver habilitado, a saída será vazia.

```
[
    "v2.0"
]
```

Como alternativa, se você for o proprietário da AMI, poderá usar o comando [describe-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) com o atributo `tpmSupport`.

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute tpmSupport
```

 O seguinte é um exemplo de saída.

```
{
    "ImageId": "ami-0abcdef1234567890",
    "TpmSupport": {
        "Value": "v2.0"
    }
}
```

**Para encontrar AMIs com o NitroTPM habilitado**  
O exemplo a seguir lista os IDs das AMIs pertencentes a você que possuem o NitroTPM habilitado.

```
aws ec2 describe-images \
    --owners self \
    --filters Name=tpm-support,Values=v2.0 \
    --query Images[].ImageId
```

------
#### [ PowerShell ]

**Para verificar se o NitroTPM está habilitado**  
Use o cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
Get-EC2Image `
    -ImageId ami-0abcdef1234567890 | Select TpmSupport
```

Se o NitroTPM estiver habilitado para a AMI, a saída será como a seguir. Se o TPM não estiver habilitado, a saída será vazia.

```
TpmSupport
----------
v2.0
```

Como alternativa, se você for o proprietário da AMI, poderá usar o cmdlet [Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) com o atributo `tpmSupport`.

```
Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute tpmSupport
```

**Para encontrar AMIs com o NitroTPM habilitado**  
O exemplo a seguir lista os IDs das AMIs pertencentes a você que possuem o NitroTPM habilitado.

```
Get-EC2Image `
    -Owner self `
    -Filter @{Name="tpm-support; Values="v2.0"} | Select ImageId
```

------

# Habilitar ou interromper o uso do NitroTPM em uma instância do Amazon EC2
<a name="nitrotpm-instance"></a>

Você só pode habilitar uma instância do Amazon EC2 para o NitroTPM no momento da execução. Depois que uma instância está habilitada para o NitroTPM, não é possível desabilitá-la. Se você não precisar mais usar o NitroTPM, é necessário configurar o sistema operacional para interromper o uso.

**Topics**
+ [Iniciar uma instância com o NitroTPM habilitado](#launch-instance-with-nitrotpm)
+ [Interromper o uso do NitroTPM em uma instância](#disable-nitrotpm-support-on-instance)

## Iniciar uma instância com o NitroTPM habilitado
<a name="launch-instance-with-nitrotpm"></a>

Quando você inicia uma instância com os [pré-requisitos](enable-nitrotpm-prerequisites.md), o NitroTPM é habilitado automaticamente na instância. Você só pode habilitar o NitroTPM em uma instância no momento da execução. Para obter mais informações sobre como iniciar uma instância, consulte [Iniciar uma instância do Amazon EC2](LaunchingAndUsingInstances.md).

## Interromper o uso do NitroTPM em uma instância
<a name="disable-nitrotpm-support-on-instance"></a>

Após executar uma instância com o NitroTPM habilitado, não será possível desabilitar o NitroTPM para a instância. No entanto, é possível configurar o sistema operacional para interromper o uso do NitroTPM desabilitando o driver do dispositivo TPM 2.0 na instância com as seguintes ferramentas:
+ Para **Instâncias do Linux**, use tpm-tools.
+ Para **Instâncias do Windows**, use o console de gerenciamento do TPM (tpm.msc).

Para obter mais informações sobre como desabilitar o driver do dispositivo, consulte a documentação do sistema operacional.

# Verificar se uma instância do Amazon EC2 está habilitada para o NitroTPM
<a name="verify-nitrotpm-support-on-instance"></a>

É possível verificar se a instância do Amazon EC2 está habilitada para o NitroTPM. Se o suporte ao NitroTPM estiver habilitado na instância, o comando retornará `"v2.0"`. Caso contrário, o campo `TpmSupport` não estará presente na saída.

O console do Amazon EC2 não exibe o campo `TpmSupport`.

------
#### [ AWS CLI ]

**Para verificar se uma instância está habilitada para o NitroTPM**  
Use o comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].TpmSupport
```

------
#### [ PowerShell ]

**Para verificar se uma instância está habilitada para o NitroTPM**  
Use o cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.TpmSupport
```

------

## Verifique o acesso ao NitroTPM na sua instância do Windows
<a name="verify-nitrotpm-support-windows-instance"></a>

**(Somente instâncias do Windows) Para verificar se o NitroTPM está acessível para Windows**

1. [Conecte-se à instância do Windows do EC](connecting_to_windows_instance.md).

1. Na instância, execute o programa tpm.msc.

   Será aberta a janela **TPM Management on Local Computer** (Gerenciamento do TPM no computador local).

1. Confira o campo **TPM Manufacturer Information** (Informações do fabricante do TPM). Contém o nome do fabricante e a versão do NitroTPM na instância.  
![\[A janela TPM Management on Local Computer (Gerenciamento do TPM no computador local) e o campo TPM Manufacturer Information (Informações do fabricante do TPM) exibem a versão do NitroTPM na instância.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/tpm-1.png)

# Recuperar a chave pública de endosso de uma instância do EC2
<a name="retrieve-ekpub"></a>

É possível recuperar com segurança a chave pública de endosso de uma instância a qualquer momento.

------
#### [ AWS CLI ]

**Para recuperar a chave pública de endosso de uma instância**  
Use o comando [get-instance-tpm-ek-pub](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-tpm-ek-pub.html).

**Exemplo 1**  
O exemplo a seguir obtém a chave pública de endosso `rsa-2048` no formato `tpmt` para a instância especificada.

```
aws ec2 get-instance-tpm-ek-pub \
    --instance-id i-1234567890abcdef0 \
    --key-format tpmt \ 
    --key-type rsa-2048
```

A seguir está um exemplo de saída.

```
{
    "InstanceId": "i-01234567890abcdef",
    "KeyFormat": "tpmt",
    "KeyType": "rsa-2048",
    "KeyValue": "AAEACwADALIAIINxl2dEhLEXAMPLEUal1yT9UtduBlILZPKh2hszFGmqAAYAgABDA
    EXAMPLEAAABAOiRd7WmgtdGNoV1h/AxmW+CXExblG8pEUfNm0LOLiYnEXAMPLERqApiFa/UhvEYqN4
    Z7jKMD/usbhsQaAB1gKA5RmzuhSazHQkax7EXAMPLEzDthlS7HNGuYn5eG7qnJndRcakS+iNxT8Hvf
    0S1ZtNuItMs+Yp4SO6aU28MT/JZkOKsXIdMerY3GdWbNQz9AvYbMEXAMPLEPyHfzgVO0QTTJVGdDxh
    vxtXCOu9GYf0crbjEXAMPLEd4YTbWdDdgOKWF9fjzDytJSDhrLAOUctNzHPCd/92l5zEXAMPLEOIFA
    Ss50C0/802c17W2pMSVHvCCa9lYCiAfxH/vYKovAAE="
}
```

**Exemplo 2**  
O exemplo a seguir obtém a chave pública de endosso `rsa-2048` no formato `der` para a instância especificada.

```
aws ec2 get-instance-tpm-ek-pub \
    --instance-id i-1234567890abcdef0 \
    --key-format der \ 
    --key-type rsa-2048
```

A seguir está um exemplo de saída.

```
{
    "InstanceId": "i-1234567890abcdef0",
    "KeyFormat": "der",
    "KeyType": "rsa-2048",
    "KeyValue": "MIIBIjANBgEXAMPLEw0BAQEFAAOCAQ8AMIIBCgKCAQEA6JF3taEXAMPLEXWH8DGZb4
    JcTFuUbykRR82bQs4uJifaKSOv5NGoEXAMPLEG8Rio3hnuMowP+6xuGxBoAHWAoDlGbO6FJrMdEXAMP
    LEnYUHvMO2GVLsc0a5ifl4buqcmd1FxqRL6I3FPwe9/REXAMPLE0yz5inhI7ppTbwxP8lmQ4qxch0x6
    tjcZ1Zs1DP0EXAMPLERUYLQ/Id/OBU7RBNMlUZ0PGG/G1cI670Zh/RytuOdx9iEXAMPLEtZ0N2A4pYX
    1+PMPK0lIOGssA5Ry03Mc8J3/3aXnOD2/ASRQ4gUBKznQLT/zTZEXAMPLEJUe8IJr2VgKIB/Ef+9gqi
    8AAQIDAQAB"
}
```

------
#### [ PowerShell ]

**Para recuperar a chave pública de endosso de uma instância**  
Use o cmdlet [Get-EC2InstanceTpmEkPub](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTpmEkPub.html).

**Exemplo 1**  
O exemplo a seguir obtém a chave pública de endosso `rsa-2048` no formato `tpmt` para a instância especificada.

```
Get-EC2InstanceTpmEkPub `
    -InstanceId i-1234567890abcdef0 `
    -KeyFormat tpmt `
    -KeyType rsa-2048
```

**Exemplo 2**  
O exemplo a seguir obtém a chave pública de endosso `rsa-2048` no formato `der` para a instância especificada.

```
Get-EC2InstanceTpmEkPub `
    -InstanceId i-1234567890abcdef0 `
    -KeyFormat der `
    -KeyType rsa-2048
```

------

# Atestação de instância do Amazon EC2
<a name="nitrotpm-attestation"></a>

A atestação é um processo que permite que você prove criptograficamente para qualquer parte que somente software, drivers e processos de inicialização confiáveis estão sendo executados em uma instância do Amazon EC2. A atestação de instâncias do Amazon EC2 é habilitada pelo Nitro Trusted Platform Module (NitroTPM) e por *AMIs atestáveis*.

A primeira etapa da atestação é **compilar uma AMI atestável e determinar as *medidas de referência* dessa AMI**. Uma AMI atestável é uma AMI compilada do zero para atestação. As medidas de referência são medidas de todo o software e de todas as configurações que você incluiu na AMI. Para obter mais informações sobre como você pode obter as medidas de referência, consulte [Criar o exemplo de descrição da imagem](build-sample-ami.md).

![\[Gerar medidas de referência com AMIs atestáveis.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/attestable-ami.PNG)


A próxima etapa é iniciar uma [instância do EC2 habilitada para Nitro-TPM](enable-nitrotpm-prerequisites.md#nitrotpm-instancetypes) com a AMI atestável. Depois de iniciar a instância, você pode usar as [ferramentas do NitroTPM](attestation-get-doc.md) para gerar o *atestado*. Depois, você pode comparar as medidas reais da instância do EC2 que se encontram no atestado com as medidas de referência para verificar se a instância tem o software e as configurações em que você confia.

Comparando as medidas de referência geradas durante o processo de criação da AMI atestável com as medidas incluídas no atestado de uma instância, é possível validar que somente software e código confiáveis estão sendo executados na instância.

![\[Gerar um atestado.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/attestation-document.PNG)


## Integração com AWS KMS
<a name="attestation-kms"></a>

Para facilitar o processo de comparação de medidas, é possível usar o AWS Key Management Service (AWS KMS) como um verificador de atestados. Com o AWS KMS, você pode criar políticas de chave do KMS baseadas em atestação que permitem operações específicas com a chave KMS somente se você fornecer um atestado com medidas que correspondam às medidas de referência. Para isso, você adiciona chaves de condições específicas às suas políticas de chaves do KMS que usam as medidas de referência como os valores das chaves de condições e depois especifica quais operações do KMS serão permitidas se a chave de condição for satisfeita.

Ao realizar operações do KMS usando a chave KMS, você deve anexar um atestado à solicitação do KMS. O AWS KMS valida as medidas do atestado em relação às medidas de referência da política de chave do KMS e permite acesso à chave somente se as medidas corresponderem.

Além disso, ao gerar o atestado para uma instância, você deve especificar uma chave pública para um par de chaves que possui. A chave pública especificada é incluída no atestado. Quando o AWS KMS valida o atestado e permite uma operação de descriptografia, ele criptografa automaticamente a resposta com a chave pública incluída no atestado antes de devolvê-la. Isso garante que a resposta possa ser descriptografada e usada somente com a chave privada correspondente à chave pública incluída no atestado. 

Isso garante que somente instâncias que executam software e código confiáveis possam realizar operações criptográficas usando uma chave do KMS.

## Atestação de ambientes de computação isolados
<a name="attestation-isolated-compute-environments"></a>

Em geral, você pode criar e configurar uma instância do EC2 para ser um **ambiente computacional isolado**, que não fornece acesso interativo nem um mecanismo para que os administradores e usuários acessem os dados que estão sendo processados na instância do EC2. Com a atestação de instâncias do EC2, você pode provar para um terceiro ou outro serviço que a instância está sendo executada como um ambiente computacional isolado. Para obter mais informações, consulte [Isolar dados de seus próprios operadores](isolate-data-operators.md).

Para ter um exemplo, veja o [exemplo de descrição de imagem do Amazon Linux 2023](build-sample-ami.md) que cria um ambiente computacional isolado. É possível usar esse exemplo de descrição de imagem como ponto de partida e personalizá-lo para atender aos seus requisitos.

## Modelo de Responsabilidade Compartilhada da AWS
<a name="attestation-shared-responsibility"></a>

O NitroTPM e as AMIS atestáveis são os elementos que podem ajudar você a instalar e configurar atestação nas instâncias do EC2. Você é responsável por configurar a AMI para atender ao seu respectivo caso de uso. Para obter mais informações, consulte [Modelo de responsabilidade compartilhada da AWS](https://aws.amazon.com/compliance/shared-responsibility-model/).

**Topics**
+ [Integração com AWS KMS](#attestation-kms)
+ [Atestação de ambientes de computação isolados](#attestation-isolated-compute-environments)
+ [Modelo de Responsabilidade Compartilhada da AWS](#attestation-shared-responsibility)
+ [AMIs atestáveis](attestable-ami.md)
+ [Preparar o AWS KMS para atestação](prepare-attestation-service.md)
+ [Obter o atestado do NitroTPM](attestation-get-doc.md)
+ [Integração com o AWS KMS](attestation-attest.md)
+ [Isolar dados de seus próprios operadores](isolate-data-operators.md)

# AMIs atestáveis
<a name="attestable-ami"></a>

Uma AMI atestável é uma imagem de máquina da Amazon (AMI) com um hash criptográfico correspondente que representa todo o seu conteúdo. O hash é gerado durante o processo de criação da AMI e é calculado com base em todo o conteúdo dessa AMI, incluindo as aplicações, o código e o processo de inicialização.

## Manter um estado atestável
<a name="maintain-attestability"></a>

As medidas de uma instância são baseadas em seu estado inicial de inicialização. Qualquer alteração de software ou código feita na instância após a inicialização que persista após as reinicializações alterará a medida da instância após as reinicializações. Se as medidas forem alteradas, elas se desviarão das medidas de referência da AMI atestável, e a instância não poderá mais atestar para o AWS KMS com sucesso após a reinicialização. Assim sendo, para que as AMIs atestáveis sejam úteis, as instâncias precisam voltar ao estado original de inicialização após a reinicialização.

Voltar sempre ao estado original de inicialização garante que uma instância possa atestar com sucesso após a reinicialização. Os seguintes utilitários podem ser usados para garantir que as instâncias permaneçam atestáveis após as reinicializações:
+ `erofs`: Enhanced Read-Only File System. Esse utilitário garante que o sistema de arquivos raiz seja somente leitura. Com esse utilitário, as gravações no sistema de arquivos, incluindo `/etc`, `/run` e `/var`, são armazenadas na memória e perdidas quando a instância é reiniciada, deixando o sistema de arquivos raiz em seu estado original de inicialização. Para obter mais informações, consulte a [documentação do erofs](https://docs.kernel.org/filesystems/erofs.html).
+ `dm-verity`: fornece proteção de integridade para o sistema de arquivos raiz somente leitura. O utilitário calcula um hash dos blocos do sistema de arquivos e o armazena na linha de comando do kernel. Isso permite que o kernel verifique a integridade do sistema de arquivos durante a inicialização. Para obter mais informações, consulte a [ documentação do dm-verity](https://docs.kernel.org/admin-guide/device-mapper/verity.html).

## Requisitos para a criação de AMIs atestáveis
<a name="ami-attestable-requirements"></a>

AMIs atestáveis têm os seguintes requisitos:
+ **Sistema operacional básico**: Amazon Linux 2023 e [NixOS](https://github.com/aws/nitrotpm-attestation-samples)
+ **Arquitetura**: arquitetura `x86_64` ou `arm64`
+ **Compatibilidade com TPM**: o NitroTPM deve estar habilitado. Para obter mais informações, consulte [Requisitos para usar o NitroTPM com instâncias do Amazon EC2](enable-nitrotpm-prerequisites.md).
+ **Modo de inicialização**: o modo de inicialização UEFI deve estar habilitado.

**Topics**
+ [Manter um estado atestável](#maintain-attestability)
+ [Requisitos para a criação de AMIs atestáveis](#ami-attestable-requirements)
+ [Criar AMIs atestáveis](#sample-ami)
+ [Criar o exemplo de descrição da imagem](build-sample-ami.md)
+ [Exemplo de descrição de imagem do Amazon Linux 2023](al2023-isolated-compute-recipe.md)
+ [Personalizar o exemplo de descrição de imagem](customize-sample-ami.md)
+ [Calcular medidas de PCR](create-pcr-compute.md)

## Criar AMIs atestáveis
<a name="sample-ami"></a>

Para criar uma AMI atestável, você precisará usar o Amazon Linux 2023 com o [KIWI Next Generation (KIWI NG](https://osinside.github.io/kiwi/)). O Amazon Linux 2023 fornece o software e os utilitários necessários para compilar uma AMI atestável usando o KIWI NG. 

O KIWI NG é uma ferramenta de código aberto para a criação de imagens baseadas no Linux pré-configuradas. O KIWI NG usa *descrições de imagem* XML que definem o conteúdo de uma imagem. A descrição da imagem especifica o sistema operacional básico, o software, a configuração do kernel e os scripts a serem executados para compilar uma AMI pronta para uso para um caso de uso específico.

Durante a compilação da AMI, você precisa usar o utilitário `nitro-tpm-pcr-compute` para gerar as medidas de referência com base na Unified Kernel Image (UKI) gerada pelo KIWI NG. Para obter mais informações sobre o uso do utilitário `nitro-tpm-pcr-compute`, consulte [Calcular medidas de PCR para uma AMI personalizada](create-pcr-compute.md).

A AWS fornece um exemplo de descrição de imagem do Amazon Linux 2023 que inclui todas as configurações necessárias para configurar uma instância do EC2 em um ambiente computacional isolado. Para obter mais informações, consulte [Criar o exemplo de descrição de imagem do Amazon Linux 2023](build-sample-ami.md).

# Criar o exemplo de descrição de imagem do Amazon Linux 2023
<a name="build-sample-ami"></a>

A AWS fornece um exemplo de descrição de imagem do Amazon Linux 2023 que você pode usar como ponto de partida para criar suas próprias AMIs atestáveis personalizadas para suas workloads. O exemplo de descrição de imagem inclui o Amazon Linux 2023 como sistema operacional básico, as configurações `dm-verity` e `erofs`, para garantir a imutabilidade do sistema de arquivos, e remove todo acesso interativo (como SSH, conexão de instância do EC2 e console serial) para criar um ambiente computacional isolado. Para obter mais informações sobre o exemplo de descrição de imagem, consulte o [repositório do Github](https://github.com/amazonlinux/kiwi-image-descriptions-examples).

O exemplo de descrição de imagem instala automaticamente as ferramentas do NitroTPM (`nitro-tpm-pcr-compute` e `nitro-tpm-attest`) na imagem gerada no diretório `/usr/bin/`. Isso garante que as ferramentas sejam pré-instaladas nas instâncias iniciadas na AMI.

O exemplo de descrição de imagem inclui um script, `edit_boot_install.sh`, que inclui os comandos necessários para gerar as medidas de referência. O script monta o arquivo da imagem de disco bruta (`.raw`) criada pelo KIWI NG em um dispositivo de loopback, localiza a UKI, que tem a extensão de arquivo `.efi`, e executa o utilitário `nitro-tpm-pcr-compute` para gerar as medidas de referência para a AMI. O script é executado automaticamente pelo KIWI NG durante a compilação.

Este tutorial mostra como compilar o exemplo de descrição de imagem para criar uma AMI atestável.

Para obter mais informações sobre como criar suas próprias descrições de imagem, consulte a seguinte documentação do KIWI NG:
+ [Início rápido](https://osinside.github.io/kiwi/quickstart.html)
+ [Descrição de imagem](https://osinside.github.io/kiwi/image_description.html)
+ [Exemplo de descrição de imagem do Amazon Linux 2023](https://github.com/amazonlinux/kiwi-image-descriptions-examples)

Pré-requisitos

A identidade do IAM precisa ter as seguintes permissões para concluir este tutorial:
+ `ebs:CompleteSnapshot`, `ebs:StartSnapshot` e `ebs:PutSnapshotBlock` no `arn:aws:ec2:*::snapshot/*`
+ `ec2:RegisterImage` Para todos os recursos

**Para compilar o exemplo de descrição de imagem do Amazon Linux 2023 usando o KIWI NG**

1. Inicie uma instância do Amazon EC2 usando a AMI AL2023 mais recente. Para garantir que a instância tenha espaço de armazenamento suficiente para compilar a AMI, provisione pelo menos 12 GB de armazenamento.

1. Instale as dependências necessárias. O seguinte comando instala estes utilitários:
   + `kiwi-cli`
   + `veritysetup`
   + `erofs-utils`
   + `aws-nitro-tpm-tools`

   ```
   sudo dnf install -y kiwi-cli python3-kiwi kiwi-systemdeps-core python3-poetry-core qemu-img veritysetup erofs-utils git cargo aws-nitro-tpm-tools
   ```

1. Instale o utilitário `coldsnap`. Esse utilitário permite que você crie snapshots do Amazon EBS a partir de dados de imagem brutos. Você usará esse utilitário para criar um snapshot do EBS a partir do arquivo da imagem de disco bruta criada pelo KIWI NG.

   ```
   git clone https://github.com/awslabs/coldsnap.git
   cd coldsnap
   cargo install --locked coldsnap
   cd ..
   ```

1. Obtenha os arquivos de exemplos de descrição de imagem.

   ```
   sudo dnf install kiwi-image-descriptions-examples
   ```

   Os arquivos de exemplos de descrição de imagem são baixados para o seguinte diretório: `/usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example`

1. Compile o exemplo de descrição de imagem usando o comando `system build` do KIWI NG. O comando a seguir cria um arquivo da imagem de disco bruta no diretório `./image`.

   ```
   sudo kiwi-ng \
   --color-output \
   --loglevel 0 \
   system build \
   --description /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example \
   --target-dir ./image
   ```

   Para obter mais informações, consulte a [documentação do kiwi-ng system build](https://osinside.github.io/kiwi/commands/system_build.html).

1. Obtenha as medidas de referência da AMI. As medidas são geradas pelo utilitário `nitro-tpm-pcr-compute` durante a criação da imagem na etapa anterior. É possível localizar as medidas de referência no seguinte arquivo: `./image/pcr_measurements.json`.

   As medidas são fornecidas no seguinte formato JSON:

   ```
   {
     "Measurements": {
       "HashAlgorithm": "SHA384 { ... }",
       "PCR4": "PCR4_measurement",
       "PCR7": "PCR7_measurement",
       "PCR12": "PCR12_measurement"
     }
   }
   ```

1. Use o utilitário `coldsnap` para carregar a imagem de disco bruta criada pelo KIWI NG em um snapshot do EBS. O comando retorna o ID do snapshot. Anote o valor do ID, pois vai precisar dele na próxima etapa.

   ```
   SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/al2023*.raw)
   echo "Created snapshot: $SNAPSHOT"
   ```

   Para obter mais informações sobre o utilitário `coldsnap`, consulte o [repositório do coldsnap no GitHub](https://github.com/awslabs/coldsnap).

1. Registre uma AMI habilitada para o TPM 2.0 com o modo de inicialização UEFI usando o snapshot da etapa anterior. Para `--architecture`, especifique `x86_64` para Intel ou `arm64` para Graviton.

   ```
   aws ec2 register-image \
   --name "attestable_isolated_al2023_ami" \
   --virtualization-type hvm \
   --boot-mode uefi \
   --architecture x86_64|arm64 \
   --root-device-name /dev/xvda \
   --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=${SNAPSHOT}} \
   --tpm-support v2.0 \
   --ena-support
   ```

# Exemplo de descrição de imagem do Amazon Linux 2023
<a name="al2023-isolated-compute-recipe"></a>

O exemplo de descrição de imagem do Amazon Linux 2023 tem as seguintes características: 

1. **Inicialização da Unified Kernel Image (UKI)**: inicialize usando um único binário assinado que combine o kernel `initrd` e os parâmetros de inicialização em uma única imagem imutável.

1. **Sistema de arquivos-raiz somente leitura**: use o Enhanced Read-Only File System (`erofs`) com proteção dm-verity para garantir que o sistema de arquivos-raiz não possa ser modificado e mantenha a verificação da integridade criptográfica.

1. **Sistema de arquivos de sobreposição efêmera**: crie um sistema de arquivos de sobreposição temporário que permita gravações temporárias em diretórios como `/etc`, `/run` e `/var`. Como esse sistema de arquivos de sobreposição existe somente na memória, todas as alterações são perdidas automaticamente quando a instância é reinicializada, garantindo que o sistema retorne ao estado confiável original.

1. **Métodos de acesso remoto desabilitados**: remova os seguintes mecanismos de acesso remoto para evitar acesso remoto:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/al2023-isolated-compute-recipe.html)

   \$1 Para obter mais informações, consulte [Elementos da descrição de imagem](https://osinside.github.io/kiwi/image_description/elements.html#packages-ignore).

# Personalize o exemplo de descrição de imagem do Amazon Linux 2023 para a workload
<a name="customize-sample-ami"></a>

É possível personalizar o exemplo de descrição de imagem do Amazon Linux 2023 e incluir os pacotes de software, os scripts e os arquivos necessários para a workload específica. As personalizações são realizadas adicionando ou modificando vários elementos da descrição de imagem do KIWI NG.

**Topics**
+ [Gerenciamento de repositórios](#prepare-custom-image-repos)
+ [Gerenciamento de pacotes](#customize-sample-ami-packages)
+ [Adicionar arquivos e diretórios](#customize-sample-ami-overlay)
+ [Adicionar scripts personalizados](#customize-sample-ami-script)

## Gerenciamento de repositórios
<a name="prepare-custom-image-repos"></a>

Por padrão, o exemplo de descrição de imagem inclui um único elemento `<repository>` que aponta para um endpoint-espelho para os principais repositórios do Amazon Linux 2023. Se necessário, você pode adicionar referências a outros repositórios a partir dos quais o software necessário será instalado.

O exemplo de descrição de imagem usa o gerenciador de pacotes `dnf`, conforme definido no elemento `<packagemanager>`.

Para obter mais informações sobre a adição de repositórios, consulte [Setting up Repositories](https://osinside.github.io/kiwi/concept_and_workflow/repository_setup.html).

## Gerenciamento de pacotes
<a name="customize-sample-ami-packages"></a>

Por padrão, o exemplo de descrição de imagem inclui todos os pacotes necessários para criar uma AMI atestável do Amazon Linux 2023 para um ambiente computacional isolado com um sistema de arquivos somente leitura `erofs`.

É possível incluir pacotes de software adicionais na descrição da imagem adicionando-os ao elemento `<packages>` da descrição da imagem. O elemento `<packages>` define todo o software que deve estar instalado na AMI.

Você também pode usar o elemento `<packages>` para desinstalar ou excluir pacotes de software específicos.

Para obter mais informações sobre como adicionar ou remover pacotes da descrição de imagem, consulte [Adding and Removing Packages](https://osinside.github.io/kiwi/concept_and_workflow/packages.html#).

## Adicionar arquivos e diretórios
<a name="customize-sample-ami-overlay"></a>

O exemplo de descrição de imagem inclui um diretório de árvore de sobreposição (`/root/`). O diretório da árvore de sobreposição é um diretório que contém arquivos e diretórios que serão copiados na imagem durante o processo de criação da imagem. Todos os arquivos e diretórios que você colocar no diretório da árvore de sobreposição serão copiados diretamente no sistema de arquivos raiz da imagem durante o processo de criação da imagem.

O diretório da árvore de sobreposição é copiado na imagem após todos os pacotes serem instalados. Os arquivos novos são adicionados e os arquivos existentes são sobrescritos.

## Adicionar scripts personalizados
<a name="customize-sample-ami-script"></a>

O exemplo de descrição de imagem inclui um único script personalizado, `edit_boot_install.sh`. Esse script inclui os comandos necessários para executar o utilitário `nitro-tpm-pcr-compute`, que gera as medidas de referência com base no conteúdo da imagem. Esse script é chamado imediatamente após a instalação do bootloader.

Se necessário, você pode incluir seus próprios scripts personalizados na descrição da imagem para realizar tarefas ou configurações durante o processo de criação da imagem ou na sua primeira inicialização. O uso de scripts permite que você personalize as imagens de maneiras que não são possíveis usando apenas a descrição da imagem.

Para incluir scripts personalizados na descrição da imagem, você precisa nomeá-los corretamente segundo o tipo de script e adicioná-los ao mesmo diretório em que está o arquivo `appliance.kiwi`. O KIWI NG detectará e executará os scripts automaticamente se eles forem nomeados corretamente e colocados no local correto, sem ser necessário referenciá-los explicitamente no arquivo da descrição da imagem.

Para obter mais informações sobre os scripts compatíveis com o KIWI NG, consulte [User-Defined Scripts](https://osinside.github.io/kiwi/concept_and_workflow/shell_scripts.html).

# Calcular medidas de PCR para uma AMI personalizada
<a name="create-pcr-compute"></a>

O utilitário `nitro-tpm-pcr-compute` permite gerar as medidas de referência para uma AMI atestável durante a compilação com base na Unified Kernel Image (UKI).

O exemplo de descrição de imagem do Amazon Linux 2023 instala automaticamente o utilitário na imagem compilada no diretório `/usr/bin/`. O exemplo de descrição de imagem também inclui um script com os comandos necessários para executar o utilitário e gerar as medidas de referência durante a criação da imagem. Se você estiver usando o exemplo de descrição de imagem, não precisará instalar ou executar o utilitário manualmente. Para obter mais informações, consulte [Criar o exemplo de descrição de imagem do Amazon Linux 2023](build-sample-ami.md).

## Instalar o utilitário `nitro-tpm-pcr-compute`
<a name="nitro-tpm-compute-install"></a>

Se você estiver usando o Amazon Linux 2023, poderá instalar o utilitário `nitro-tpm-pcr-compute` a partir do repositório Amazon Linux como se segue.

```
sudo yum install aws-nitro-tpm-tools
```

As ferramentas são instaladas no diretório `/usr/bin`.

## Usar o utilitário `nitro-tpm-pcr-compute`
<a name="nitro-tpm-compute-use"></a>

O utilitário fornece um único comando, `nitro-tpm-pcr-compute`, para gerar as medidas de referência.

Ao executar o comando, você deve especificar o seguinte:
+ Unified Kernel Image (`UKI.efi`): necessária para inicialização padrão e UEFI.

**Para gerar as medidas de referência para uma AMI atestável:**  
Use o seguinte comando e os seguintes parâmetros:

```
/usr/bin/nitro-tpm-pcr-compute \
--image UKI.efi
```

O utilitário retorna as medidas de referência no seguinte formato JSON:

```
{
  "Measurements": {
    "HashAlgorithm": "SHA384 { ... }",
    "PCR4": "PCR4_measurement",
    "PCR7": "PCR7_measurement",
    "PCR12": "PCR12_measurement"
  }
}
```

Para obter um exemplo prático de como usar o utilitário `nitro-tpm-pcr-compute`, consulte o script `edit_boot_install.sh` incluído no [exemplo de descrição de imagem do Amazon Linux 2023](build-sample-ami.md).

# Preparar o AWS KMS para atestação
<a name="prepare-attestation-service"></a>

**nota**  
Se você estiver atestando para um serviço de terceiros, deverá criar seus próprios mecanismos personalizados para receber, analisar e validar atestados. Para obter mais informações, consulte [Validar um atestado do NitroTPM](nitrotpm-attestation-document-validate.md).

Depois de criar a AMI atestável, você deve ter as medidas de referência que pode usar para validar as solicitações de uma instância do Amazon EC2. A AWS KMS tem compatibilidade integrada com atestação com o NitroTPM.

Para a chave AWS KMS que você usou para criptografar seus dados secretos, adicione uma política de chave que permita acesso à chave somente se as solicitações de API incluírem um atestado com medidas que correspondam às medidas de referência geradas durante o processo de criação da AMI atestável. Use medidas PCR4 e PCR12 para inicialização padrão ou medidas PCR7 para inicialização segura. Isso garante que somente as solicitações de instâncias iniciadas usando a AMI atestável possam realizar operações criptográficas usando a chave AWS KMS.

O AWS KMS fornece as chaves de condição `kms:RecipientAttestation:NitroTPMPCR4`, `kms:RecipientAttestation:NitroTPMPCR7` e `kms:RecipientAttestation:NitroTPMPCR12`, que permitem criar condições baseadas em atestação para políticas de chave KMS do NitroTPM. Para obter mais informações, consulte [Condition keys for NitroTPM](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-nitro-tpm.html).

Por exemplo, a política de chave AWS KMS a seguir permitirá acesso à chave somente se a solicitação for originária de uma instância com o perfil de instância `MyEC2InstanceRole` anexado e se a solicitação incluir um atestado com valores específicos de PCR 4 e PCR 12.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow requests from instances with attested AMI only",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyEC2InstanceRole"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateRandom"
      ],
      "Resource": "*",
      "Condition": {
        "StringEqualsIgnoreCase": {
          "kms:RecipientAttestation:NitroTPMPCR4":"EXAMPLE6b9b3d89a53b13f5dfd14a1049ec0b80a9ae4b159adde479e9f7f512f33e835a0b9023ca51ada02160EXAMPLE",
          "kms:RecipientAttestation:NitroTPMPCR12":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        }
      }
    }
  ]
}
```

# Obter o atestado do NitroTPM
<a name="attestation-get-doc"></a>

O atestado é um componente essencial do processo de atestação do NitroTPM. Ele contém uma série de medidas criptográficas que podem ser usadas para verificar a identidade da instância e provar que ela está executando somente software confiável. É possível usar o atestado com o AWS KMS, que tem compatibilidade integrada com a atestação do NitroTPM, ou criar seus próprios mecanismos criptográficos de atestação.

O utilitário `nitro-tpm-attest` permite que você recupere um atestado assinado do NitroTPM para uma instância do Amazon EC2 durante o runtime

O exemplo de descrição de imagem do Amazon Linux 2023 instala automaticamente o utilitário na imagem compilada no diretório `/usr/bin/`. Isso garante que o utilitário seja pré-instalado nas instâncias iniciadas usando a AMI. Não é necessário instalar o utilitário manualmente. Para obter mais informações, consulte [Criar o exemplo de descrição de imagem do Amazon Linux 2023](build-sample-ami.md).

**Topics**
+ [Instalar o utilitário `nitro-tpm-attest`](#nitro-tpm-attest-install)
+ [Usar o utilitário `nitro-tpm-attest`](#nitro-tpm-attest-use)
+ [Atestado do NitroTPM](nitrotpm-attestation-document-content.md)
+ [Validar atestado](nitrotpm-attestation-document-validate.md)

## Instalar o utilitário `nitro-tpm-attest`
<a name="nitro-tpm-attest-install"></a>

Se você estiver usando o Amazon Linux 2023, poderá instalar o utilitário `nitro-tpm-attest` a partir do repositório Amazon Linux como se segue.

```
sudo yum install aws-nitro-tpm-tools
```

## Usar o utilitário `nitro-tpm-attest`
<a name="nitro-tpm-attest-use"></a>

O utilitário fornece um único comando, `nitro-tpm-attest`, para recuperar o atestado. O comando retorna o atestado codificado em Concise Binary Object Representation (CBOR) e assinado usando CBOR Object Signing and Encryption (COSE).

Ao executar o comando, você pode especificar os seguintes parâmetros opcionais:
+ `public-key`: uma chave pública que pode ser usada pelo AWS KMS ou por um serviço externo para criptografar dados de resposta antes de serem retornados. Isso garante que somente o destinatário pretendido, que possui a chave privada, possa descriptografar os dados. Por exemplo, se você estiver atestando com o AWS KMS, o serviço criptografa os dados de texto simples com a chave pública no atestado e retorna o texto cifrado resultante no campo `CiphertextForRecipient` da resposta. Compatível somente com chaves RSA.
+ `user-data`: os dados do usuário podem ser usados para entregar dados assinados adicionais a um serviço externo. Esses dados do usuário podem ser usados para concluir um protocolo acordado entre a instância solicitante e o serviço externo. Não usado para atestação com o AWS KMS.
+ `nonce`: o nonce pode ser usado para configurar a autenticação de desafio-resposta entre a instância e o serviço externo para ajudar a evitar ataques de falsificação de identidade. Usar um nonce permite que o serviço externo verifique se está interagindo com uma instância ao vivo e não com um impostor que está reutilizando um atestado antigo. Não usado para atestação com o AWS KMS.

**Para recuperar o atestado**  
Use o seguinte comando e os seguintes parâmetros opcionais:

```
/usr/bin/nitro-tpm-attest \
--public-key rsa_public_key \
--user-data user_data \
--nonce nonce
```

Para ver um exemplo completo que mostra como gerar um par de chaves RSA e como solicitar um atestado com a chave pública, consulte o [repositório nitro-tpm-attest do GitHub](https://github.com/aws/NitroTPM-Tools/).

# Conteúdo do atestado do NitroTPM
<a name="nitrotpm-attestation-document-content"></a>

Um atestado é gerado pelo NitroTPM e assinado pelo Hipervisor Nitro. Ele inclui uma série de valores de registros de configuração de plataforma (PCR) relativos a uma instância do Amazon EC2. Os seguintes PCRs são incluídos no atestado:

**Importante**  
PCR0 e PCR1 geralmente são usados para medir o código de inicialização inicial, que é controlado pela AWS Para permitir atualizações seguras do código de inicialização inicial, esses PCRs sempre conterão valores constantes.
+ `PCR0`: código executável do firmware do sistema principal
+ `PCR1`: dados do firmware do sistema principal
+ `PCR2`: código executável estendido ou conectável
+ `PCR3`: dados de firmware estendidos ou conectáveis
+ `PCR4`: código do gerenciador de inicialização
+ `PCR5`: configuração de código e dados do gerenciador de inicialização e tabela de partição do GPT
+ `PCR6`: especificações do fabricante da plataforma host
+ `PCR7`: política de Secure Boot
+ `PCR8 - 15`: definido para uso pelo sistema operacional estático
+ `PCR16`: depuração
+ `PCR23`: compatibilidade com aplicação

**PCR4**, **PCR7** e **PCR12** são usados especificamente para validar se uma instância foi iniciada usando uma AMI atestável. O PCR4 e o PCR12 pode ser usado para validar com uma inicialização padrão e o PCR7 pode ser usado para validar com Secure Boot.
+ **PCR4 (código do gerenciador de inicialização)**: quando uma instância é iniciada, o NitroTPM cria hashes criptográficos de todos os binários executados pelo ambiente UEFI. Com as AMIs atestáveis, esses binários de inicialização incorporam hashes que evitam o carregamento futuro de binários que não tenham os hashes correspondentes. Dessa forma, o hash binário de inicialização única pode descrever exatamente qual código uma instância executará.
+ **PCR7 (política de inicialização segura)**: os binários de inicialização UEFI podem ser assinados com uma chave de assinatura de inicialização segura UEFI. Quando a Secure Boot UEFI está habilitada, a UEFI impede a execução de binários de inicialização UEFI que não atendam à política configurada. O PCR7 contém um hash da política de Secure Boot UEFI da instância.

  Se precisar manter uma política única do KMS que persista nas atualizações da instância, será possível criar uma política que seja validada em relação ao PCR7 para validar um certificado de Secure Boot UEFI. Durante a criação de uma AMI atestável, você pode assinar o binário de inicialização com seu certificado e instalá-lo como o único certificado permitido nos dados UEFI da AMI. Lembre-se de que esse modelo exige que você ainda gere um novo certificado, instale-o em sua política e atualize as AMIs se quiser evitar que instâncias iniciadas de AMIs antigas (não confiáveis) passem pela política do KMS.
+ **PCR12** — Contém o hash da linha de comando passado para o binário de inicialização UEFI. Necessário em conjunto com o PCR4 para inicialização padrão, para validar que a linha de comando não sofreu alterações.

# Validar um atestado do NitroTPM
<a name="nitrotpm-attestation-document-validate"></a>

**nota**  
Este tópico se destina aos usuários que estão usando um serviço de gerenciamento de chaves terceirizado e precisam criar seus próprios mecanismos de validação de atestado.

Este tópico fornece uma visão geral detalhada de todo o fluxo de atestação do NitroTPM. Também discute o que é gerado pelo sistema AWS Nitro quando um atestado é solicitado e explica como um serviço de gerenciamento de chaves deve processar um atestado.

**Topics**
+ [O atestado](#doc-def)
+ [Validação do atestado](#validation-process)

O objetivo do atestado é provar que uma instância é uma entidade confiável, com base no código e na configuração que está sendo executada. A raiz de confiança da instância reside no sistema AWS Nitro, que fornece os atestados. 

Os atestados são assinados pela Public Key Infrastructure (PKI) da atestação do AWS Nitro, que inclui uma autoridade de certificação publicada que pode ser incorporada a qualquer serviço. 

## O atestado
<a name="doc-def"></a>

Os atestados são codificados em Concise Binary Object Representation (CBOR) e assinados usando CBOR Object Signing and Encryption (COSE).

Para obter mais informações sobre CBOR, consulte [RFC 8949: Concise Binary Object Representation (CBOR)](https://www.rfc-editor.org/rfc/rfc8949.html).

### Especificação do atestado
<a name="doc-spec"></a>

O exemplo a seguir mostra a estrutura de um atestado.

```
AttestationDocument = {
    module_id: text,                     ; issuing Nitro hypervisor module ID
    timestamp: uint .size 8,             ; UTC time when document was created, in
                                         ; milliseconds since UNIX epoch
    digest: digest,                      ; the digest function used for calculating the
                                         ; register values
    nitrotpm_pcrs: { + index => pcr },   ; map of PCRs at the moment the Attestation Document was generated
    certificate: cert,                   ; the public key certificate for the public key 
                                         ; that was used to sign the Attestation Document
    cabundle: [* cert],                  ; issuing CA bundle for infrastructure certificate
    ? public_key: user_data,             ; an optional DER-encoded key the attestation
                                         ; consumer can use to encrypt data with
    ? user_data: user_data,              ; additional signed user data, defined by protocol
    ? nonce: user_data,                  ; an optional cryptographic nonce provided by the
                                         ; attestation consumer as a proof of authenticity
}

cert = bytes .size (1..1024)       ; DER encoded certificate
user_data = bytes .size (0..1024)
pcr = bytes .size (32/48/64)       ; PCR content
index = 0..31
digest = "SHA384"
```

Os parâmetros opcionais do atestado (`public_key`, `user_data` e `nonce`) podem ser usados para estabelecer um protocolo de validação personalizado entre uma instância de atestado e o serviço externo.

## Validação do atestado
<a name="validation-process"></a>

Ao solicitar um atestado do Hipervisor Nitro, você recebe um blob binário que contém o atestado assinado. O atestado assinado é um objeto codificado em CBOR e assinado com COSE (usando o objeto de estrutura de assinatura COSE\$1Sign1). O processo de validação inclui as seguintes etapas:

1. Decodifique o objeto CBOR e mapeie-o para uma estrutura COSE\$1Sign1.

1. Extraia o atestado da estrutura COSE\$1Sign1.

1. Verifique a cadeia do certificado.

1. Certifique-se de que o atestado esteja devidamente assinado.

Os atestados são assinados pela PKI da atestação do AWS Nitro, que inclui um certificado raiz para as partições comerciais AWS. O certificado-raiz pode ser baixado de [https://aws-nitro-enclaves.amazonaws.com/AWS\$1NitroEnclaves\$1Root-G1.zip](https://aws-nitro-enclaves.amazonaws.com/AWS_NitroEnclaves_Root-G1.zip) e pode ser verificado usando a impressão digital a seguir.

```
64:1A:03:21:A3:E2:44:EF:E4:56:46:31:95:D6:06:31:7E:D7:CD:CC:3C:17:56:E0:98:93:F3:C6:8F:79:BB:5B
```

O certificado raiz é baseado em uma chave privada da autoridade privada de certificação (CA Privada da AWS) do AWS Certificate Manager e tem vida útil de 30 anos. O assunto da PCA tem o seguinte formato:

```
CN=aws.nitro-enclaves, C=US, O=Amazon, OU=AWS
```

**Topics**
+ [COSE e CBOR](#COSE-CBOR)
+ [Validação semântica](#semantic-validation)
+ [Validade de certificado](#cert-validity)
+ [Validade da cadeia de certificados](#chain)

### COSE e CBOR
<a name="COSE-CBOR"></a>

Normalmente, a estrutura de assinatura COSE\$1Sign1 é usada quando apenas uma assinatura vai ser colocada em uma mensagem. Os parâmetros que lidam com o conteúdo e a assinatura são colocados no cabeçalho protegido em vez de ter a separação da COSE\$1Sign. A estrutura pode ser codificada como marcada ou não marcada, dependendo do contexto em que será usada. Uma estrutura marcada COSE\$1Sign1 é identificada pela tag CBOR 18. 

O objeto CBOR que traz o corpo, a assinatura e as informações sobre o corpo e a assinatura é chamado de estrutura COSE\$1Sign1. A estrutura COSE\$1Sign1 é uma matriz CBOR. A matriz inclui os campos a seguir.

```
[
  protected:   Header,
  unprotected: Header,
  payload:     This field contains the serialized content to be signed,
  signature:   This field contains the computed signature value.
]
```

No contexto de um atestado, a matriz inclui o que se segue.

```
18(/* COSE_Sign1 CBOR tag is 18 */
    {1: -35}, /* This is equivalent with {algorithm: ECDS 384} */
    {}, /* We have nothing in unprotected */
    $ATTESTATION_DOCUMENT_CONTENT /* Attestation Document */,
    signature /* This is the signature */
)
```

Para obter mais informações sobre CBOR, consulte [RFC 8949: Concise Binary Object Representation (CBOR)](https://www.rfc-editor.org/rfc/rfc8949.html).

### Validação semântica
<a name="semantic-validation"></a>

Um atestado sempre tem o pacote da CA na ordem a seguir.

```
[ ROOT_CERT - INTERM_1 - INTERM_2 .... - INTERM_N]
      0          1          2             N - 1
```

Lembre-se dessa ordem, pois algumas ferramentas existentes, como o CertPath do Java do [Java PKI API Programmer's Guide](https://docs.oracle.com/javase/8/docs/technotes/guides/security/certpath/CertPathProgGuide.html), podem exigir uma ordem diferente.

Para validar os certificados, comece com o pacote da CA do atestado e gere a cadeia necessária, na qual `TARGET_CERT` é o certificado no atestado.

```
[TARGET_CERT, INTERM_N, ..... , INTERM_2, INTERM_1, ROOT_CERT]
```

### Validade de certificado
<a name="cert-validity"></a>

Para todos os certificados da cadeia, você deve garantir que a data atual esteja dentro do período de validade especificado no certificado.

### Validade da cadeia de certificados
<a name="chain"></a>

Em geral, uma cadeia de vários certificados pode ser necessária, incluindo um certificado do proprietário da chave pública assinado por uma CA e zero ou mais certificados adicionais de CAs assinados por outras CAs. Essas cadeias, chamadas de caminhos de certificação, são necessárias porque um usuário de chave pública é inicializado apenas com um número limitado de chaves públicas garantidas da CA. Os procedimentos de validação do caminho de certificação para a PKI da Internet são baseados no algoritmo fornecido no X.509. O processamento do caminho de certificação verifica a associação entre o nome distinto do sujeito e/ou o nome alternativo do sujeito e a chave pública do sujeito. A vinculação é limitada pelas restrições especificadas nos certificados que compõem o caminho e as entradas que são especificadas pela parte que vai confiar. As restrições básicas e as extensões das restrições das políticas permitem que a lógica de processamento do caminho de certificação automatize o processo de tomada de decisão.

**nota**  
A CRL deve estar desabilitada ao fazer a validação.

Usando Java, partindo do caminho raiz e da cadeia de certificados gerada, a validação da cadeia se dá como se segue.

```
validateCertsPath(certChain, rootCertficate) {
    /* The trust anchor is the root CA to trust */
    trustAnchors.add(rootCertificate);

    /* We need PKIX parameters to specify the trust anchors
     * and disable the CRL validation
     */
    validationParameters = new PKIXParameters(trustAnchors);
    certPathValidator = CertPathValidator.getInstance(PKIX);
    validationParameters.setRevocationEnabled(false);

    /* We are ensuring that certificates are chained correctly */
    certPathValidator.validate(certPath, validationParameters);
}
```

# Integração com o AWS KMS
<a name="attestation-attest"></a>

A instância deve ter uma aplicação que possa fazer solicitações de API do AWS KMS com atestado recuperado do NitroTPM. Quando você faz uma solicitação com um atestado, o AWS KMS valida as medidas no atestado fornecido em relação às medidas de referência na política de chave do KMS. Solicitações são permitidas somente se as medidas no atestado corresponderem às medidas de referência na política de chave do KMS.

Quando você chama as operações de API [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html) ou [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html) com um documento assinado, essas APIs criptografam o texto sem formatação na resposta com a chave pública do Atestado e retornam texto cifrado em vez de texto sem formatação. Esse texto cifrado pode ser descriptografado somente com a chave privada correspondente que foi gerada na instância.

*Para obter mais informações, consulte o [ Cryptographic attestation for NitroTPM](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) no AWS Key Management Service Developer Guide*.

**nota**  
Se você estiver atestando para um serviço de terceiros, deverá criar seus próprios mecanismos personalizados para receber, analisar e validar atestados. Para obter mais informações, consulte [Validar um atestado do NitroTPM](nitrotpm-attestation-document-validate.md).

# Isolar dados de seus próprios operadores
<a name="isolate-data-operators"></a>

O Sistema AWS Nitro tem [zero acesso do operador](https://docs.aws.amazon.com/whitepapers/latest/security-design-of-aws-nitro-system/no-aws-operator-access.html). Não existe nenhum mecanismo para que qualquer sistema da AWS ou pessoa faça login nos hosts do Amazon EC2 Nitro, acesse a memória das instâncias do EC2 ou acesse dados de clientes mantidos no armazenamento de instâncias criptografadas locais ou volumes criptografados remotos do Amazon EBS.

Ao processar dados altamente sensíveis, pode ser aconselhável restringir o acesso a esses dados evitando que até seus próprios operadores acessem a instância do EC2.

É possível criar AMIs atestáveis personalizadas, configuradas para fornecer um ambiente computacional isolado. A configuração da AMI depende da workload e dos requisitos da aplicação. Leve em conta essas práticas recomendáveis ao compilar a AMI para criar um ambiente computacional isolado.
+ **Remova todo acesso interativo** para evitar que os operadores ou usuários acessem a instância.
+ **Certifique-se de que somente software e código confiáveis** estejam incluídos na AMI.
+ **Configure um firewall de rede** dentro da instância para bloquear o acesso.
+ **Garanta estados somente leitura e imutáveis** para todos os sistemas de armazenamento e de arquivos.
+ **Restrinja o acesso à instância** a chamadas de API autenticadas, autorizadas e registradas em log.

# Atualizar AMIs atestáveis que não têm acesso interativo
<a name="working-with-isolated-amis"></a>

Quando você inicia uma instância usando uma AMI de ambiente computacional isolado, não há como nenhum usuário ou operador se conectar à instância. Isso significa que não existe nenhuma maneira de instalar ou atualizar software na instância após a inicialização.

Se for necessário um novo software ou uma atualização de software, será necessário uma nova AMI atestável que inclua o software ou as atualizações de software requeridas. Depois, use essa AMI para iniciar uma nova instância ou para realizar uma substituição do volume raiz na instância original. Qualquer alteração de software feita na AMI resultará na geração de um novo hash.

As ações a seguir resultarão em uma alteração nas medidas de referência do atestado do NitroTPM:
+ Interromper e iniciar uma instância iniciada com uma AMI atestável
+ Realizar uma substituição de volume raiz por uma AMI diferente

Se você realizar qualquer uma dessas ações, deverá atualizar o serviço de atestado com as novas medidas de referência. Por exemplo, você deverá atualizar a política de chaves do KMS com as novas medidas de referência se estiver usando o AWS KMS para atestação.

Uma instância retém o material de chave do NitroTPM durante todo o seu ciclo de vida e persiste durante interrupções/inícios e operações de substituição de volume raiz.

# Credential Guard para instâncias do Windows
<a name="credential-guard"></a>

O AWS Nitro System é compatível com instâncias do Credential Guard para Amazon Elastic Compute Cloud (Amazon EC2) no Windows. O Credential Guard é um recurso de segurança baseada em virtualização (VBS) do Windows que permite a criação de ambientes isolados para proteger ativos de segurança, como credenciais de usuário do Windows e imposição da integridade de código, além das proteções do kernel do Windows. Quando você executa instâncias do Windows no EC2, o Credential Guard usa o AWS Nitro System para impedir que as credenciais de login do Windows sejam extraídas da memória do sistema operacional.

**Topics**
+ [Pré-requisitos](#credential-guard-prerequisites)
+ [Inicialização de uma instância compatível](#credential-guard-launch-instance)
+ [Desabilitação da integridade da memória](#disable-memory-integrity)
+ [Ativação do Credential Guard](#turn-on-credential-guard)
+ [Verificação se o Credential Guard está em execução](#verify-credential-guard)

## Pré-requisitos
<a name="credential-guard-prerequisites"></a>

Sua instância do Windows deve cumprir os pré-requisitos a seguir para utilizar o Credential Guard.

**Imagens de máquina da Amazon (AMIs)**  
A AMI deve ser pré-configurada para habilitar o NitroTPM e o UEFI Secure Boot. Para obter mais informações sobre as AMIs compatíveis, consulte [Requisitos para usar o NitroTPM com instâncias do Amazon EC2](enable-nitrotpm-prerequisites.md).

**Integridade da memória**  
Não há suporte à *integridade da memória*, também conhecida como *integridade de código protegida por hipervisor (HVCI)* ou *integridade de código imposta pelo hipervisor*. Antes de ativar o Credential Guard, você deve garantir que esse atributo esteja desabilitado. Para obter mais informações, consulte [Desabilitação da integridade da memória](#disable-memory-integrity).

**Tipos de instância**  
Os seguintes tipos de instância são compatíveis com o Credential Guard em todos os tamanhos, exceto se indicado de outra forma: `C5`, `C5d`, `C5n`, `C6i`, `C6id`, `C6in`, `C7i`, `C7i-flex`, `M5`, `M5d`, `M5dn`, `M5n`, `M5zn`, `M6i`, `M6id`, `M6idn`, `M6in`, `M7i`, `M7i-flex`, `R5`, `R5b`, `R5d`, `R5dn`, `R5n`, `R6i`, `R6id`, `R6idn`, `R6in` `R7i`, `R7iz`, `T3`.  
+ Embora o NitroTPM tenha alguns tipos de instância obrigatórios em comum, o tipo de instância deve ser um dos tipos de instância anteriores para ser compatível com o Credential Guard.
+ O Credential Guard não é compatível com:
  + Instâncias bare metal
  + Os seguintes tipos de instância: `C7i.48xlarge`, `M7i.48xlarge` e `R7i.48xlarge`.
Para obter mais informações sobre tipos de instância, consulte o [Guia de tipos de instância do Amazon EC2](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html).

## Inicialização de uma instância compatível
<a name="credential-guard-launch-instance"></a>

Agora é possível usar o console do Amazon EC2 ou AWS Command Line Interface (AWS CLI) para iniciar uma instância que é compatível com o Credential Guard. Você precisará de um ID de AMI compatível para iniciar sua instância, que seja exclusivo para cada Região da AWS.

**dica**  
É possível usar o link a seguir para descobrir e iniciar instâncias com AMIs compatíveis fornecidas pela Amazon no console do Amazon EC2:  
[https://console.aws.amazon.com/ec2/v2/home?#Images:visibility=public-images;v=3;search=:TPM-Windows_Server;ownerAlias=amazon](https://console.aws.amazon.com/ec2/v2/home?#Images:visibility=public-images;v=3;search=:TPM-Windows_Server;ownerAlias=amazon)

------
#### [ Console ]

**Como iniciar uma instância**  
Siga as etapas para [iniciar uma instância](ec2-launch-instance-wizard.md), especificando um tipo de instância compatível e uma AMI do Windows configurada previamente.

------
#### [ AWS CLI ]

**Como iniciar uma instância**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) para iniciar uma instância usando um tipo de instância compatível e a AMI do Windows pré-configurada.

```
aws ec2 run-instances \
    --image-id resolve:ssm:/aws/service/ami-windows-latest/TPM-Windows_Server-2022-English-Full-Base \
    --instance-type c6i.large \
    --region us-east-1 \
    --subnet-id subnet-0abcdef1234567890
    --key-name key-name
```

------
#### [ PowerShell ]

**Como iniciar uma instância**  
Use o comando [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) para iniciar uma instância usando um tipo de instância compatível e a AMI do Windows pré-configurada.

```
New-EC2Instance `
    -ImageId resolve:ssm:/aws/service/ami-windows-latest/TPM-Windows_Server-2022-English-Full-Base `
    -InstanceType c6i.large `
    -Region us-east-1 `
    -SubnetId subnet-0abcdef1234567890 `
    -KeyName key-name
```

------

## Desabilitação da integridade da memória
<a name="disable-memory-integrity"></a>

É possível usar o Editor de Política de Grupo Local para desativar a integridade da memória em cenários compatíveis. A seguinte orientação pode ser aplicada para cada configuração em **Proteção da integridade do código baseada em virtualização**:
+ **Habilitada sem bloqueio**: modifique a configuração para **Desabilitada** para desabilitar a integridade da memória.
+ **Habilitada com bloqueio de UEFI**: a integridade da memória foi habilitada com o bloqueio de UEFI. A integridade da memória não pode ser desabilitada depois de habilitada com o bloqueio de UEFI. Recomendamos criar uma nova instância com a integridade da memória desabilitada e encerrar a instância sem suporte se ela não estiver em uso.

**Para desabilitar a integridade da memória com o Editor de Política de Grupo Local**

1. Conecte-se à sua instância como uma conta de usuário com privilégios de administrador usando o protocolo do Desktop Remoto (RDP). Para obter mais informações, consulte [Conexão com a instância do Windows usando um cliente RDP](connect-rdp.md).

1. Abra o menu Iniciar e pesquise **cmd** para iniciar um prompt de comando.

1. Execute os comandos a seguir para abrir o Editor de Política de Grupo Local: `gpedit.msc`

1. No Editor de Política de Grupo Local, selecione **Configuração do Computador**, **Modelos Administrativos**, **Sistema**, **Device Guard**.

1. Selecione **Ativar Segurança Baseada em Virtualização** e, em seguida, selecione **Editar configuração de política**.

1. Abra o menu suspenso de configurações para **Proteção da integridade do código baseada em virtualização**, escolha **Desabilitada** e, em seguida, escolha **Aplicar**.

1. Reinicie a instância para aplicar as alterações.

## Ativação do Credential Guard
<a name="turn-on-credential-guard"></a>

Depois de iniciar uma instância do Windows com um tipo de instância e uma AMI compatíveis e confirmar que a integridade da memória está desabilitada, será possível habilitar o Credential Guard.

**Importante**  
São necessários privilégios de administrador para executar as seguintes etapas para ativar o Credential Guard.

**Para ativar o Credential Guard**

1. Conecte-se à sua instância como uma conta de usuário com privilégios de administrador usando o protocolo do Desktop Remoto (RDP). Para obter mais informações, consulte [Conexão com a instância do Windows usando um cliente RDP](connect-rdp.md).

1. Abra o menu Iniciar e pesquise **cmd** para iniciar um prompt de comando.

1. Execute os comandos a seguir para abrir o Editor de Política de Grupo Local: `gpedit.msc`

1. No Editor de Política de Grupo Local, selecione **Configuração do Computador**, **Modelos Administrativos**, **Sistema**, **Device Guard**.

1. Selecione **Ativar Segurança Baseada em Virtualização** e, em seguida, selecione **Editar configuração de política**.

1. Escolha **Ativado** ** no menu Ativar Segurança Baseada em Virtualização**.

1. Em **Selecione o Nível de Segurança da Plataforma**, escolha **Inicialização segura e a proteção de DMA**.

1. Em **Configuração do Credential Guard**, escolha **Habilitada com bloqueio de UEFI**.
**nota**  
As configurações de política restantes não são necessárias para ativar o Credential Guard e podem ser deixadas como **Não configuradas**.

   A imagem a seguir exibe as configurações de VBS definidas conforme descrito anteriormente:  
![\[\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/vbs-credential-guard-gpo-enabled.png)

1. Reinicie a instância para aplicar as configurações.

## Verificação se o Credential Guard está em execução
<a name="verify-credential-guard"></a>

É possível usar a ferramenta Informações do sistema Microsoft (`Msinfo32.exe`) para confirmar se o Credential Guard está em execução.

**Importante**  
Você deve primeiro reinicializar a instância para concluir a aplicação das configurações de política necessárias para ativar o Credential Guard.

**Para verificar se o Credential Guard está em execução**

1. Conecte-se à sua instância usando o Remote Desktop Protocol (RDP). Para obter mais informações, consulte [Conexão com a instância do Windows usando um cliente RDP](connect-rdp.md).

1. Na sessão RDP da sua instância, abra o menu Iniciar e pesquise **cmd** para iniciar um prompt de comando.

1. Abra as informações do sistema ao executar o comando a seguir: `msinfo32.exe`

1. A ferramenta Informações do sistema Microsoft lista os detalhes da configuração do VBS. Ao lado de Serviços de segurança baseados em virtualização, confirme se o **Credential Guard** aparece como **em execução**.

   A imagem a seguir mostra que o VBS está sendo executado conforme descrito anteriormente:  
![\[\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/vbs-credential-guard-msinfo32-enabled.png)

# Acessar o Amazon EC2 usando um endpoint da VPC de interface
<a name="interface-vpc-endpoints"></a>

É possível melhorar a postura de segurança da sua VPC criando uma conexão privada entre os recursos da sua VPC e a API do Amazon EC2. É possível acessar a API do Amazon EC2 como se estivesse em sua VPC, sem usar um gateway da Internet, um dispositivo NAT, uma conexão VPN ou uma conexão Direct Connect. As instâncias do EC2 na VPC não precisam de endereços IP públicos para acessar a API do Amazon EC2.

Para obter mais informações, consulte [Acessar os Serviços da AWS pelo AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) no *Guia do AWS PrivateLink*.

**Topics**
+ [Criar um VPC endpoint de interface](#create-endpoint)
+ [Criar uma política de endpoint](#endpoint-policy)

## Criar um VPC endpoint de interface
<a name="create-endpoint"></a>

Crie um endpoint de interface para o Amazon EC2 usando o seguinte nome de serviço:
+ **com.amazonaws.*região*.ec2**: cria um endpoint para as ações da API do Amazon EC2.

Para obter mais informações, consulte [Acessar um AWS service (Serviço da AWS) usando um endpoint de VPC de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html), no *Guia do AWS PrivateLink*.

## Criar uma política de endpoint
<a name="endpoint-policy"></a>

Uma política de endpoint é um recurso do IAM que você pode anexar ao endpoint de interface. A política de endpoint padrão permite acesso total à API do Amazon EC2 por meio do endpoint de interface. Para controlar o acesso permitido à API do Amazon EC2 pela VPC, anexe uma política de endpoint personalizada ao endpoint de interface.

Uma política de endpoint especifica as seguintes informações:
+ As entidades principais que podem executar ações.
+ As ações que podem ser executadas.
+ O recurso no qual as ações podem ser executadas.

**Importante**  
Quando uma política não padrão é aplicada a um endpoint da VPC de interface para o Amazon EC2, determinadas solicitações de API com falha, como as com falha de `RequestLimitExceeded`, podem não ser registradas no AWS CloudTrail nem no Amazon CloudWatch.

Para obter mais informações, consulte [Control access to services using endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) (Controlar o acesso a serviços usando políticas de endpoint) no *Guia do AWS PrivateLink*.

O exemplo a seguir mostra uma política de VPC endpoint que nega permissão para criar volumes não criptografados ou executar instâncias com volumes não criptografados. O exemplo de política também concede permissão para executar todas as outras ações do Amazon EC2.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
    },
    {
        "Action": [
            "ec2:CreateVolume"
        ],
        "Effect": "Deny",
        "Resource": "*",
        "Principal": "*",
        "Condition": {
            "Bool": {
                "ec2:Encrypted": "false"
            }
        }
    },
    {
        "Action": [
            "ec2:RunInstances"
        ],
        "Effect": "Deny",
        "Resource": "*",
        "Principal": "*",
        "Condition": {
            "Bool": {
                "ec2:Encrypted": "false"
            }
        }
    }]
}
```

------