반응형
AWS Elastic Container Registry (ECR)에서 저장된 컨테이너 이미지의 암호화 방식은 AES-256 (기본 암호화) 또는 AWS KMS (사용자 지정 키 암호화) 중 선택할 수 있습니다.
기존에 AES-256 암호화를 사용하고 있다면, AWS KMS를 사용한 암호화로 변경 가능합니다. 하지만 직접적인 전환 옵션은 없으며, 새로운 리포지토리를 생성하여 KMS 암호화를 적용하고 이미지를 재배포하는 방식으로 진행해야 합니다.
✅ AES-256 → KMS 변경 방법
현재 AWS는 기존 ECR 리포지토리의 암호화 방식을 직접 변경하는 기능을 제공하지 않음. 따라서 기존 리포지토리에서 새로운 KMS 암호화가 적용된 리포지토리로 이미지를 이동해야 함.
🔹 1. 새로운 KMS 키 생성 (또는 기존 KMS 키 사용)
만약 기존에 사용 가능한 KMS 키가 없다면 새로운 KMS 키를 생성해야 합니다.
📌 AWS CLI로 KMS 키 생성
aws kms create-key --description "ECR KMS Key for Image Encryption"
✅ 실행 후, KMS 키의 KeyId를 확인해야 합니다.
KMS 키 목록 확인:
aws kms list-keys
✅ 예제 출력:
{
"Keys": [
{
"KeyId": "abcd1234-efgh-5678-ijkl-9012mnopqrst",
"Arn": "arn:aws:kms:ap-northeast-2:123456789012:key/abcd1234-efgh-5678-ijkl-9012mnopqrst"
}
]
}
👉 위에서 출력된 KMS Key ARN을 기억해둡니다.
🔹 2. 새로운 KMS 암호화가 적용된 ECR 리포지토리 생성
aws ecr create-repository \
--repository-name my-secure-repo \
--encryption-configuration encryptionType=KMS,kmsKey="arn:aws:kms:ap-northeast-2:123456789012:key/abcd1234-efgh-5678-ijkl-9012mnopqrst"
✅ 정상 생성 시 출력 예제:
{
"repository": {
"repositoryArn": "arn:aws:ecr:ap-northeast-2:123456789012:repository/my-secure-repo",
"repositoryName": "my-secure-repo",
"encryptionConfiguration": {
"encryptionType": "KMS",
"kmsKey": "arn:aws:kms:ap-northeast-2:123456789012:key/abcd1234-efgh-5678-ijkl-9012mnopqrst"
}
}
}
👉 이제 새로운 리포지토리가 KMS 암호화를 사용하도록 설정됨.
🔹 3. 기존 AES-256 암호화된 이미지 → KMS 리포지토리로 이동
📌 1) 기존 ECR에서 이미지 목록 확인
aws ecr list-images --repository-name my-old-repo
✅ 예제 출력:
{
"imageIds": [
{
"imageDigest": "sha256:1234abcd5678efgh9012ijklmnopqrstuvwx1234567890",
"imageTag": "latest"
}
]
}
📌 2) 기존 ECR(AES-256)에서 이미지 Pull
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com
docker pull 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/my-old-repo:latest
📌 3) 새로운 KMS 리포지토리에 Push
docker tag 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/my-old-repo:latest \
123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/my-secure-repo:latest
docker push 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/my-secure-repo:latest
✅ 이제 KMS 암호화된 ECR 리포지토리에 이미지가 업로드됨.
🔹 4. 기존 AES-256 ECR 삭제 (선택)
만약 기존 AES-256 암호화를 사용한 리포지토리를 삭제하고 싶다면:
aws ecr delete-repository --repository-name my-old-repo --force
✅ --force 옵션은 모든 이미지를 삭제한 후 리포지토리를 삭제하는 기능.
🚀 최종 정리
작업 단계설명
1. KMS 키 생성 | 새로운 KMS 키 생성 또는 기존 KMS 키 확인 (aws kms create-key) |
2. KMS 암호화된 ECR 생성 | aws ecr create-repository --encryption-configuration encryptionType=KMS,kmsKey=<KMS_ARN> |
3. 기존 ECR에서 이미지 가져오기 | docker pull 사용하여 기존 AES-256 ECR에서 다운로드 |
4. 새로운 KMS ECR로 업로드 | docker tag 후 docker push 실행 |
5. 기존 AES-256 ECR 삭제 (선택) | aws ecr delete-repository --force |
✅ 이제 ECR의 암호화 방식을 AES-256에서 KMS로 변경 완료! 🚀
반응형