AMI 워터마크로 AMI 추적·식별하기

AMI 워터마크로 AMI 추적·식별하기 (Use AMI watermarks to track and identify AMIs)

AMI 워터마크는 비공개 AMI에 붙여서 출처(provenance)를 추적하고 거버넌스 정책을 적용하는 데 쓰는 식별자예요. 워터마크는 AMI 전체 수명 주기에 걸쳐 유지돼요.

출처: 문서

본문

워터마크는 다음 경우에도 그대로 전달돼요.

  • 워터마크가 있는 AMI에서 시작한 실행 중인 인스턴스로 새 AMI를 만들면 새 AMI가 워터마크를 물려받아요.
  • 워터마크가 있는 AMI를 복사하면 복사본도 워터마크를 지녀요.
  • 워터마크가 있는 AMI를 다른 계정과 공유하면 수신자에게 워터마크가 계속 보여요.

주요 이점

  • 계정과 리전에 걸쳐 출처를 추적해, 승인된 기본 이미지에서 파생된 AMI를 식별할 수 있어요.
  • 계정 전반에서 관련 AMI를 필터링하고 찾을 수 있어요.
  • AMI 소비자가 프로젝트나 조직과 연결된 신뢰할 수 있는 AMI를 발견·식별하는 데 도움을 줘요.
  • 워터마크를 Allowed AMIs와 결합해 승인된 워터마크가 있는 AMI로만 인스턴스 시작을 제한함으로써 거버넌스를 적용할 수 있어요.

AMI 워터마크의 동작 방식 (How AMI watermarks work)

AMI 워터마크는 AMI에 붙이는 구조화된 식별자예요. 주요 특징은 다음과 같아요.

  • 유지(Persists) – 워터마크를 AMI에 붙이면 모든 파생 AMI로 전달돼요.
  • 소유자만(Owner-only) – AMI 소유자만 AMI에 워터마크를 붙일 수 있어요.
  • 모두에게 공개(Visible to everyone) – AMI에 접근 권한이 있는 사람은 누구나 워터마크를 볼 수 있어요.
  • 최대 5개(Limit of 5) – AMI 하나에 최대 총 5개의 워터마크를 붙일 수 있어요.
  • 공용 AMI에서는 불가(Not available on public AMIs) – 공용 AMI에는 워터마크를 붙일 수 없고, 워터마크가 있는 AMI는 공용으로 만들 수 없어요.
  • 필터 가능(Filterable) – describe-images를 쓸 때 워터마크로 AMI를 필터링할 수 있어요.

워터마크 형식 (Watermark format)

워터마크는 다음 필드를 가진 구조화된 객체예요.

  • WatermarkKey – 워터마크의 고유 식별자로, account-id:watermark-name 형식이에요. 계정 ID 부분은 AMI 소유자의 12자리 AWS 계정 ID이고, 워터마크 이름 부분은 사용자가 지정한 이름이에요.
  • SourceImageRegion – 원래 워터마크를 붙인 AMI의 리전이에요.
  • SourceImageId – 원래 워터마크를 붙인 AMI예요.
  • SourceImageCreationDate – 원래 워터마크를 붙인 AMI의 생성 날짜예요.
  • WatermarkCreationTime – 워터마크를 적용한 시점의 타임스탬프예요.

워터마크 이름은 3~128자여야 하며, 영숫자, 괄호(()), 대괄호([]), 공백, 마침표(.), 슬래시(/), 하이픈(-), 작은따옴표('), at 기호(@), 밑줄(_)을 포함할 수 있어요.

필요한 권한 (Required permissions)

AMI 워터마크를 다루려면 다음 IAM 권한이 필요해요.

  • ec2:AttachImageWatermark – AMI에 워터마크를 붙일 때.
  • ec2:DetachImageWatermark – AMI에서 워터마크를 뗄 때.
  • ec2:DescribeImages – AMI의 워터마크를 볼 때.

AMI에 워터마크 붙이기 (Attach a watermark to an AMI)

콘솔: 콘솔에서 AMIs를 선택하고, AMI를 선택한 뒤, Details 탭의 Watermarks 섹션에서 Manage watermarks를 선택하고 워터마크 이름을 입력한 다음 Attach를 선택해요.

AWS CLI: attach-image-watermark 명령을 사용해요.

aws ec2 attach-image-watermark \
    --image-id ami-1111111111EXAMPLE \
    --image-watermark-name "prod-baseline"

다음은 예시 출력이에요.

{
    "WatermarkKey": "123456789012:prod-baseline"
}

PowerShell: Add-EC2ImageWatermark cmdlet을 사용해요.

Add-EC2ImageWatermark `
    -ImageId ami-1111111111EXAMPLE `
    -ImageWatermarkName "prod-baseline"

AMI 하나에는 최대 5개의 워터마크를 붙일 수 있어요.

AMI에서 워터마크 떼기 (Detach a watermark from an AMI)

콘솔: AMIs에서 AMI를 선택하고, Details 탭의 Watermarks 섹션에서 Manage watermarks를 선택한 뒤 제거할 워터마크를 선택하고 Remove를 선택해요.

AWS CLI: detach-image-watermark 명령을 사용해요.

aws ec2 detach-image-watermark \
    --image-id ami-1111111111EXAMPLE \
    --image-watermark-key "111122223333:prod-baseline"

PowerShell: Remove-EC2ImageWatermark cmdlet을 사용해요.

Remove-EC2ImageWatermark `
    -ImageId ami-1111111111EXAMPLE `
    -ImageWatermarkKey "111122223333:prod-baseline"

참고: AMI에서 워터마크를 떼도 이미 워터마크를 물려받은 파생 AMI에서는 제거되지 않아요. 워터마크가 유지되도록 하려면 ec2:DetachImageWatermark 권한을 워터마크를 관리해야 하는 신뢰할 수 있는 관리자에게만 부여하세요.

AMI 워터마크 보기 (View AMI watermarks)

콘솔: AMIs에서 AMI를 선택하고 Details 탭의 Watermarks 섹션에서 워터마크를 확인해요.

AWS CLI: describe-images 명령을 사용해요.

aws ec2 describe-images \
    --image-ids ami-046863d776a820ccd \
    --region us-east-1

응답에 각 AMI의 ImageWatermarks 배열이 포함돼요.

{
    "Images": [
        {
            "ImageId": "ami-046863d776a820ccd",
            "Public": false,
            "OwnerId": "123456789012",
            ...
            "ImageWatermarks": [
                {
                    "WatermarkKey": "111122223333:prod-baseline",
                    "Region": "us-east-1",
                    "SourceImageId": "ami-0b752bf1df193a6c4",
                    "SourceImageCreationDate": "2024-07-10T08:15:00",
                    "CreationDate": "2024-07-12T14:30:00"
                },
                {
                    "WatermarkKey": "222222222222:security-approved",
                    "Region": "eu-north-1",
                    "SourceImageId": "ami-12345678",
                    "SourceImageCreationDate": "2024-06-01T10:00:00",
                    "CreationDate": "2024-06-05T09:45:00"
                }
            ]
        }
    ]
}

PowerShell: Get-EC2Image cmdlet을 사용해요.

(Get-EC2Image -ImageId ami-046863d776a820ccd).ImageWatermarks

워터마크로 AMI 필터링하기 (Filter AMIs by watermark)

콘솔: AMIs에서 검색 표시줄의 Watermark key 필터를 선택하고 워터마크 키 값을 입력해요.

AWS CLI: describe-images 명령에 image-watermark-key 필터를 사용해요.

aws ec2 describe-images \
    --filters "Name=image-watermark-key,Values=111122223333:prod-baseline"

이렇게 하면 접근 권한이 있는 AMI 중 지정한 워터마크를 지닌 모든 AMI가 반환돼요. 복사 작업으로 물려받은 파생 AMI도 포함돼요.

PowerShell: Get-EC2Image cmdlet에 -Filter 파라미터를 사용해요.

Get-EC2Image `
    -Filter @{Name="image-watermark-key"; Values="111122223333:prod-baseline"}

더 알아보기