Chiffrement au repos - Amazon ECR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chiffrement au repos

Important

Chiffrement double couche côté serveur avec ( AWS KMS DSSE-KMS) n'est disponible que dans les AWS GovCloud (US) régions.

Amazon ECR stocke les images dans des compartiments Amazon S3 gérés par Amazon ECR. Par défaut, Amazon ECR utilise le chiffrement côté serveur avec des clés de chiffrement gérées par Amazon S3, ce qui chiffre vos données au repos à l'aide d'un algorithme de chiffrement AES-256. Ceci ne nécessite aucune action de votre part et est fourni sans frais supplémentaires. Pour en savoir plus, consultez la section Protection des données à l'aide du chiffrement côté serveur avec des clés de chiffrement (SSE-S3) gérées par Amazon S3 dans le guide de l'utilisateur Amazon Simple Storage Service.

Pour mieux contrôler le chiffrement de vos référentiels Amazon ECR, vous pouvez utiliser le chiffrement côté serveur avec des clés KMS stockées dans (). AWS Key Management Service AWS KMS Lorsque vous chiffrez vos données, vous pouvez soit utiliser la clé par défaut Clé gérée par AWS, qui est gérée par Amazon ECR, soit spécifier votre propre clé KMS (appelée clé gérée par le client). AWS KMS Pour plus d'informations, consultez la section Protection des données à l'aide du chiffrement côté serveur avec des clés KMS stockées dans AWS KMS (SSE-KMS) dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Vous pouvez choisir d'appliquer deux couches de chiffrement à vos images Amazon ECR à l'aide d'un chiffrement double couche côté serveur avec ( AWS KMS DSSE-KMS). DSSE-KMS l'option est similaire à SSE-KMS, mais applique deux couches de chiffrement individuelles au lieu d'une seule couche. Pour plus d'informations, consultez la section Utilisation du chiffrement double couche côté serveur avec des AWS KMS clés (DSSE-KMS).

Chaque référentiel Amazon ECR dispose d'une configuration de chiffrement, qui est définie lors de la création du référentiel. Vous pouvez utiliser des configurations de chiffrement différentes dans chaque référentiel. Pour de plus amples informations, veuillez consulter Création d'un référentiel ECR privé Amazon pour stocker des images.

Lorsqu'un référentiel est créé avec AWS KMS le chiffrement activé, une clé KMS est utilisée pour chiffrer le contenu du référentiel. De plus, Amazon ECR ajoute une AWS KMS subvention à la clé KMS avec le référentiel Amazon ECR comme bénéficiaire principal.

Ce qui suit fournit des informations de haut niveau afin de comprendre la façon dont Amazon ECR est intégré à AWS KMS pour chiffrer et déchiffrer vos référentiels :

  1. Lors de la création d'un référentiel, Amazon ECR envoie un DescribeKeyappel AWS KMS pour valider et récupérer le nom de ressource Amazon (ARN) de la clé KMS spécifiée dans la configuration de chiffrement.

  2. Amazon ECR envoie deux CreateGrantdemandes pour créer des autorisations sur la clé KMS AWS KMS afin de permettre à Amazon ECR de chiffrer et de déchiffrer les données à l'aide de la clé de données.

  3. Lors du transfert d'une image, une GenerateDataKeydemande AWS KMS indiquant la clé KMS à utiliser pour chiffrer la couche d'image et le manifeste est envoyée.

  4. AWS KMS génère une nouvelle clé de données, la chiffre sous la clé KMS spécifiée et envoie la clé de données chiffrée à stocker avec les métadonnées de la couche d'image et le manifeste d'image.

  5. Lors de l'extraction d'une image, une demande de déchiffrement est envoyée à AWS KMS, spécifiant la clé de données cryptée.

  6. AWS KMS déchiffre la clé de données chiffrée et envoie la clé de données déchiffrée à Amazon S3.

  7. La clé de données est utilisée pour déchiffrer la couche d'image avant la couche d'image en cours d'extraction.

  8. Lorsqu'un référentiel est supprimé, Amazon ECR envoie deux RetireGrantdemandes AWS KMS pour annuler les subventions créées pour le référentiel.

Considérations

Les points suivants doivent être pris en compte lors de l'utilisation du chiffrement AWS KMS basé (SSE-KMS or DSSE-KMS) avec Amazon ECR.

  • Si vous créez votre référentiel Amazon ECR avec le chiffrement KMS et que vous ne spécifiez pas de clé KMS, Amazon ECR utilise un Clé gérée par AWS alias aws/ecr par défaut. Cette clé KMS sera créée dans votre compte la première fois que vous créerez un référentiel avec le chiffrement KMS activé.

  • La configuration du chiffrement du référentiel ne peut pas être modifiée après la création d'un référentiel.

  • Lorsque vous utilisez le chiffrement KMS avec votre propre clé KMS, la clé doit exister dans la même région que votre référentiel.

  • Les octrois créés par Amazon ECR en votre nom ne doivent pas être révoqués. Si vous révoquez l'autorisation qui autorise Amazon ECR à utiliser les AWS KMS clés de votre compte, Amazon ECR ne pourra pas accéder à ces données, chiffrer les nouvelles images envoyées au référentiel ou les déchiffrer lorsqu'elles sont extraites. Lorsque vous révoquez un octroi pour Amazon ECR, le changement est immédiat. Pour révoquer les droits d'accès, vous devez supprimez le référentiel plutôt que de révoquer l'octroi. Lorsqu'un référentiel est supprimé, Amazon ECR retire les octrois en votre nom.

  • L'utilisation des AWS KMS clés entraîne un coût. Pour en savoir plus, consultez Pricing AWS Key Management Service (Tarification).

  • L'utilisation du chiffrement double couche côté serveur entraîne un coût. Pour plus d'informations, consultez les tarifs Amazon ECR

Autorisations IAM requises

Lorsque vous créez ou supprimez un référentiel Amazon ECR avec un chiffrement côté serveur à l'aide de AWS KMS, les autorisations requises dépendent de la clé KMS spécifique que vous utilisez.

Autorisations IAM requises lors de l'utilisation du Clé gérée par AWS pour Amazon ECR

Par défaut, lorsque AWS KMS le chiffrement est activé pour un référentiel Amazon ECR mais qu'aucune clé KMS n'est spécifiée, la clé Clé gérée par AWS pour Amazon ECR est utilisée. Lorsque la clé KMS AWS gérée pour Amazon ECR est utilisée pour chiffrer un référentiel, tout principal autorisé à créer un référentiel peut également activer le AWS KMS chiffrement du référentiel. Toutefois, le principal IAM qui supprime le référentiel doit avoir l'autorisation kms:RetireGrant. Cela permet de retirer les subventions qui ont été ajoutées à la AWS KMS clé lors de la création du référentiel.

L'exemple de politique IAM suivant peut être ajouté en tant que politique intégrée à un utilisateur pour s'assurer qu'il dispose des autorisations minimales nécessaires pour supprimer un référentiel dont le chiffrement est activé. La clé KMS utilisée pour chiffrer le référentiel peut être spécifiée à l'aide du paramètre de ressource.

{ "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" } ] }

Autorisations IAM requises pour l'utilisation d'une clé gérée par le client

Lors de la création d'un référentiel dont le AWS KMS chiffrement est activé à l'aide d'une clé gérée par le client, des autorisations sont requises pour la politique de clés KMS et la politique IAM pour l'utilisateur ou le rôle qui crée le référentiel.

Lorsque vous créez votre propre clé KMS, vous pouvez utiliser la politique de clé AWS KMS par défaut créée ou vous pouvez spécifier la vôtre. Pour garantir que la clé gérée par le client reste gérable par le propriétaire du compte, la politique clé relative à la clé KMS doit autoriser toutes les AWS KMS actions pour l'utilisateur root du compte. Des autorisations étendues supplémentaires peuvent être ajoutées à la politique de clé, mais au minimum l'utilisateur racine doit être autorisé à gérer la clé KMS. Pour autoriser l'utilisation de la clé KMS uniquement pour les demandes provenant d'Amazon ECR, vous pouvez utiliser la clé de ViaService condition kms : avec la ecr.<region>.amazonaws.com valeur.

L'exemple de politique de clé suivant donne au AWS compte (utilisateur root) propriétaire de la clé KMS un accès complet à la clé KMS. Pour plus d'informations sur cet exemple de politique clé, voir Autoriser l'accès au AWS compte et activer les politiques IAM dans le Guide du AWS Key Management Service développeur.

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

L'utilisateur IAM, le rôle IAM ou le AWS compte qui crée vos référentiels doit disposer de l'kms:DescribeKeyautorisation kms:CreateGrantkms:RetireGrant, et en plus des autorisations Amazon ECR nécessaires.

Note

L'autorisation kms:RetireGrant doit être ajoutée à la politique IAM de l'utilisateur ou du rôle créant le référentiel. Les autorisations kms:CreateGrant et kms:DescribeKeypeuvent être ajoutées à la politique de clé pour la clé KMS ou à la politique IAM de l'utilisateur ou du rôle créant le référentiel. Pour plus d'informations sur le fonctionnement AWS KMS des autorisations, voir Autorisations d'AWS KMS API : référence aux actions et aux ressources dans le guide du AWS Key Management Service développeur.

L'exemple de politique IAM suivant peut être ajouté en tant que politique intégrée à un utilisateur pour s'assurer qu'il dispose des autorisations minimales nécessaires pour créer un référentiel avec le chiffrement activé et supprimer le référentiel lorsqu'il aura terminé. La AWS KMS key utilisée pour chiffrer le référentiel peut être spécifiée à l'aide du paramètre de ressource.

{ "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" } ] }

Autoriser un utilisateur à répertorier les clés KMS dans la console lors de la création d'un référentiel

Lorsque vous utilisez la console Amazon ECR pour créer un référentiel, vous pouvez octroyer des autorisations afin de permettre à un utilisateur de répertorier les clés KMS gérées par le client dans la région lors de l'activation du chiffrement pour le référentiel. L'exemple de politique IAM suivant indique les autorisations nécessaires pour répertorier vos clés KMS et alias lors de l'utilisation de la console.

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

Surveillance de l'interaction Amazon ECR avec AWS KMS

Vous pouvez l'utiliser AWS CloudTrail pour suivre les demandes qu'Amazon ECR envoie en votre AWS KMS nom. Les entrées du CloudTrail journal contiennent une clé contextuelle de chiffrement qui les rend plus facilement identifiables.

Contexte de chiffrement Amazon ECR

Un contexte de chiffrement est un ensemble de paires clé-valeur qui contiennent des données non secrètes arbitraires. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, lie AWS KMS cryptographiquement le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez transmettre le même contexte de chiffrement.

Dans ses requêtes GenerateDataKeyet Decrypt à AWS KMS, Amazon ECR utilise un contexte de chiffrement avec deux paires nom-valeur qui identifient le référentiel et le compartiment Amazon S3 utilisés. Voici un exemple : Les noms ne varient pas, mais les valeurs de contexte de chiffrement combinées sont différentes pour chaque valeur.

"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" }

Vous pouvez utiliser le contexte de chiffrement pour identifier ces opérations cryptographiques dans les enregistrements et journaux d'audit, tels que AWS CloudTrailAmazon CloudWatch Logs, et comme condition d'autorisation dans les politiques et les autorisations.

Le contexte de chiffrement Amazon ECR se compose de deux paires nom-valeur.

  • aws:s3:arn – La première paire nom-valeur identifie le compartiment. La clé est aws:s3:arn. La valeur est l'Amazon Resource Name (ARN) du compartiment Amazon S3.

    "aws:s3:arn": "ARN of an Amazon S3 bucket"

    Par exemple, si l'ARN du compartiment est arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df, le contexte de chiffrement devra inclure la paire suivante.

    "arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df"
  • aws:ecr:arn – La deuxième paire nom-valeur identifie l'Amazon Resource Name (ARN) du référentiel. La clé est aws:ecr:arn. La valeur est l'ARN du référentiel.

    "aws:ecr:arn": "ARN of an Amazon ECR repository"

    Par exemple, si l'ARN du référentiel est arn:aws:ecr:us-west-2:111122223333:repository/repository-name, le contexte de chiffrement devra inclure la paire suivante.

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

Résolution des problèmes

Lorsque vous supprimez un référentiel Amazon ECR avec la console, si le référentiel est supprimé correctement, mais qu'Amazon ECR ne parvient pas à retirer les octrois ajoutés à votre clé KMS pour votre référentiel, vous recevrez l'erreur suivante.

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

Dans ce cas, vous pouvez retirer vous-même les AWS KMS subventions pour le dépôt.

Pour annuler manuellement les AWS KMS subventions accordées à un dépôt
  1. Répertoriez les autorisations pour la AWS KMS clé utilisée pour le référentiel. La valeur key-id est incluse dans l'erreur que vous recevez de la console. Vous pouvez également utiliser la list-keys commande pour répertorier à la fois les clés KMS Clés gérées par AWS et les clés KMS gérées par le client dans une région spécifique de votre compte.

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

    La sortie inclut un EncryptionContextSubset avec l'Amazon Resource Name (ARN) de votre référentiel. Cela peut être utilisé pour déterminer quel octroi ajouté à la clé est celui que vous souhaitez retirer. La valeur GrantId sera utilisée lors de la suppression de l'octroi à l'étape suivante.

  2. Retirez chaque subvention pour la AWS KMS clé ajoutée au référentiel. Remplacez la valeur pour GrantId par l'ID de la subvention indiqué dans le résultat de l'étape précédente.

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