

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

**Importante**  
 Dual-layer a criptografia do lado do servidor com AWS KMS (DSSE-KMS) só está disponível nas regiões. AWS GovCloud (US) 

O Amazon ECR armazena imagens em buckets do Amazon S3 gerenciados pelo Amazon ECR. Por padrão, o Amazon ECR usa criptografia do lado do servidor com chaves de criptografia da Amazon, que criptografam seus dados em repouso S3-managed usando um algoritmo de criptografia. AES-256 Isso não requer nenhuma ação da sua parte e é oferecido sem custo adicional. Para obter mais informações, consulte [Proteção de dados usando Server-Side criptografia com chaves de S3-Managed criptografia da Amazon (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

Para obter mais controle sobre a criptografia dos seus repositórios Amazon ECR, você pode usar a criptografia do lado do servidor com chaves KMS armazenadas em (). AWS Key Management Service AWS KMS Ao usar AWS KMS para criptografar seus dados, você pode usar o padrão Chave gerenciada pela AWS, que é gerenciado pelo Amazon ECR, ou especificar sua própria chave KMS (chamada de chave gerenciada pelo cliente). Para obter mais informações, consulte [Proteção de dados usando Server-Side criptografia com chaves KMS armazenadas em AWS KMS (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

 Você pode optar por aplicar duas camadas de criptografia às suas imagens do Amazon ECR usando criptografia de duas camadas no lado do servidor com (). AWS KMS DSSE-KMS DSSE-KMSA opção é semelhante aSSE-KMS, mas aplica duas camadas individuais de criptografia em vez de uma camada. Para obter mais informações, consulte [Usando criptografia de camada dupla no lado do servidor com](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingDSSEncryption.html) chaves (). AWS KMS DSSE-KMS

Cada repositório do Amazon ECR tem uma configuração de criptografia, que é definida quando o repositório é criado. Você pode usar configurações de criptografia diferentes em cada repositório. Para obter mais informações, consulte [Criar um repositório privado do Amazon ECR para armazenar imagens](repository-create.md).

Quando um repositório é criado com a AWS KMS criptografia ativada, uma chave KMS é usada para criptografar o conteúdo do repositório. Além disso, o Amazon ECR adiciona uma AWS KMS concessão à chave KMS com o repositório Amazon ECR como principal beneficiário.

A próxima seção fornece uma compreensão de alto nível de como o Amazon ECR é integrado com o AWS KMS para criptografar e descriptografar seus repositórios:

1. Ao criar um repositório, o Amazon ECR envia uma [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)chamada para AWS KMS validar e recuperar o Amazon Resource Name (ARN) da chave KMS especificada na configuração de criptografia.

1. O Amazon ECR envia duas [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)solicitações AWS KMS para criar concessões na chave KMS para permitir que o Amazon ECR criptografe e descriptografe dados usando a chave de dados.

1. Ao enviar uma imagem, é feita uma [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)solicitação AWS KMS que especifica a chave KMS a ser usada para criptografar a camada e o manifesto da imagem.

1. AWS KMS gera uma nova chave de dados, a criptografa sob a chave KMS especificada e envia a chave de dados criptografada para ser armazenada com os metadados da camada de imagem e o manifesto da imagem.

1. Ao extrair uma imagem, é feita uma solicitação de [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) AWS KMS, especificando a chave de dados criptografada.

1. AWS KMS descriptografa a chave de dados criptografada e envia a chave de dados descriptografada para o Amazon S3.

1. A chave de dados é usada para descriptografar a camada de imagem antes que a camada de imagem seja extraída.

1. Quando um repositório é excluído, o Amazon ECR envia duas [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)solicitações AWS KMS para retirar as concessões criadas para o repositório.

## Considerações
<a name="encryption-at-rest-considerations"></a>

Os seguintes pontos devem ser considerados ao usar criptografia AWS KMS baseada (SSE-KMSouDSSE-KMS) com o Amazon ECR.
+ Se você criar seu repositório Amazon ECR com criptografia KMS e não especificar uma chave KMS, o Amazon ECR usa um Chave gerenciada pela AWS com o alias por padrão. `aws/ecr` Essa chave KMS é criada em sua conta na primeira vez que você cria um repositório com criptografia KMS habilitada.
+  Não é possível alterar a configuração da criptografia do repositório após a sua criação. 
+ Quando você usa a criptografia KMS com sua própria chave KMS, a chave deve existir na mesma região que seu repositório.
+ As concessões que o Amazon ECR cria em seu nome não devem ser revogadas. Se você revogar a concessão que dá permissão ao Amazon ECR para usar as AWS KMS chaves em sua conta, o Amazon ECR não poderá acessar esses dados, criptografar novas imagens enviadas ao repositório ou descriptografá-las quando forem retiradas. Quando você revoga uma concessão do Amazon ECR, a alteração ocorre imediatamente. Para revogar direitos de acesso, você deve excluir o repositório em vez de revogar a concessão. Quando um repositório é excluído, o Amazon ECR retira as concessões em seu nome.
+ Há um custo associado ao uso de AWS KMS chaves. Para obter mais informações, consulte [Preços do AWS Key Management Service](https://aws.amazon.com/kms/pricing/).
+ Há um custo associado ao uso da criptografia de camada dupla do servidor. Para obter mais informações, consulte a [Definição de preço do Amazon ECR](https://aws.amazon.com/ecr/pricing/)

## Permissões obrigatórias do IAM
<a name="encryption-at-rest-iam"></a>

Ao criar ou excluir um repositório do Amazon ECR com criptografia no lado do servidor usando o AWS KMS, as permissões necessárias dependem da chave KMS específica que você está usando. 

### Permissões do IAM necessárias ao usar o Chave gerenciada pela AWS for Amazon ECR
<a name="encryption-aws-managed-key"></a>

Por padrão, quando a AWS KMS criptografia está habilitada para um repositório Amazon ECR, mas nenhuma chave KMS é especificada, a para Chave gerenciada pela AWS Amazon ECR é usada. Quando a chave KMS AWS gerenciada do Amazon ECR é usada para criptografar um repositório, qualquer diretor que tenha permissão para criar um repositório também pode ativar a criptografia no repositório. AWS KMS No entanto, o principal do IAM que exclui o repositório deve ter a permissão `kms:RetireGrant`. Isso permite a retirada das concessões que foram adicionadas à AWS KMS chave quando o repositório foi criado.

O exemplo a seguir da política do IAM pode ser adicionado como uma política em linha a um usuário para garantir que ele tenha as permissões mínimas necessárias para excluir um repositório que tenha a criptografia habilitada. A chave do KMS usada para criptografar o repositório pode ser especificada usando o parâmetro do recurso.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ecr-kms-permissions",
    "Statement": [
        {
            "Sid": "AllowAccessToRetireTheGrantsAssociatedWithTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:RetireGrant"
            ],
            "Resource": "arn:aws:kms:{{us-west-2}}:{{111122223333}}:key/{{b8d9ae76-080c-4043-92EXAMPLE}}"
        }
    ]
}
```

------

### Permissões do IAM obrigatórias ao usar uma chave gerenciada pelo cliente
<a name="encryption-customer-managed-key"></a>

Ao criar um repositório com AWS KMS criptografia habilitada usando uma chave gerenciada pelo cliente, há permissões necessárias tanto para a política de chaves do KMS quanto para a política do IAM para o usuário ou função que está criando o repositório.

Ao criar sua própria chave KMS, você pode usar a política de chave padrão que o AWS KMS cria ou pode especificar o seu próprio valor. Para garantir que a chave gerenciada pelo cliente permaneça gerenciável pelo proprietário da conta, a política de chaves da chave KMS deve permitir todas as AWS KMS ações para o usuário raiz da conta. Permissões de escopo adicionais podem ser adicionadas à política de chave, mas pelo menos o usuário-raiz deve receber permissões para gerenciar a chave KMS. Para permitir que a chave KMS seja usada somente para solicitações originadas no Amazon ECR, você pode usar a [chave de ViaService condição kms:](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) com o valor. `ecr.{{<region>}}.amazonaws.com`

O exemplo de política de chaves a seguir dá à AWS conta (usuário raiz) que possui a chave KMS acesso total à chave KMS. Para obter mais informações sobre esse exemplo de política de chaves, consulte [Permite acesso à AWS conta e ativa políticas do IAM](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) no *Guia do AWS Key Management Service desenvolvedor*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ecr-key-policy",
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

------

O usuário do IAM, a função do IAM ou a AWS conta que está criando seus repositórios devem ter a `kms:DescribeKey` permissão `kms:CreateGrant``kms:RetireGrant`, e, além das permissões necessárias do Amazon ECR.

**nota**  
A permissão `kms:RetireGrant` deve ser adicionada à política do IAM do usuário ou função que cria o repositório. As permissões `kms:CreateGrant` e `kms:DescribeKey` podem ser adicionadas à política de chave para a chave KMS ou à política do IAM de usuário ou função que cria o repositório. Para obter mais informações sobre como AWS KMS as permissões funcionam, consulte [Permissões de AWS KMS API: referência de ações e recursos](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) no *Guia do AWS Key Management Service desenvolvedor*.

O exemplo a seguir de política do IAM pode ser adicionado como uma política em linha a um usuário para garantir que ele tenha as permissões mínimas necessárias para criar um repositório com criptografia habilitada e excluir o repositório quando não precisar mais dele. A AWS KMS key usada para criptografar o repositório pode ser especificada usando o parâmetro do recurso.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ecr-kms-permissions",
    "Statement": [
        {
            "Sid": "AllowAccessToCreateAndRetireTheGrantsAssociatedWithTheKeyAsWellAsDescribeTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:RetireGrant",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:{{us-west-2}}:{{111122223333}}:key/{{b8d9ae76-080c-4043-92EXAMPLE}}"
        }
    ]
}
```

------

### Permitir que um usuário liste chaves KMS no console ao criar um repositório
<a name="encryption-at-rest-iam-example"></a>

Ao usar o console do Amazon ECR para criar um repositório, você pode conceder permissões para que um usuário liste as chaves KMS gerenciadas pelo cliente na região quando habilitar a criptografia para o repositório. O exemplo de política do IAM a seguir mostra as permissões necessárias para listar suas chaves e aliases do KMS ao usar o console.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases",
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
}
```

------

## Monitorando a interação do Amazon ECR com AWS KMS
<a name="encryption-at-rest-monitoring"></a>

Você pode usar AWS CloudTrail para rastrear as solicitações que o Amazon ECR envia AWS KMS em seu nome. As entradas de registro no CloudTrail registro contêm uma chave de contexto de criptografia para torná-las mais facilmente identificáveis.

### Contexto de criptografia do Amazon ECR
<a name="ecr-encryption-context"></a>

Um *contexto de criptografia* é um conjunto de pares de chave/valor que contém dados arbitrários não secretos. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, vincula AWS KMS criptograficamente o contexto de criptografia aos dados criptografados. Para descriptografar os dados, é necessário passar o mesmo contexto de criptografia. 

Em suas solicitações [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)e [Decrypt para](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), o AWS KMS Amazon ECR usa um contexto de criptografia com dois pares de nome e valor que identificam o repositório e o bucket do Amazon S3 que estão sendo usados. Isso é mostrado no exemplo a seguir. Os nomes não variam, mas os valores de contexto de criptografia combinados serão diferentes para cada valor.

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::{{us-west-2}}-starport-manifest-bucket/{{EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1}}/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df",
    "aws:ecr:arn": "arn:aws:ecr:{{us-west-2}}:{{111122223333}}:repository/{{repository-name}}"
}
```

Você pode usar o contexto de criptografia para identificar essas operações criptográficas em registros e registros de auditoria, como [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)Amazon CloudWatch Logs, e como condição para autorização em políticas e concessões.

O contexto de criptografia do Amazon ECR consiste em dois pares de nome e valor.
+ **aws:s3:arn** – O par de nome e valor identifica o bucket. A chave é `aws:s3:arn`. O valor de nome do recurso da Amazon (ARN) do bucket do Amazon S3

  ```
  "aws:s3:arn": "{{ARN of an Amazon S3 bucket}}"
  ```

  Por exemplo, se o ARN de um bucket fosse `arn:aws:s3:::{{us-west-2}}-starport-manifest-bucket/{{EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1}}/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df`, o contexto de criptografia incluiria o seguinte par.

  ```
  "arn:aws:s3:::{{us-west-2}}-starport-manifest-bucket/{{EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1}}/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df"
  ```
+ **aws:ecr:arn** – O segundo par de nome e valor identifica nome do recurso da Amazon (ARN) do repositório. A chave é `aws:ecr:arn`. O valor é o ARN do repositório.

  ```
  "aws:ecr:arn": "{{ARN of an Amazon ECR repository}}"
  ```

  Por exemplo, se o ARN do repositório fosse `arn:aws:ecr:{{us-west-2}}:{{111122223333}}:repository/{{repository-name}}`, o contexto de criptografia incluiria o seguinte par.

  ```
  "aws:ecr:arn": "arn:aws:ecr:{{us-west-2}}:{{111122223333}}:repository/{{repository-name}}"
  ```

## Solução de problemas
<a name="encryption-at-rest-troubleshooting"></a>

Ao excluir um repositório do Amazon ECR com o console, se o repositório for excluído com sucesso, mas o Amazon ECR não conseguir retirar as concessões adicionadas à sua chave KMS para seu repositório, você receberá o seguinte erro.

```
The repository {{[{repository-name}]}} has been deleted successfully but the grants created by the kmsKey {{[{kms_key}]}} failed to be retired
```

Quando isso ocorrer, você mesmo poderá retirar as AWS KMS concessões do repositório.

**Para retirar manualmente os AWS KMS subsídios de um repositório**

1. Liste as concessões para a AWS KMS chave usada no repositório. O valor `key-id` é incluído no erro que você recebe do console. Você também pode usar o `list-keys` comando para listar as chaves KMS gerenciadas pelo cliente Chaves gerenciadas pela AWS e as chaves do KMS em uma região específica da sua conta.

   ```
   aws kms list-grants \
        --key-id {{b8d9ae76-080c-4043-9237-c815bfc21dfc}} 
        --region {{us-west-2}}
   ```

   A saída inclui um `EncryptionContextSubset` com o nome do recurso da Amazon (ARN) do seu repositório. Isso pode ser usado para determinar qual é a concessão adicionada à chave que você deseja retirar. O valor `GrantId` será usado quando for retirada a concessão na próxima etapa.

1. Retire cada concessão da AWS KMS chave adicionada ao repositório. Substitua o valor de pelo {{GrantId}} ID da concessão da saída da etapa anterior.

   ```
   aws kms retire-grant \
        --key-id {{b8d9ae76-080c-4043-9237-c815bfc21dfc}} \
        --grant-id {{GrantId}} \
        --region {{us-west-2}}
   ```