

# 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
```

------