본문 바로가기

AWS

[AWS] ECR Managed Container Image Signing 구성 가이드

반응형

컨테이너 이미지를 운영 환경에 안전하게 배포하기 위해서는 이미지 자체에 대한 신뢰성 검증이 중요합니다. AWS에서는 2025년 11월에 Amazon ECR Managed Container Image Signing 기능을 지원하기 시작했습니다. 이 기능을 사용하면 개발자 혹은 CI/CD 파이프라인에서 이미지를 ECR에 푸시할 때, 자동으로 이미지 서명을 생성하여 공급망 보안(Supply Chain Security)을 강화할 수 있습니다.

Managed Container Image Signing 개요

Managed Signing은 다음과 같은 특성을 갖습니다.

  • ECR에 이미지가 푸시되면 자동 서명이 실행됩니다. 서명은 AWS Signer 기반으로 처리되어 사용자 키 관리 부담이 없습니다.
  • 서명 정책(Signing Rule)을 ECR 레지스트리에 설정하면, 규칙에 매칭되는 리포지토리에 푸시되는 모든 이미지에 대해 자동으로 서명이 생성됩니다.
  • 서명 이벤트는 CloudTrail에 기록되어 이후 감사 또는 컴플라이언스 분석에 활용할 수 있습니다.
  • 서명된 이미지는 배포 시 신뢰 검증에 활용할 수 있고, 변조된 이미지 배포를 방지할 수 있습니다.

Managed Signing은 AWS Signer가 지원되는 모든 리전에서 사용 가능합니다.

 

 

2. 구성 준비

2.1 Signer Signing Profile 생성

Managed Signing을 사용하기 위해서는 먼저 AWS Signer Signing Profile을 생성해야 합니다.
이 프로필은 실제 서명을 생성하는 기준이 되며, 서명 유효기간 등을 설정할 수 있습니다.

AWS CLI 예시

aws signer put-signing-profile \
  --profile-name ecr-managed-signing-profile \
  --platform-id Notation-OCI-SHA384-ECDSA \
  --signature-validity-period value=365,unit=DAYS

 

위 예시는 서명 유효기간을 365일로 설정한 경우입니다. 필요에 따라 유효기간을 확장하거나 변경할 수 있습니다.

 

3. ECR Managed Signing Rule 구성

Managed Signing을 적용하려면 Signing Rule을 생성해야 합니다. 이 규칙에서 어떤 리포지토리의 어떤 이미지가 서명 대상인지 정의합니다.

AWS 콘솔에서 설정

  1. AWS 콘솔 > ECR > Private registry
  2. Features & settings > Managed signing
  3. Create rule 클릭
  4. 서명 프로필(Signing Profile) 선택
  5. Repository filters에 서명 대상 리포지토리 입력(예: my-service*)
  6. 설정 완료 후 Save

위 과정을 통해 필터에 매칭되는 리포지토리에 푸시되는 이미지는 자동으로 서명됩니다

AWS CLI 예시

aws ecr create-signing-rule \
  --registry-id <ACCOUNT_ID> \
  --signing-profile-name ecr-managed-signing-profile \
  --repository-name-filters "my-service*" \
  --rule-name my-service-sign-rule

이 경우 my-service* 패턴에 매칭되는 리포지토리로 푸시된 이미지가 자동 서명됩니다.

4. 이미지 Push 및 서명 동작 확인

Managed Signing을 구성한 뒤에는 평소대로 이미지를 푸시하면 됩니다.

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.ap-northeast-2.amazonaws.com

docker build -t demo-app .
docker tag demo-app:latest <ACCOUNT_ID>.dkr.ecr.ap-northeast-2.amazonaws.com/my-service:latest

docker push <ACCOUNT_ID>.dkr.ecr.ap-northeast-2.amazonaws.com/my-service:latest

이후 ECR 콘솔에서 해당 이미지의 Signatures 탭을 확인하면 서명이 자동으로 생성된 것을 확인할 수 있습니다.

 

5. 서명 검증

Managed Signing을 통해 생성된 서명은 여러 방식으로 활용할 수 있습니다.
대표적인 검증 방법은 다음과 같습니다:

5.1 EKS에서 서명 검증

EKS 클러스터에 Admission Controller를 설정하여 배포 시 이미지 서명을 자동 검증할 수 있습니다.
AWS 공식 문서에서는 Kyverno, Gatekeeper와 같은 도구를 활용한 서명 검증 예시도 제공하고 있습니다.

5.2 ECS 서비스 배포 전에 검증

ECS의 서비스 라이프사이클 훅을 활용하여 Lambda 함수를 배포 전 서명 검증 로직으로 연결할 수 있습니다. 서명이 유효하지 않으면 배포를 중단하게 하는 방식으로 활용할 수 있습니다.

5.3 수동 검증

Notation CLI 같은 도구를 이용해 로컬 또는 CI 단계에서 수동으로 서명을 검증할 수 있습니다.

 

6. 권한 설정

Managed Signing을 사용하려면 IAM 사용자 또는 역할에 다음 권한이 필요합니다.

  • ecr:PutImage
  • ecr:InitiateLayerUpload
  • ecr:CompleteLayerUpload
  • signer:SignPayload

ECR 푸시 권한과 AWS Signer 서명 권한이 모두 있어야 정상적으로 Managed Signing이 수행됩니다.

 

7. 고려사항

7.1 서명 아티팩트 저장 및 클린 작업

서명은 ECR 레포지토리에 참조 아티팩트로 저장되며, 레포지토리 정책이나 수명 주기 정책에 따라 청소 가능합니다. 이 아티팩트는 이미지당 하나의 서명으로 카운트됩니다.

7.2 크로스 리전 제한

Managed Signing에서 사용하는 Signing Profile은 동일한 리전에 있어야 합니다. 다른 리전의 프로필을 바로 사용할 수는 없습니다.

7.3 감사 로그

CloudTrail을 통해 서명 이벤트가 전체 감사 로그로 기록됩니다. 추후 감사 및 보안 분석에 활용할 수 있습니다.

 

반응형