

# 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}}"
        }
      }
    }
  ]
}
```