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

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

저장된 데이터 암호화

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

Amazon ECR 리포지토리의 암호화를 더 잘 제어하려면 () 에 저장된 KMS 키를 사용한 서버 측 암호화를 사용할 수 있습니다. AWS Key Management Service AWS KMS를 사용하여 데이터를 AWS KMS 암호화하는 경우 Amazon ECR에서 관리하는 기본값을 AWS 관리형 키사용하거나 자체 KMS 키 (고객 관리 키라고 함) 를 지정할 수 있습니다. 자세한 내용은 Amazon 심플 스토리지 서비스 사용 설명서의 KMS 키가 저장된 서버 측 암호화 AWS KMS (SSE-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은 Amazon ECR이 데이터 키를 AWS KMS 사용하여 데이터를 암호화하고 복호화할 수 있도록 KMS 키에 권한을 부여해 달라는 두 가지 CreateGrant요청을 보냅니다.

  3. 이미지를 푸시할 때 이미지 레이어 및 매니페스트를 AWS KMS 암호화하는 데 사용할 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 암호화를 사용할 때는 다음 사항을 고려해야 합니다.

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

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

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

  • 키 사용과 관련된 비용이 발생합니다. AWS KMS 자세한 내용은 AWS Key Management Service 요금을 참조하세요.

필수 IAM 권한

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

Amazon AWS 관리형 키 ECR용 을 사용할 때 필요한 IAM 권한

기본적으로 Amazon ECR 리포지토리에 AWS KMS 암호화가 활성화되어 있지만 KMS 키가 지정되지 않은 경우 AWS 관리형 키 Amazon ECR용 암호화가 사용됩니다. Amazon AWS ECR용 -managed 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 계정 액세스 허용 및 IAM 정책 활성화를 참조하십시오.AWS Key Management Service

{ "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 KMS API 권한: 작업 및 리소스 참조를 참조하십시오.AWS Key Management Service

다음의 예제 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 상호 작용 모니터링

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

Amazon ECR 암호화 컨텍스트

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

Amazon ECR은 해당 GenerateDataKey요청과 암호 해독 요청에서 리포지토리와 사용 중인 AWS KMS 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" }

암호화 컨텍스트를 사용하여 감사 기록 및 로그 (예: Amazon CloudWatch Logs) 에서 이러한 암호화 작업을 식별하고 정책 및 권한 부여의 승인 조건으로 사용할 수 있습니다. AWS CloudTrail

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 값은 콘솔에서 받은 오류에 포함됩니다. 또한 list-keys 명령을 사용하여 계정의 특정 지역에 있는 KMS AWS 관리형 키 키와 고객 관리 KMS 키를 모두 나열할 수 있습니다.

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

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

  2. 리포지토리에 추가된 AWS KMS 키에 대한 각 권한 부여를 폐기하십시오. 의 값을 이전 단계 출력의 권한 GrantIdID로 바꿉니다.

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