

# AMI 워터마크를 사용하여 AMI 추적 및 식별
<a name="ami-watermark"></a>

AMI 워터마크는 출처를 추적하고 거버넌스 정책을 시행하기 위해 프라이빗 AMI에 연결하는 식별자입니다. 워터마크는 AMI의 전체 수명 주기 동안 유지됩니다.
+ 워터마킹된 AMI에서 시작된 실행 중인 인스턴스에서 새 AMI를 생성하면 새 AMI가 워터마크를 상속합니다.
+ 워터마킹된 AMI를 복사하면 복사본에도 해당 워터마크가 적용됩니다.
+ 워터마킹된 AMI를 S3에 저장한 후 복원하면 복원된 AMI에도 워터마크가 그대로 유지됩니다.
+ 워터마킹된 AMI를 다른 계정과 공유하면 수신자에게 워터마크가 계속 표시됩니다.

AMI 워터마크를 사용하면 다음과 같은 이점이 있습니다.

**주요 이점**
+ 계정 및 리전 간 출처 추적 - 승인된 기본 이미지에서 파생되는 AMI를 식별합니다.
+ 계정 전체에서 관련 AMI를 필터링하고 찾습니다.
+ AMI 소비자가 프로젝트나 조직과 연결된 신뢰할 수 있는 AMI를 검색하고 식별할 수 있도록 지원합니다.

**Topics**
+ [AMI 워터마크 작동 방식](#ami-watermark-how-it-works)
+ [필수 권한](#ami-watermark-permissions)
+ [AMI에 워터마크 연결](#ami-watermark-attach)
+ [AMI에서 워터마크 분리](#ami-watermark-detach)
+ [AMI 워터마크 보기](#ami-watermark-view)
+ [워터마크로 AMI 필터링](#ami-watermark-filter)

## AMI 워터마크 작동 방식
<a name="ami-watermark-how-it-works"></a>

AMI 워터마크는 AMI에 연결하는 구조화된 식별자입니다. 다음은 워터마크의 주요 특징을 설명합니다.
+ **지속성** - AMI에 워터마크를 연결하면 모든 파생 AMI에 워터마크가 적용됩니다.
+ **소유자 전용** - AMI 소유자만 AMI에 워터마크를 연결할 수 있습니다.
+ **모두에게 표시** - AMI에 액세스할 수 있는 누구나 워터마크를 볼 수 있습니다.
+ **5개 제한** - AMI는 최대 5개의 워터마크를 가질 수 있습니다.
+ **퍼블릭 AMI에서 사용 불가** - 퍼블릭 AMI에 워터마크를 연결하거나 워터마크가 있는 AMI를 퍼블릭으로 설정할 수 없습니다.
+ **필터링 가능** - `describe-images`를 사용할 때 워터마크를 기준으로 AMI를 필터링할 수 있습니다.

### 워터마크 형식
<a name="ami-watermark-format"></a>

워터마크는 다음 필드를 포함하는 구조화된 객체입니다.
+ `WatermarkKey` - 워터마크의 고유 식별자이며 `{{account-id}}:{{watermark-name}}`으로 구성됩니다. 계정 ID 부분은 AMI 소유자의 12자리 AWS 계정 ID입니다. 워터마크 이름 부분은 고객이 지정하는 이름입니다.
+ `SourceImageRegion` - 워터마크를 처음 연결한 AMI의 리전입니다.
+ `SourceImageId` - 워터마크를 처음 연결한 AMI입니다.
+ `SourceImageCreationDate` - 워터마크를 처음 연결한 AMI의 생성 날짜입니다.
+ `WatermarkCreationTime` - 워터마크를 적용한 시점의 타임스탬프입니다.

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

## 필수 권한
<a name="ami-watermark-permissions"></a>

AMI 워터마크를 사용하려면 다음 IAM 권한이 필요합니다.
+ `ec2:AttachImageWatermark` - AMI에 워터마크를 연결합니다.
+ `ec2:DetachImageWatermark` - AMI에서 워터마크를 분리합니다.
+ `ec2:DescribeImages` - AMI의 워터마크를 봅니다.

## AMI에 워터마크 연결
<a name="ami-watermark-attach"></a>

콘솔, AWS CLI 또는 PowerShell을 사용하여 AMI에 워터마크를 연결할 수 있습니다.

------
#### [ Console ]

**AMI에 워터마크를 연결하려면 다음을 수행하세요.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택합니다.

1. **세부 정보** 탭의 **워터마크** 섹션에서 **워터마크 관리**를 선택합니다.

1. 워터마크 이름을 입력하고 **연결**을 선택합니다.

------
#### [ AWS CLI ]

**AMI에 워터마크를 연결하려면 다음을 수행하세요.**  
[attach-image-watermark](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-image-watermark.html) 명령을 사용합니다.

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

다음은 예제 출력입니다.

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

------
#### [ PowerShell ]

**AMI에 워터마크를 연결하려면 다음을 수행하세요.**  
[Add-EC2ImageWatermark](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2ImageWatermark.html) cmdlet을 사용합니다.

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

------

단일 AMI에 최대 5개의 워터마크를 연결할 수 있습니다.

## AMI에서 워터마크 분리
<a name="ami-watermark-detach"></a>

콘솔, AWS CLI 또는 PowerShell을 사용하여 AMI에서 워터마크를 분리할 수 있습니다.

------
#### [ Console ]

**AMI에서 워터마크를 분리하려면 다음을 수행하세요.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택합니다.

1. **세부 정보** 탭의 **워터마크** 섹션에서 **워터마크 관리**를 선택합니다.

1. 제거할 워터마크를 선택하고 **제거**를 선택합니다.

------
#### [ AWS CLI ]

**AMI에서 워터마크를 분리하려면 다음을 수행하세요.**  
[detach-image-watermark](https://docs.aws.amazon.com/cli/latest/reference/ec2/detach-image-watermark.html) 명령을 사용합니다.

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

------
#### [ PowerShell ]

**AMI에서 워터마크를 분리하려면 다음을 수행하세요.**  
[Remove-EC2ImageWatermark](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2ImageWatermark.html) cmdlet을 사용합니다.

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

------

**참고**  
AMI에서 워터마크를 분리해도 이미 워터마크가 적용된 파생 AMI에서 워터마크가 제거되지 않습니다. 워터마크가 영구적으로 유지되도록 하려면 워터마크를 관리해야 하는 신뢰할 수 있는 관리자에게만 `ec2:DetachImageWatermark` 권한을 부여합니다.

## AMI 워터마크 보기
<a name="ami-watermark-view"></a>

콘솔, AWS CLI 또는 PowerShell을 사용하여 AMI에 대한 워터마크를 볼 수 있습니다.

------
#### [ Console ]

**AMI에 대한 워터마크를 보려면 다음을 수행하세요.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택합니다.

1. **세부 정보** 탭의 **워터마크** 섹션에서 워터마크를 봅니다.

------
#### [ AWS CLI ]

**AMI에 대한 워터마크를 보려면 다음을 수행하세요.**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다.

```
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 ]

**AMI에 대한 워터마크를 보려면 다음을 수행하세요.**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다.

```
(Get-EC2Image -ImageId {{ami-046863d776a820ccd}}).ImageWatermarks
```

------

## 워터마크로 AMI 필터링
<a name="ami-watermark-filter"></a>

콘솔, AWS CLI 또는 PowerShell을 사용하여 워터마크로 AMI를 필터링할 수 있습니다.

------
#### [ Console ]

**워터마크로 AMI를 필터링하려면 다음을 수행하세요.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 검색 창에서 **워터마크 키** 필터를 선택하고 워터마크 키 값을 입력합니다.

------
#### [ AWS CLI ]

**워터마크로 AMI를 필터링하려면 다음을 수행하세요.**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 `image-watermark-key` 필터와 함께 사용합니다.

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

이렇게 하면 사용자가 액세스할 수 있으며 지정된 워터마크가 적용된 AMI가 모두 반환됩니다. 복사 작업을 통해 워터마크를 상속받은 파생 AMI도 여기에 포함됩니다.

------
#### [ PowerShell ]

**워터마크로 AMI를 필터링하려면 다음을 수행하세요.**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 `-Filter` 파라미터와 함께 사용합니다.

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

이렇게 하면 사용자가 액세스할 수 있으며 지정된 워터마크가 적용된 AMI가 모두 반환됩니다. 복사 작업을 통해 워터마크를 상속받은 파생 AMI도 여기에 포함됩니다.

------