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
Importante
Criptografia de camada dupla do lado do servidor com ( AWS KMS DSSE-KMS) está disponível somente nas AWS GovCloud (US) regiões.
O Amazon ECR armazena imagens em buckets do Amazon S3 gerenciados pelo Amazon ECR. Por padrão, o Amazon ECR usa criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 que criptografa seus dados em repouso 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 criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) no Manual 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 criptografia do lado do servidor com chaves KMS armazenadas em AWS KMS (SSE-KMS) 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 do lado do servidor com ( AWS KMS DSSE-KMS). DSSE-KMS a opção é semelhante a SSE-KMS, mas aplica duas camadas individuais de criptografia em vez de uma camada. Para obter mais informações, consulte Usando criptografia de duas camadas no lado do servidor com AWS KMS chaves (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.
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:
-
Ao criar um repositório, o Amazon ECR envia uma DescribeKeychamada para AWS KMS validar e recuperar o Amazon Resource Name (ARN) da chave KMS especificada na configuração de criptografia.
-
O Amazon ECR envia duas CreateGrantsolicitaçõ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.
-
Ao enviar uma imagem, é feita uma GenerateDataKeysolicitação AWS KMS que especifica a chave KMS a ser usada para criptografar a camada e o manifesto da imagem.
-
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.
-
Ao extrair uma imagem, é feita uma solicitação de Decrypt AWS KMS, especificando a chave de dados criptografada.
-
AWS KMS descriptografa a chave de dados criptografada e envia a chave de dados descriptografada para o Amazon S3.
-
A chave de dados é usada para descriptografar a camada de imagem antes que a camada de imagem seja extraída.
-
Quando um repositório é excluído, o Amazon ECR envia duas RetireGrantsolicitações AWS KMS para retirar as concessões criadas para o repositório.
Considerações
Os seguintes pontos devem ser considerados ao usar a criptografia AWS KMS baseada (SSE-KMS or DSSE-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 Definição de preço do AWS Key Management Service
. -
Há um custo associado ao uso da criptografia de camada dupla do servidor. Para obter mais informações, consulte Preços do Amazon ECR
.
Permissões obrigatórias do IAM
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
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.
{ "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
Ao criar um repositório com AWS KMS criptografia habilitada usando uma chave gerenciada pelo cliente, há permissões necessárias para a política de chaves do KMS e 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: 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 no Guia do AWS Key Management Service desenvolvedor.
{ "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 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.
{ "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
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.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "kms:DescribeKey" ], "Resource": "*" } }
Monitoramento da interação do Amazon ECR com o AWS KMS
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
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, você deve passar o mesmo contexto de criptografia.
Em suas solicitações GenerateDataKeye Decrypt para, 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 CloudTrailAmazon 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:::
, o contexto de criptografia incluiria o seguinte par.us-west-2
-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1
/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df"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:
, o contexto de criptografia incluiria o seguinte par.us-west-2
:111122223333
:repository/repository-name
"aws:ecr:arn": "arn:aws:ecr:
us-west-2
:111122223333
:repository/repository-name
"
Solução de problemas
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
-
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 olist-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
--regionus-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 valorGrantId
será usado quando for retirada a concessão na próxima etapa. -
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-idGrantId
\ --regionus-west-2