기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
저장 중 암호화
중요
를 사용한 이중 계층 서버 측 암호화 AWS KMS (DSSE-KMS)는 AWS GovCloud (US) 리전에서만 사용할 수 있습니다.
Amazon ECR는 Amazon ECR가 관리하는 Amazon S3 버킷에 이미지를 저장합니다. 기본적으로 Amazon ECR는 Amazon S3-managed 암호화를 사용하며, 이는 AES-256 암호화 알고리즘을 사용하여 저장 데이터를 암호화합니다. 이 작업에 대한 조치는 필요하지 않으며 추가 비용 없이 제공됩니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 Amazon S3-Managed형 암호화 키(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 KMS 리포지토리를 권한 부여자 보안 주체로 사용하여 ECR 키에 AWS KMS 권한을 추가합니다.
다음은 Amazon ECR가 리포지토리를 암호화하고 해독 AWS KMS 하기 위해와 통합되는 방법에 대한 높은 수준의 이해를 제공합니다.
-
리포지토리를 생성할 때 Amazon ECR는에 DescribeKey 호출을 전송 AWS KMS 하여 암호화 구성에 지정된 KMS 키의 Amazon 리소스 이름(ARN)을 검증하고 검색합니다.
-
Amazon ECR는 AWS KMS 에 두 개의 CreateGrant 요청을 보내 KMS가 데이터 키를 사용하여 데이터를 암호화하고 복호화할 수 있도록 ECR 키에 권한을 생성합니다.
-
이미지를 푸시할 때 이미지 계층 및 매니페스트를 암호화하는 데 사용할 KMS 키를 AWS KMS 지정하는 GenerateDataKey 요청이에 생성됩니다.
-
AWS KMS 는 새 데이터 키를 생성하고 지정된 KMS 키로 암호화한 다음 이미지 계층 메타데이터 및 이미지 매니페스트와 함께 저장할 암호화된 데이터 키를 전송합니다.
-
이미지를 가져올 때 암호화된 데이터 키를 AWS KMS지정하여 복호화 요청이 수행됩니다.
-
AWS KMS 는 암호화된 데이터 키를 복호화하고 복호화된 데이터 키를 Amazon S3로 전송합니다.
-
데이터 키는 이미지 레이어를 가져오기 전에 이미지 레이어를 복호화하는 데 사용됩니다.
-
리포지토리가 삭제되면 Amazon ECR는 로 2개의 RetireGrant 요청을 보내 리포지토리 AWS KMS 에 대해 생성된 권한 부여를 사용 중지합니다.
고려 사항
AWS KMS 기반 암호화(SSE-KMS or DSSE-KMS)를 Amazon ECR와 함께 사용합니다.
-
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 권한
를 사용하여 서버 측 암호화를 사용하여 Amazon ECR 리포지토리 AWS KMS를 생성하거나 삭제할 때 필요한 권한은 사용 중인 특정 KMS 키에 따라 달라집니다.
AWS 관리형 키 for Amazon IAM 사용 시 필요한 ECR 권한
기본적으로 Amazon ECR 리포지토리에 AWS KMS 암호화가 활성화되었지만 KMS 키가 지정되지 않은 경우 Amazon ECR AWS 관리형 키 용가 사용됩니다. Amazon KMS용 AWS관리형 Word 키를 ECR 사용하여 리포지토리를 암호화하는 경우 리포지토리를 생성할 권한이 있는 모든 보안 주체도 리포지토리에서 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 KMS에서 시작된 요청에만 ECR 키를 사용하도록 허용하려면 ecr.
값과 함께 kms:ViaService 조건 키를 사용할 수 있습니다.<region>
.amazonaws.com
다음 예제 키 정책은 KMS 키를 소유한 AWS 계정(루트 사용자)에 Word 키에 대한 전체 액세스 권한을 부여합니다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:CreateGrant
kms:RetireGrant
, 및 권한이 있어야 합니다.
참고
리포지토리를 생성하는 사용자 또는 역할의 IAM 정책에 kms:RetireGrant
권한을 추가해야 합니다. kms:CreateGrant
및 kms: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": "*" } }
와의 Amazon ECR 상호 작용 모니터링 AWS KMS
AWS CloudTrail 를 사용하여 Amazon ECR가 사용자를 대신하여 보내는 요청을 추적할 수 AWS KMS 있습니다. CloudTrail 로그의 로그 항목에는 암호화 컨텍스트 키가 포함되어 있어 더 쉽게 식별할 수 있습니다.
Amazon ECR 암호화 컨텍스트
암호화 컨텍스트는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면 AWS KMS 암호화 컨텍스트가 암호화된 데이터에 암호화 컨텍스트를 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.
GenerateDataKey 및 복호화 요청에서 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 권한 부여를 수동으로 사용 중지하려면
-
리포지토리에 사용되는 AWS KMS 키에 대한 권한 부여를 나열합니다. 이
key-id
값은 콘솔에서 받은 오류에 포함됩니다.list-keys
명령을 사용하여 계정의 특정 리전에 AWS 관리형 키 있는 및 고객 관리KMS 키를 모두 나열할 수도 있습니다.aws kms list-grants \ --key-id
b8d9ae76-080c-4043-9237-c815bfc21dfc
--regionus-west-2
출력에는 리포지토리의 Amazon 리소스 이름(ARN)이
EncryptionContextSubset
있는이 포함됩니다. 이는 키에 추가된 부여 권한 중 사용을 중지시키려는 권한을 결정하는 데 사용할 수 있습니다. 이GrantId
값은 다음 단계에서 부여 권한를 중지할 때 사용됩니다. -
리포지토리에 추가된 AWS KMS 키에 대한 각 권한 부여를 사용 중지합니다. 의 값 바꾸기
GrantId
이전 단계의 출력에서 얻은 권한 부여의 ID를 사용합니다.aws kms retire-grant \ --key-id
b8d9ae76-080c-4043-9237-c815bfc21dfc
\ --grant-idGrantId
\ --regionus-west-2