저장된 데이터 암호화 - Amazon ECR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

저장된 데이터 암호화

중요

AWS KMS (DSSE-KMS)를 사용한 이중 계층 서버 측 암호화는 AWS GovCloud (US) 리전에서만 사용할 수 있습니다.

Amazon ECR은 Amazon ECR이 관리하는 Amazon S3 버킷에 이미지를 저장합니다. 기본적으로 Amazon ECR은 Amazon S3 관리형 암호화 키를 사용하여 서버 측 암호화를 사용합니다. 이 암호화 키는 AES-256 암호화 알고리즘을 사용하여 유휴 데이터를 암호화합니다. 이 작업에 대한 조치는 필요하지 않으며 추가 비용 없이 제공됩니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3 관리형 암호화 키(SSE-S3)로 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

Amazon ECR 리포지토리의 암호화를 더 잘 제어하려면 AWS Key Management Service ()에 저장된 KMS 키와 함께 서버 측 암호화를 사용할 수 있습니다AWS KMS. 를 사용하여 AWS KMS 데이터를 암호화하는 경우 Amazon ECR에서 AWS 관리형 키관리하는 기본값을 사용하거나 자체 KMS 키(고객 관리형 키라고 함)를 지정할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 AWS KMS (SSE-KMS)에 저장된 KMS 키를 사용한 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

AWS KMS ()를 사용한 이중 계층 서버 측 암호화를 사용하여 Amazon ECR 이미지에 두 계층의 암호화를 적용하도록 선택할 수 있습니다DSSE-KMS. DSSE-KMS 옵션은와 유사SSE-KMS하지만 한 계층 대신 두 계층의 개별 암호화를 적용합니다. 자세한 내용은 AWS KMS 키를 사용한 이중 계층 서버 측 암호화 사용(DSSE-KMS)을 참조하세요.

각 Amazon ECR 리포지토리에는 리포지토리가 생성될 때 설정되는 암호화 구성이 있습니다. 각 리포지토리에 서로 다른 암호화 구성을 사용할 수 있습니다. 자세한 내용은 이미지를 저장할 Amazon ECR 프라이빗 리포지토리 생성 단원을 참조하십시오.

AWS KMS 암호화가 활성화된 리포지토리가 생성되면 KMS 키를 사용하여 리포지토리의 콘텐츠를 암호화합니다. 또한 Amazon ECR은 Amazon ECR 리포지토리를 피부여자 보안 주체로 사용하여 KMS 키에 AWS KMS 권한 부여를 추가합니다.

다음은 Amazon ECR이 AWS KMS 와 통합되어 리포지토리를 암호화 및 해독하는 방식의 높은 수준의 이해를 제공합니다.

  1. 리포지토리를 생성할 때 Amazon ECR은에 DescribeKey 호출을 전송 AWS KMS 하여 암호화 구성에 지정된 KMS 키의 Amazon 리소스 이름(ARN)을 검증하고 검색합니다.

  2. Amazon ECR은 AWS KMS 에 두 개의 CreateGrant 요청을 보내 KMS 키에 대한 권한 부여를 생성하여 Amazon ECR이 데이터 키를 사용하여 데이터를 암호화하고 복호화할 수 있도록 합니다.

  3. 이미지를 푸시할 때 이미지 계층 및 매니페스트를 암호화하는 데 사용할 KMS 키를 AWS KMS 지정하는 GenerateDataKey 요청이에 이루어집니다.

  4. AWS KMS 는 새 데이터 키를 생성하고 지정된 KMS 키로 암호화한 다음 이미지 계층 메타데이터 및 이미지 매니페스트와 함께 저장할 암호화된 데이터 키를 전송합니다.

  5. 이미지를 가져올 때 암호화된 데이터 키를 AWS KMS지정하여 복호화 요청이 수행됩니다.

  6. AWS KMS 는 암호화된 데이터 키를 복호화하고 복호화된 데이터 키를 Amazon S3로 전송합니다.

  7. 데이터 키는 이미지 레이어를 가져오기 전에 이미지 레이어를 복호화하는 데 사용됩니다.

  8. 리포지토리가 삭제되면 Amazon ECR은에 리포지토리에 대해 생성된 권한 부여를 사용 중지 AWS KMS 하라는 두 개의 RetireGrant 요청을 보냅니다.

고려 사항

Amazon ECR에서 AWS KMS 기반 암호화(SSE-KMS 또는 DSSE-KMS)를 사용할 때는 다음 사항을 고려해야 합니다.

  • KMS 암호화를 사용하여 Amazon ECR 리포지토리를 생성하고 KMS 키를 지정하지 않으면 Amazon ECR은 aws/ecr 기본적으로 별칭이 AWS 관리형 키 있는를 사용합니다. 이 KMS 키는 KMS 암호화가 활성화된 리포지토리를 처음 생성할 때 계정에 생성됩니다.

  • 리포지토리가 생성된 후에는 리포지토리 암호화 구성을 변경할 수 없습니다.

  • 고유의 KMS 키로 KMS 암호화를 사용하는 경우, 해당 키는 리포지토리와 동일한 리전에 있어야 합니다.

  • Amazon ECR이 사용자를 대신하여 생성하는 부여는 취소되지 않아야 합니다. 계정의 AWS KMS 키를 사용할 수 있는 권한을 Amazon ECR에 부여하는 권한을 취소하면 Amazon ECR은이 데이터에 액세스하거나, 리포지토리로 푸시된 새 이미지를 암호화하거나, 리포지토리를 가져올 때 복호화할 수 없습니다. Amazon ECR에 대한 권한 부여를 취소하면 변경 사항이 즉시 발생합니다. 액세스 권한을 취소하려면 권한 부여를 취소하는 대신 리포지토리를 삭제합니다. 리포지토리가 삭제되면 Amazon ECR은 사용자를 대신하여 부여 권한의 사용을 중지시킵니다.

  • AWS KMS 키 사용과 관련된 비용이 있습니다. 자세한 내용은 AWS Key Management Service 요금을 참조하십시오.

  • 이중 계층 서버 측 암호화 사용과 관련된 비용이 있습니다. 자세한 내용은 Amazon ECR 요금을 참조하세요.

필수 IAM 권한

AWS KMS를 사용하여 서버 측 암호화로 Amazon ECR 리포지토리를 생성하거나 삭제하는 경우, 필요한 사용 권한은 사용 중인 특정 KMS 키에 따라 다릅니다.

Amazon ECR AWS 관리형 키 용 사용 시 필요한 IAM 권한

기본적으로 Amazon ECR 리포지토리에 암호화 AWS KMS 가 활성화되어 있지만 KMS 키가 지정되지 않은 경우 Amazon ECR AWS 관리형 키 용가 사용됩니다. Amazon ECR용 AWS관리형 KMS 키를 사용하여 리포지토리를 암호화하는 경우 리포지토리를 생성할 권한이 있는 모든 보안 주체도 리포지토리에서 AWS KMS 암호화를 활성화할 수 있습니다. 그러나 리포지토리를 삭제하는 IAM 보안 주체는 kms:RetireGrant 권한이 있어야 합니다. 이렇게 하면 리포지토리가 생성될 때 AWS KMS 키에 추가된 권한 부여가 사용 중지됩니다.

다음의 예제 IAM 정책은 암호화가 활성화된 리포지토리를 삭제하는 데 필요한 최소 권한을 갖도록 사용자에게 인라인 정책으로 추가될 수 있습니다. 리포지토리를 암호화하는 데 사용되는 KMS 키는 리소스 파라미터를 사용하여 지정할 수 있습니다.

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

고객 관리형 키를 사용할 때 필요한 IAM 권한

고객 관리형 키를 사용하여 AWS KMS 암호화가 활성화된 리포지토리를 생성하는 경우 리포지토리를 생성하는 사용자 또는 역할에 대한 KMS 키 정책과 IAM 정책 모두에 필요한 권한이 있습니다.

고유한 KMS 키를 만들 때 AWS KMS 에서 생성하는 기본 키를 사용하거나 직접 지정할 수도 있습니다. 계정 소유자가 고객 관리형 키를 관리할 수 있도록 KMS 키의 키 정책은 계정의 루트 사용자에 대한 모든 AWS KMS 작업을 허용해야 합니다. 키 정책에 범위가 지정된 권한을 추가할 수 있지만 최소한 루트 사용자에게 KMS 키를 관리할 수 있는 권한이 부여되어야 합니다. Amazon ECR에서 발생한 요청에 대해서만 KMS 키를 사용할 수 있도록 하려면 kms:ViaService 조건 키ecr.<region>.amazonaws.com값과 함께 사용할 수 있습니다.

다음 예제 키 정책은 KMS 키를 소유한 AWS 계정(루트 사용자)에게 KMS 키에 대한 전체 액세스 권한을 부여합니다. 이 예제 키 정책에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS 계정에 대한 액세스 허용 및 IAM 정책 활성화를 참조하세요.

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

리포지토리를 생성하는 IAM 사용자, IAM 역할 또는 AWS 계정에는 필요한 Amazon ECR kms:DescribeKey 권한 외에도 kms:CreateGrantkms:RetireGrant, 및 권한이 있어야 합니다.

참고

kms:RetireGrant 권한은 리포지토리를 생성하는 사용자 또는 역할의 IAM 정책에 추가되어야 합니다. 이 kms:CreateGrantkms:DescribeKey 권한은 KMS 키의 키 정책이나 리포지토리를 생성하는 사용자 또는 역할의 IAM 정책에 추가할 수 있습니다. AWS KMS 권한 작동 방식에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS KMS API 권한: 작업 및 리소스 참조를 참조하세요.

다음의 예제 IAM 정책은 암호화가 활성화된 리포지토리를 생성하고 리포지토리가 완료되면 삭제하는 데 필요한 최소 권한을 갖도록 사용자에게 인라인 정책으로 추가할 수 있습니다. 리포지토리를 암호화하는 데 사용되는 AWS KMS key 는 리소스 파라미터를 사용하여 지정할 수 있습니다.

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

리포지토리를 생성할 때 사용자가 콘솔에서 KMS 키를 나열하도록 허용

Amazon ECR 콘솔을 사용하여 리포지토리를 생성할 때 리포지토리에 대한 암호화를 활성화할 때 사용자가 리포지토리에 암호화를 사용 시 리전에서 고객 관리형 KMS 키를 나열할 수 있는 권한을 부여할 수 있습니다. 다음 IAM 정책 예제는 콘솔을 사용할 때 KMS 키와 별칭을 나열하는 데 필요한 권한을 보여줍니다.

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

AWS KMS를 통한 Amazon ECR 상호 작용 모니터링

AWS CloudTrail 를 사용하여 Amazon ECR이 사용자를 대신하여에 보내는 요청을 추적할 수 AWS KMS 있습니다. CloudTrail 로그의 로그 항목에는 보다 쉽게 식별할 수 있도록 하는 암호화 컨텍스트 키가 포함되어 있습니다.

Amazon ECR 암호화 컨텍스트

암호화 컨텍스트는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면 암호화 컨텍스트가 암호화된 데이터에 AWS KMS 암호화 방식으로 바인딩됩니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

GenerateDataKeyDecrypt 요청에서 AWS KMS Amazon ECR은 사용 중인 리포지토리와 Amazon S3 버킷을 식별하는 두 개의 이름-값 페어가 있는 암호화 컨텍스트를 사용합니다. 방법은 다음 예제와 같습니다. 이름은 다르지 않지만 결합된 암호화 컨텍스트 값은 각 값마다 다릅니다.

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

암호화 컨텍스트를 사용하여 AWS CloudTrail 및 Amazon CloudWatch Logs와 같은 감사 레코드와 로그에서 그리고 정책 및 권한 부여의 조건으로서 이러한 암호화 작업을 식별할 수 있습니다.

Amazon ECR 암호화 컨텍스트는 두 개의 이름-값 페어로 구성됩니다.

  • aws:s3:arn— 첫 번째 이름-값 페어는 버킷을 식별합니다. 키는 aws:s3:arn입니다. 이 값은 Amazon S3 버킷의 Amazon 리소스 이름(ARN)입니다.

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

    예를 들어, 버킷의 ARN이 arn:aws:s3:::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— 두 번째 이름-값 페어는 리포지토리의 Amazon 리소스 이름(ARN)을 식별합니다. 키는 aws:ecr:arn입니다. 이 값은 리포지토리의 ARN입니다.

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

    예를 들어, 리포지토리의 ARN이 arn:aws:ecr:us-west-2:111122223333:repository/repository-name이면 암호화 컨텍스트는 다음 페어를 포함합니다.

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

문제 해결

콘솔로 Amazon ECR 리포지토리를 삭제할 때 리포지토리가 성공적으로 삭제되었지만 Amazon ECR이 리포지토리의 KMS 키에 추가된 부여 권한의 사용을 중지시킬 수 없는 경우 다음과 같은 오류가 발생합니다.

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

이 경우 리포지토리에 대한 AWS KMS 권한 부여를 직접 사용 중지할 수 있습니다.

리포지토리에 대한 AWS KMS 권한 부여를 수동으로 사용 중지하려면
  1. 리포지토리에 사용되는 AWS KMS 키에 대한 권한 부여를 나열합니다. 이 key-id 값은 콘솔에서 받은 오류에 포함됩니다. 명령을 사용하여 계정의 특정 리전에서 AWS 관리형 키 및 고객 관리형 KMS 키를 모두 나열list-keys할 수도 있습니다.

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

    출력에는 리포지토리의 Amazon 리소스 이름(ARN)과 EncryptionContextSubset가 포함됩니다. 이는 키에 추가된 부여 권한 중 사용을 중지시키려는 권한을 결정하는 데 사용할 수 있습니다. 이 GrantId 값은 다음 단계에서 부여 권한를 중지할 때 사용됩니다.

  2. 리포지토리에 추가된 AWS KMS 키에 대한 각 권한 부여를 사용 중지합니다. GrantId의 값을 이전 단계 출력에서의 부여 권한의 ID로 바꿉니다.

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