AMI 계보(ancestry)로 AMI의 출처 추적하기

AMI 계보(ancestry)로 AMI의 출처 추적하기 (Use AMI ancestry to trace the origin of an AMI)

AMI 계보(ancestry)는 AMI의 모든 조상 AMI의 ID와 리전(Region)을 돌려줘서, 그 AMI가 어디서 왔는지 추적할 수 있게 해줘요. AMI를 만들거나 복사하면 새 AMI가 소스(부모) AMI의 ID와 리전을 유지해요. 그래서 AMI가 뿌리(루트) AMI까지 거슬러 올라가는 연결 고리를 추적할 수 있어요.

출처: 문서

본문

AMI 계보는 다음과 같은 상황에 유용해요.

  • 내부 정책을 준수하는지 확인하기 위해 AMI 파생물을 추적해요.
  • 조상 AMI에서 보안 문제가 발견됐을 때, 잠재적으로 취약한 AMI를 식별해요.
  • 여러 리전에 걸쳐 AMI 출처에 대한 가시성을 유지해요.

AMI 계보의 작동 방식 (How AMI ancestry works)

AMI 계보는 지정된 AMI를 만드는 데 사용된 부모 AMI, 그리고 그 부모의 부모를 루트 AMI까지 거슬러 식별해요. 작동 방식은 다음과 같아요.

  • 각 AMI는 소스(부모) AMI의 ID와 리전을 표시해요.
  • 선택한 AMI부터 시작해서, 계보 항목 목록은 각 부모 AMI를 순서대로 표시해요.
  • 계보 항목 목록은 루트 AMI에 도달할 때까지 거슬러 올라가요. 루트 AMI는 다음 중 하나예요.
    • 검증된 제공자(owner alias가 amazon 또는 aws-marketplace인 제공자)의 공개 AMI.
    • 기록된 조상이 없는 AMI. 예를 들어 RegisterImage를 사용해 스냅샷 집합에서 직접 AMI를 만들면, 인스턴스에서 AMI를 만들 때와 달리 추적할 소스 AMI가 없어요.
    • 소스 AMI가 다른 파티션(partition)에 있는 AMI.
    • 목록의 50번째 AMI. 계보 목록의 최대 AMI 수는 50개예요.
  • 검증된 제공자(owner alias가 amazon 또는 aws-marketplace인 제공자)의 공개 AMI.
  • 기록된 조상이 없는 AMI. 예를 들어 RegisterImage를 사용해 스냅샷 집합에서 직접 AMI를 만들면, 인스턴스에서 AMI를 만들 때와 달리 추적할 소스 AMI가 없어요.
  • 소스 AMI가 다른 파티션에 있는 AMI.
  • 목록의 50번째 AMI. 계보 목록의 최대 AMI 수는 50개예요.

고려 사항 (Considerations)

  • 소스 AMI의 ID와 리전은 CreateImage, CopyImage, 또는 CreateRestoreImageTask로 만든 AMI에서만 확인할 수 있어요.
  • CreateImage(인스턴스에서 AMI를 만드는 작업)로 만든 AMI의 경우, 소스 AMI ID는 인스턴스를 시작하는 데 사용된 AMI의 ID예요.
  • 소스 AMI 정보는 다음 경우에는 확인할 수 없어요.
    • RegisterImage로 만든 AMI: 스냅샷에서 만들었기 때문이에요.
    • 일부 오래된 AMI.
  • 소스 AMI 정보는 다음 경우에 보존돼요.
    • AMI를 리전 간에 복사한 경우.
    • 소스 AMI가 등록 해제(삭제)된 경우.
    • 소스 AMI에 접근할 수 없는 경우.
  • 각 계보 목록은 AMI 50개로 제한돼요.

AMI 계보 보기 (View AMI ancestry)

다음 방법으로 AMI의 계보를 볼 수 있어요.

콘솔 (Console)

AMI 계보 보기: Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다. 탐색 창에서 AMIs를 선택해요. AMI를 선택하고 AMI ancestry 탭을 선택해요. AMI ancestry 항목 표는 계보 목록의 모든 AMI를 나열해요.

  • AMI ID – 계보 목록에 있는 각 AMI의 식별자예요. 표의 첫 번째 항목은 선택한 AMI이고, 그 뒤로 조상들이 이어져요.
  • Source AMI ID – AMI ID 열의 AMI를 만드는 데 사용된 AMI의 ID예요. 대시(-)는 AMI 계보 목록의 끝을 나타내요.
  • Source AMI Region – 소스 AMI가 위치한 AWS 리전이에요.
  • Ancestry level – 계보 목록에서의 위치예요. 0(입력 AMI)은 계보를 알고 싶은 선택한 AMI를 나타내고, 숫자가 커질수록 더 오래된 조상을 보여줘요. n(원본 AMI)은 루트 AMI를 나타내며, 숫자는 계보 목록이 얼마나 거슬러 올라가는지 나타내요.
  • Creation date – AMI가 만들어진 시각(UTC 형식)이에요.
  • Owner alias – AMI 소유자의 별칭(예: amazon)이에요. 대시(-)는 AMI에 소유자 별칭이 없음을 나타내요.

AWS CLI

AMI 계보 보기: get-image-ancestry 명령을 사용하고 AMI ID를 지정해요.

aws ec2 get-image-ancestry \
    --image-id ami-1111111111EXAMPLE \
    --region us-east-1

다음은 예시 출력이에요. 출력은 계보 순서로 AMI를 나열해요. 첫 번째 항목은 지정된(입력) AMI이고, 그다음 부모, 부모의 부모 순으로 이어지며 루트 AMI로 끝나요.

{
    "ImageAncestryEntries": [
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-1111111111EXAMPLE", // Input AMI
            "SourceImageId": "ami-2222222222EXAMPLE",
            "SourceImageRegion": "us-east-1"
        },
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-2222222222EXAMPLE", // Parent AMI
            "SourceImageId": "ami-3333333333EXAMPLE",
            "SourceImageRegion": "us-east-1"
        },
        ...
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-8888888888EXAMPLE", // Root AMI
            "ImageOwnerAlias": "aws-marketplace",
            "SourceImageId": "ami-9999999999EXAMPLE",
            "SourceImageRegion": "us-east-2"
        }
    ]
}

PowerShell

AMI 계보 보기: Get-EC2ImageAncestry cmdlet을 사용해요.

Get-EC2ImageAncestry -ImageId ami-1111111111EXAMPLE

다음은 예시 출력이에요. 출력은 계보 순서로 AMI를 나열해요. 첫 번째 항목은 지정된(입력) AMI이고, 그다음 부모, 부모의 부모 순으로 이어지며 루트 AMI로 끝나요.

ImageAncestryEntries : {
    @ {
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-1111111111EXAMPLE" # Input AMI
        SourceImageId = "ami-2222222222EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    @ {
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-2222222222EXAMPLE" # Parent AMI
        SourceImageId = "ami-3333333333EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    ...
    @ {
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-8888888888EXAMPLE" # Root AMI
        ImageOwnerAlias = "aws-marketplace"
        SourceImageId = "ami-9999999999EXAMPLE"
        SourceImageRegion = "us-east-2"
    }
}

소스 AMI 식별하기 (Identify the source AMI)

AMI를 만드는 데 사용된 바로 위 부모(소스) AMI만 식별하면 되는 경우 다음 방법을 사용할 수 있어요.

콘솔 (Console)

선택한 AMI를 만드는 데 사용된 소스 AMI 식별하기: Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다. 탐색 창에서 AMIs를 선택해요. 세부 정보를 볼 AMI를 선택해요. 소스 AMI 정보는 Source AMI ID 및 Source AMI Region 필드에 나타나요.

AWS CLI

지정된 AMI를 만드는 데 사용된 소스 AMI 식별하기: describe-images 명령을 사용해요.

aws ec2 describe-images \
    --region us-east-1 \
    --image-ids ami-0abcdef1234567890 \
    --query "Images[]. {ID:SourceImageId,Region:SourceImageRegion}"

다음은 예시 출력이에요.

[
    {
        "ID": "ami-0abcdef1234567890",
        "Region": "us-west-2"
    }
]

PowerShell

지정된 AMI를 만드는 데 사용된 소스 AMI 식별하기: Get-EC2Image cmdlet을 사용해요.

Get-EC2Image -ImageId ami-0abcdef1234567890 | Select SourceImageId, SourceImageRegion

다음은 예시 출력이에요.

SourceImageId                SourceImageRegion
-------------                -----------------
ami-0abcdef1234567890        us-west-2

더 알아보기 (Learn more)