

# Configurar opções de metadados da instância para novas instâncias
Para novas instâncias

É possível configurar as opções de metadados de instância a seguir em cada instância.

**Topics**
+ [

## Exigir o uso de IMDSv2
](#configure-IMDS-new-instances)
+ [

## Habilitar os endpoints IPv4 e IPv6 do IMDS
](#configure-IMDS-new-instances-ipv4-ipv6-endpoints)
+ [

## Desativar o acesso aos metadados da instância
](#configure-IMDS-new-instances--turn-off-instance-metadata)
+ [

## Permitir acesso a tags em metadados de instância
](#configure-IMDS-new-instances-tags-in-instance-metadata)

**nota**  
A configuração dessa opções é definida no nível da conta, diretamente na conta ou usando uma política declarativa. Elas devem ser configuradas em cada Região da AWS onde você quiser configurar as opções de metadados da instância. O uso de uma política declarativa permite que você aplique as configurações em várias regiões simultaneamente, bem como em várias contas simultaneamente. Quando uma política declarativa está em uso, você não pode modificar as configurações diretamente em uma conta. Este tópico descreve como ajustar as configurações diretamente em uma conta. Para obter informações sobre o uso de políticas declarativas, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do usuário do AWS Organizations*.

## Exigir o uso de IMDSv2


É possível utilizar um dos métodos a seguir para exigir o uso do IMDSv2 nas novas instâncias.

**Topics**
+ [

### Definir o IMDSv2 como o padrão para a conta
](#set-imdsv2-account-defaults)
+ [

### Aplique o IMDSv2 no nível da conta
](#enforce-imdsv2-at-the-account-level)
+ [

### Configurar a instância na inicialização
](#configure-IMDS-new-instances-instance-settings)
+ [

### Configurar a AMI
](#configure-IMDS-new-instances-ami-configuration)
+ [

### Usar uma política do IAM
](#configure-IMDS-new-instances-iam-policy)

### Definir o IMDSv2 como o padrão para a conta


É possível definir a versão padrão do serviço de metadados de instância (IMDS) em nível de conta para cada Região da AWS. Isso significa que, quando uma *nova* instância é executada, a versão dos metadados da instância é definida automaticamente para padrão do nível de conta. No entanto, você pode substituir manualmente o valor na execução ou após a execução. Para obter mais informações sobre como as configurações em nível de conta e as substituições manuais afetam uma instância, consulte [Ordem de precedência das opções de metadados da instância](configuring-instance-metadata-options.md#instance-metadata-options-order-of-precedence).

**nota**  
Definir o padrão no nível de conta não redefine as instâncias *existentes*. Por exemplo, se você definir o padrão no nível de conta como IMDSv2, as instâncias existentes definidas como IMDSv1 não serão afetadas. Se desejar alterar o valor nas instâncias existentes, altere manualmente o valor nas próprias instâncias.

É possível definir o padrão da conta para a versão dos metadados de instância como IMDSv2 para que todas as *novas* instâncias na conta sejam iniciadas com o IMDSv2 obrigatório. Nesse caso, o IMDSv1 será desabilitado. Com esse padrão da conta, quando você executar uma instância, os valores padrão da instância serão os seguintes:
+ Console: a **Versão de metadados** estará definida como **Somente V2 (requer token)** e o **Limite de salto de resposta de metadados** como **2**.
+ AWS CLI: `HttpTokens` estará definido como `required` e `HttpPutResponseHopLimit` como `2`. 

**nota**  
Antes de definir a conta padrão para IMDSv2, certifique-se de que suas instâncias não dependam do IMDSv1. Para obter mais informações, consulte [Caminho recomendado para exigir IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2).

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

**Para definir o IMDSv2 como padrão para a conta da região especificada**

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

1. Para alterar a Região da AWS, use o seletor de regiões no canto superior direito da página.

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Ao lado de **Padrões do IMDS**, escolha **Gerenciar**.

1. Na página **Gerenciar padrões do IMDS**, faça o seguinte:

   1. Em **Serviço de metadados de instância**, escolha **Habilitado**.

   1. Em **Metadata version** (Versão de metadados), selecione **V2 only (token required)** (Apenas V2 [token obrigatório]).

   1. Em **Limite de salto de resposta de metadados**, especifique **2** se suas instâncias forem hospedar contêineres. Caso contrário, selecione **Sem preferência**. Quando nenhuma preferência é especificada, na inicialização, o valor padrão é **2** se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é **1**.

   1. Selecione **Atualizar**.

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

**Para definir o IMDSv2 como padrão para a conta da região especificada**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) e especifique a região na qual deseja modificar as configurações do IMDS por conta. Inclua `--http-tokens` definido como `required` e `--http-put-response-hop-limit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-put-response-hop-limit 2
```

O seguinte é um exemplo de saída.

```
{
    "Return": true
}
```

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para a região especificada**  
Use o comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) e especifique a região.

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

O seguinte é um exemplo de saída.

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpPutResponseHopLimit": 2
    },
    "ManagedBy": "account"
}
```

O campo `ManagedBy` indica a entidade que definiu as configurações. Neste exemplo, `account` indica que as configurações foram definidas diretamente na conta. Um valor de `declarative-policy` significaria que as configurações foram definidas por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

**Para definir o IMDSv2 como o padrão para a conta de todas as regiões**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua `--http-tokens` definido como `required` e `--http-put-response-hop-limit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens required \
            --http-put-response-hop-limit 2 \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

O seguinte é um exemplo de saída.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões**  
Use o comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html).

```
echo -e "Region   \t Level          Hops    HttpTokens" ; \
echo -e "-------------- \t ------------   ----    ----------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

O seguinte é um exemplo de saída.

```
Region           Level          Hops    HttpTokens
--------------   ------------   ----    ----------
ap-south-1       ACCOUNTLEVEL   2       required
eu-north-1       ACCOUNTLEVEL   2       required
eu-west-3        ACCOUNTLEVEL   2       required
...
```

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

**Para definir o IMDSv2 como padrão para a conta da região especificada**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) e especifique a região na qual deseja modificar as configurações de nível de conta do IMDS. Inclua `-HttpToken` definido como `required` e `-HttpPutResponseHopLimit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

O seguinte é um exemplo de saída.

```
True
```

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para a região especificada**  
Use o cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html) e especifique a região.

```
Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List
```

O seguinte é um exemplo de saída.

```
HttpEndpoint            : 
HttpPutResponseHopLimit : 2
HttpTokens              : required
InstanceMetadataTags    :
```

**Para definir o IMDSv2 como o padrão para a conta de todas as regiões**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua `-HttpToken` definido como `required` e `-HttpPutResponseHopLimit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

Saída esperada

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões**  
Use o cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html).

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

Exemplo de saída

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### Aplique o IMDSv2 no nível da conta


Você pode impor o uso do IMDSv2 por conta para cada Região da AWS. Quando impostas, as instâncias só podem ser iniciadas se estiverem configuradas para exigir o IMDSv2. Essa imposição se aplica independentemente de como a instância ou a AMI estejam configuradas.

**nota**  
Antes de ativar a aplicação do IMDSv2 no nível da conta, certifique-se de que suas aplicações e AMIs sejam compatíveis com o IMDSv2. Para obter mais informações, consulte [Caminho recomendado para exigir IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2). Se a imposição do IMDSv2 estiver habilitada e o `httpTokens` não tiver sido definido para `required` na configuração da instância na inicialização, nas configurações da conta ou na configuração da AMI, sua execução falhará. Para obter informações sobre a solução de problemas, consulte [Falha na inicialização de uma instância habilitada para IMDSv1](troubleshooting-launch.md#launching-an-imdsv1-enabled-instance-fails).

**nota**  
Essa configuração não altera a versão do IMDS das instâncias existentes, mas bloqueia a ativação do IMDSv1 em instâncias existentes que atualmente têm o IMDSv1 desabilitado.

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

**Para impor o IMDSv2 para a conta na região especificada**

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

1. Para alterar a Região da AWS, use o seletor de regiões no canto superior direito da página.

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Ao lado de **Padrões do IMDS**, escolha **Gerenciar**.

1. Na página **Gerenciar padrões do IMDS**, faça o seguinte:

   1. Em **Metadata version** (Versão de metadados), selecione **V2 only (token required)** (Apenas V2 [token obrigatório]).

   1. Para **Impor IMDSv2**, escolha **Habilitado**.

   1. Selecione **Atualizar**.

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

**Para impor o IMDSv2 para a conta na região especificada**  
 Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) e especifique a região na qual deseja impor o IMDSv2. 

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-tokens-enforced enabled
```

O seguinte é um exemplo de saída.

```
{
"Return": true
}
```

**Para visualizar a configuração de imposição do IMDSv2 para a conta em uma região específica**  
Use o comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) e especifique a região.

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

O seguinte é um exemplo de saída.

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpTokensEnforced": "enabled"
    },
    "ManagedBy": "account"
}
```

O campo `ManagedBy` indica a entidade que definiu as configurações. Neste exemplo, `account` indica que as configurações foram definidas diretamente na conta. Um valor de `declarative-policy` significaria que as configurações foram definidas por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

**Para impor o IMDSv2 para a conta de todas as regiões**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para impor o IMDSv2 em todas as regiões.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

O seguinte é um exemplo de saída.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Para visualizar a configuração de imposição do IMDSv2 para a conta em todas as regiões**  
Use o comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html).

```
echo -e "Region   \t Level           HttpTokensEnforced" ; \
echo -e "-------------- \t ------------   ----------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --query 'AccountLevel.HttpTokensEnforced' \           
            --output text)
        echo -e "$region \t ACCOUNTLEVEL $output" 
    );
done
```

O seguinte é um exemplo de saída.

```
Region           Level          HttpTokensEnforced
--------------   ------------   ------------------
ap-south-1       ACCOUNTLEVEL   enabled
eu-north-1       ACCOUNTLEVEL   enabled
eu-west-3        ACCOUNTLEVEL   enabled
...
```

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

**Para impor o IMDSv2 para a conta na região especificada**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) e especifique a região na qual deseja impor o IMDSv2. 

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

O seguinte é um exemplo de saída.

```
@{
    Return = $true
}
```

**Para visualizar a configuração de imposição do IMDSv2 para a conta em uma região específica**  
Use o comando Get-EC2InstanceMetadataDefault e especifique a região.

```
Get-EC2InstanceMetadataDefault -Region us-east-1
```

O seguinte é um exemplo de saída.

```
@{
    AccountLevel = @{
        HttpTokens = "required"
        HttpTokensEnforced = "enabled"
    }
    ManagedBy = "account"
}
```

O campo `ManagedBy` indica a entidade que definiu as configurações. Neste exemplo, `account` indica que as configurações foram definidas diretamente na conta. Um valor de `declarative-policy` significaria que as configurações foram definidas por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

**Para impor o IMDSv2 para a conta de todas as regiões**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para impor o IMDSv2 em todas as regiões.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

O seguinte é um exemplo de saída.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Para definir o IMDSv2 como o padrão para a conta de todas as regiões**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua `-HttpToken` definido como `required` e `-HttpPutResponseHopLimit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

Saída esperada

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões**  
Use o cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html).

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

Exemplo de saída

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### Configurar a instância na inicialização


Quando você [inicia uma instância](ec2-launch-instance-wizard.md), pode configurá-la para exigir o uso do IMDSv2, configurando os seguintes campos:
+ Console do Amazon EC2: defina **Metadata version** (Versão de metadados) como **V2 only (token required)** (Apenas V2 [token obrigatório]).
+ AWS CLI: defina `HttpTokens` como `required`.

Quando você especificar que o IMDSv2 é obrigatório, também deverá habilitar o endpoint do Serviço de metadados da instância (IMDS) definindo **Metadados acessíveis** como **Habilitado** (console) ou `HttpEndpoint` como `enabled` (AWS CLI).

Em um ambiente de contêiner, quando o IMDSv2 for necessário, recomendamos definir o limite de saltos como `2`. Para obter mais informações, consulte [Considerações sobre o acesso aos metadados da instância](instancedata-data-retrieval.md#imds-considerations).

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

**Como exigir o uso do IMDSv2 em uma nova instância**
+ Ao executar uma nova instância no console do Amazon EC2, expanda **Advanced details** (Detalhes avançados) e faça o seguinte:
  + Para **Metadata acessible** (Metadados acessíveis), escolha **Enabled** (Habilitado).
  + Em **Metadata version** (Versão de metadados), selecione **V2 only (token required)** (Apenas V2 [token obrigatório]).
  + (Ambiente de contêiner) Em **Limite de salto de resposta dos metadados**, escolha **2**.

  Para obter mais informações, consulte [Detalhes avançados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Como exigir o uso do IMDSv2 em uma nova instância**  
O exemplo de [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) a seguir executa uma instância `c6i.large` com `--metadata-options` definido como `HttpTokens=required`. Quando você especifica um valor para `HttpTokens`, você também deve definir `HttpEndpoint` como `enabled`. Como o cabeçalho de token seguro é definido como `required` para solicitações de recuperação de metadados, é necessário que a instância use o IMDSv2 ao solicitar metadados da instância.

Em um ambiente de contêiner, quando o IMDSv2 for necessário, recomendamos definir o limite de saltos como `2` com `HttpPutResponseHopLimit=2`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
	...
    --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
```

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

**Como exigir o uso do IMDSv2 em uma nova instância**  
O exemplo de cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) a seguir inicia uma instância `c6i.large` com `MetadataOptions_HttpEndpoint` definido como `enabled` e o parâmetro `MetadataOptions_HttpTokens` como `required`. Quando você especifica um valor para `HttpTokens`, você também deve definir `HttpEndpoint` como `enabled`. Como o cabeçalho de token seguro é definido como `required` para solicitações de recuperação de metadados, é necessário que a instância use o IMDSv2 ao solicitar metadados da instância.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpTokens required
```

------
#### [ CloudFormation ]

Para especificar as opções de metadados de uma instância usando CloudFormation, consulte a propriedade [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) no *Guia do usuário do AWS CloudFormation*.

------

### Configurar a AMI


Ao registrar uma nova AMI ou modificar uma AMI existente, é possível definir o parâmetro `imds-support` como `v2.0`. As instâncias iniciadas a partir dessa AMI terão **Metadata version** (Versão de metadados) definido como **V2 only (token required)** (Apenas V2 [token obrigatório]) (console) ou `HttpTokens` definido como `required` (AWS CLI). Com essas configurações, a instância exige que o IMDSv2 seja usado ao solicitar metadados da instância.

Observe que quando você configura `imds-support` como `v2.0`, as instâncias iniciadas a partir dessa AMI também têm **Metadata response hop limit** (Limite de saltos na resposta de metadados) (console) ou `http-put-response-hop-limit` (AWS CLI) definido como **2**.

**Importante**  
Não use esse parâmetro, a menos que seu software AMI ofereça suporte ao IMDSv2. Após definir o valor como `v2.0`, você não poderá desfazer essa ação. A única maneira de “redefinir” sua AMI é criando uma nova AMI a partir do snapshot subjacente.

**Para configurar uma nova AMI para o IMDSv2**  
Use um dos métodos a seguir para configurar uma nova AMI para o IMDSv2.

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

O exemplo de [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) a seguir registra uma AMI usando o snapshot especificado de um volume raiz do EBS como `/dev/xvda` de dispositivo. Especifique `v2.0` para o parâmetro `imds-support`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

```
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \
    --architecture x86_64 \
    --imds-support v2.0
```

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

O exemplo de cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) a seguir registra uma AMI usando o snapshot especificado de um volume raiz do EBS como dispositivo `/dev/xvda`. Especifique `v2.0` para o parâmetro `ImdsSupport`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

```
Register-EC2Image `
    -Name 'my-image' `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping  ( 
    New-Object `
        -TypeName Amazon.EC2.Model.BlockDeviceMapping `
        -Property @{ 
        DeviceName = '/dev/xvda'; 
        EBS        = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ 
                SnapshotId = 'snap-0123456789example'
                VolumeType = 'gp3' 
                } )      
        }  ) `
    -Architecture X86_64 `
    -ImdsSupport v2.0
```

------

**Para configurar uma AMI existente para o IMDSv2**  
Use um dos métodos a seguir para configurar uma AMI para IMDSv2 existente.

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

O exemplo de [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) a seguir modifica uma AMI existente para IMDSv2 somente. Especifique `v2.0` para o parâmetro `imds-support`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --imds-support v2.0
```

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

O exemplo de cmdlet [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) a seguir só modifica uma AMI existente para IMDSv2. Especifique `v2.0` para o parâmetro `imds-support`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -ImdsSupport 'v2.0'
```

------

### Usar uma política do IAM


Você pode criar uma política do IAM que faça o seguinte:
+ Impeça que os usuários iniciem novas instâncias, a menos que exijam o IMDSv2 na nova instância.
+ Impeça que os usuários chamem a API ModifyInstanceMetadataOptions para alterar as opções de metadados de uma instância em execução. Restrinja o acesso à propriedade ModifyInstanceMetadataOptions httpTokens para evitar atualizações não intencionais das instâncias em execução.
+ Impeça que os usuários chamem a API ModifyInstanceMetadataDefaults para alterar as configurações padrão da conta de httpTokens e httpTokensEnforced. Restringir o acesso a essas duas propriedades garantirá que somente perfis autorizados possam modificar os padrões da conta.

**Para impor o uso do IMDSv2 em todas as novas instâncias usando uma política do IAM**  
Para garantir que os usuários possam executar apenas instâncias que requeiram o uso do IMDSv2 ao solicitar metadados da instância, faça o seguinte:
+ Restrinja o acesso à API `ModifyInstanceMetadataOptions` e `ModifyInstanceMetadataDefaults` e mais especificamente às propriedades `httpTokens` e `httpTokensEnforced`.
+ Em seguida, defina o padrão da conta como `httpTokens = required` e `httpTokensEnforced = enabled`.

  Para ver um exemplo de política do IAM, consulte [Trabalhar com metadados de instância](ExamplePolicies_EC2.md#iam-example-instance-metadata).

## Habilitar os endpoints IPv4 e IPv6 do IMDS


O IMDS tem dois endpoints em uma instância: IPv4 (`169.254.169.254`) e IPv6 (`[fd00:ec2::254]`). Quando você habilita o IMDS, o endpoint IPv4 é habilitado automaticamente. O endpoint IPv6 permanece desabilitado mesmo que você inicie uma instância em uma sub-rede IPv6 apenas. Para habilitar o endpoint IPv6, você precisa fazer isso explicitamente. Quando você habilita o endpoint IPv6, o endpoint IPv4 permanece habilitado.

É possível habilitar o endpoint iPv6 ao iniciar a instância ou posteriormente.

**Requisitos para habilitação do endpoint iPv6**
+ O tipo de instância selecionado é uma [instância baseada em Nitro](instance-types.md#instance-hypervisor-type).
+ A sub-rede selecionada é compatível com IPv6, no qual a sub-rede é de [pilha dupla ou IPv6 apenas](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range).

Use um dos métodos a seguir para iniciar uma instância com o endpoint IPv6 do IMDS habilitado.

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

**Para habilitar o endpoint IPv6 do IMDS na inicialização de instância**
+ [Inicie a instância](ec2-launch-instance-wizard.md) no console do Amazon EC2 com o valor a seguir especificado em **Advanced details** (Detalhes avançados):
  + Para o **endpoint IPv6 de metadados**, escolha **Habilitado**.

Para obter mais informações, consulte [Detalhes avançados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Para habilitar o endpoint IPv6 do IMDS na inicialização de instância**  
O exemplo de [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) a seguir inicia uma instância `c6i.large` com o endpoint IPv6 habilitado para o IMDS. Para habilitar o endpoint IPv6, no parâmetro `--metadata-options`, especifique `HttpProtocolIpv6=enabled`. Quando você especifica um valor para `HttpProtocolIpv6`, você também deve definir `HttpEndpoint` como `enabled`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ...
    --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
```

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

**Para habilitar o endpoint IPv6 do IMDS na inicialização de instância**  
O exemplo de cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) a seguir inicia uma instância `c6i.large` com o endpoint IPv6 habilitado para IMDS. Para habilitar o endpoint IPv6, especifique `MetadataOptions_HttpProtocolIpv6` como `enabled`. Quando você especifica um valor para `MetadataOptions_HttpProtocolIpv6`, você também deve definir `MetadataOptions_HttpEndpoint` como `enabled`.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpProtocolIpv6 enabled
```

------

## Desativar o acesso aos metadados da instância


É possível desativar o acesso aos metadados da instância desativando o IMDS ao executar uma instância. É possível ativar o acesso mais tarde reativando o IMDS. Para obter mais informações, consulte [Ativar o acesso aos metadados da instância](configuring-IMDS-existing-instances.md#enable-instance-metadata-on-existing-instances).

**Importante**  
É possível desativar o IMDS na execução ou após a execução. Se você desativar o IMDS *na execução*, os seguintes problemas poderão ocorrer:  
Talvez você não tenha acesso SSH à sua instância. A `public-keys/0/openssh-key`, que é a chave SSH pública da sua instância, não estará acessível porque a chave normalmente é fornecida e acessada nos metadados da instância do EC2.
Os dados do usuário do EC2 não estarão disponíveis e não serão executados no início da instância. Os dados do usuário do EC2 são hospedados no IMDS. Caso desative o IMDS, você desativará efetivamente o acesso aos dados do usuário.
Para acessar essa funcionalidade, você pode reativar o IMDS após a execução.

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

**Desativar o acesso aos metadados da instância na execução**
+ [Inicie a instância](ec2-launch-instance-wizard.md) no console do Amazon EC2 com o valor a seguir especificado em **Advanced details** (Detalhes avançados):
  + Para **Metadata acessible** (Metadados acessíveis), escolha **Disabled** (Desabilitado).

Para obter mais informações, consulte [Detalhes avançados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Desativar o acesso aos metadados da instância na execução**  
Inicie a instância com `--metadata-options` definido como `HttpEndpoint=disabled`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ... 
    --metadata-options "HttpEndpoint=disabled"
```

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

**Desativar o acesso aos metadados da instância na execução**  
O exemplo de cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) a seguir inicia uma instância `MetadataOptions_HttpEndpoint` definida como `disabled`.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint disabled
```

------
#### [ CloudFormation ]

Para especificar as opções de metadados de uma instância usando CloudFormation, consulte a propriedade [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) no *Guia do usuário do CloudFormation*. 

------

## Permitir acesso a tags em metadados de instância


Por padrão, as tags de instância não podem ser acessadas nos metadados da instância. Para cada instância, permita o acesso explicitamente. Se o acesso for permitido, as *chaves* de tag da instância devem estar em conformidade com restrições de caracteres específicas, caso contrário, a execução da instância falhará. Para obter mais informações, consulte [Habilitar o acesso a tags em metadados da instância](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).