

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Lightsail의 인스턴스 메타데이터 서비스(IMDS) 액세스 및 구성
<a name="amazon-lightsail-configuring-instance-metadata-service"></a>

다음 방법 중 하나를 사용하여 실행 중인 인스턴스에서 인스턴스 메타데이터에 액세스할 수 있습니다.
+ 인스턴스 메타데이터 서비스 버전 1(IMDSv1) – 요청/응답 방법
+ 인스턴스 메타데이터 서비스 버전 2(IMDSv2) – 세션 지향 방법
**중요**  
Lightsail의 모든 인스턴스 블루프린트가 IMDSv2를 지원하는 것은 아닙니다. IMDSv1을 사용하는 인스턴스 메타데이터 서비스에 대한 호출 수를 추적하려면 `MetadataNoToken` 인스턴스 지표를 사용하세요. 자세한 내용은 [인스턴스 지표 보기](amazon-lightsail-viewing-instance-health-metrics.md)를 참조하세요.

기본적으로 IMDSv1 또는 IMDSv2를 사용하거나 둘 다 사용할 수 있습니다. 인스턴스 메타데이터 서비스는 IMDSv2에 고유한 `PUT` 또는 `GET` 헤더가 주어진 요청에 있는지 여부에 따라 IMDSv1과 IMDSv2 요청을 구별합니다. 자세한 내용은 [EC2 인스턴스 메타데이터 서비스의 향상된 기능을 통해 개방형 방화벽, 역방향 프록시 및 SSRF 취약성에 대한 심층적인 방어 기능 추가](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/)를 참조하세요.

로컬 코드 또는 사용자가 IMDSv2를 사용해야 하도록 각 인스턴스에서 인스턴스 메타데이터 서비스를 구성할 수 있습니다. IMDSv2를 사용해야 하도록 지정하면 IMDSv1는 더 이상 작동하지 않습니다. 자세한 내용은 *Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서*의 [인스턴스 메타데이터 옵션 구성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)을 참조하세요.

인스턴스 메타데이터를 검색하려면 *Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서*의 [인스턴스 메타데이터 검색](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)을 참조하세요.

**참고**  
이 섹션의 예에서는 인스턴스 메타데이터 서비스의 IPv4 주소(`169.254.169.254`)를 사용합니다. IPv6 주소를 통해 인스턴스의 인스턴스 메타데이터를 검색하는 경우 대신 IPv6 주소(`fd00:ec2::254`)를 활성화하고 사용해야 합니다. 인스턴스 메타데이터 서비스의 IPv6 주소는 IMDSv2 명령과 호환됩니다.

## 인스턴스 메타데이터 서비스 버전 2 작동 방식
<a name="instance-metadata-v2-how-it-works"></a>

IMDSv2는 세션 지향 요청을 사용합니다. 세션 지향 요청을 사용하여 세션 기간을 정의하는 세션 토큰을 생성합니다. 세션 기간은 최소 1초에서 최대 6시간일 수 있습니다. 지정된 기간 중에는 후속 요청에 동일한 세션 토큰을 사용할 수 있습니다. 지정된 기간이 만료된 후에는 향후 요청에 사용할 새로운 세션 토큰을 생성할 수 있습니다.

**중요**  
Amazon Linux 2023 및 Ubuntu 24 블루프린트에서 시작된 Lightsail 인스턴스에는 기본으로 IMDSv2가 구성됩니다.

다음 예제에서는 Linux, PowerShell 쉘 스크립트 및 IMDSv2를 사용하여 최상위 인스턴스 메타데이터 항목을 검색합니다. 이 예제는 다음을 수행합니다.
+ `PUT` 요청을 사용하여 6시간(21,600초) 동안 지속되는 세션 토큰 생성
+ `TOKEN`(Linux의 경우) 또는 `token`(Windows의 경우)이라는 변수에 세션 토큰 헤더 저장
+ 토큰을 사용하여 최상위 메타데이터 항목 요청

다음 명령을 실행하여 시작합니다.
+ **Linux의 경우:**
  + 먼저 다음 명령을 사용하여 토큰을 생성합니다.

    ```
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
    ```
  + 그런 다음 해당 토큰을 사용하여 다음 명령으로 최상위 메타데이터 항목을 생성합니다.

    ```
    [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
    ```
+ **Windows의 경우:**
  + 먼저 다음 명령을 사용하여 토큰을 생성합니다.

    ```
    PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
    ```
  + 그런 다음 해당 토큰을 사용하여 다음 명령으로 최상위 메타데이터 항목을 생성합니다.

    ```
    PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
    ```

토큰을 생성한 후에는 만료될 때까지 토큰을 재사용할 수 있습니다. 다음 예제에서 각 명령은 인스턴스를 시작하는 데 사용되는 블루프린트(Amazon Machine Image(AMI))의 ID를 가져옵니다. 이전 예제의 토큰이 재사용됩니다. 토큰은 `$TOKEN`(Linux의 경우) 또는 `$token`(Windows의 경우)에 저장됩니다.
+ **Linux의 경우:**

  ```
  [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id
  ```
+ **Windows의 경우:**

  ```
  PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
  -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
  ```

IMDSv2를 사용하여 인스턴스 메타데이터를 요청하는 경우 요청에는 다음이 포함되어야 합니다.
+ **`PUT` 요청** - `PUT` 요청을 사용하여 인스턴스 메타데이터 서비스의 세션을 초기화합니다. `PUT` 요청은 후속 `GET` 요청에 포함되어야 하는 토큰을 인스턴스 메타데이터 서비스에 반환합니다. 토큰은 IMDSv2 사용 시 메타데이터에 액세스하는 데 필요합니다.
+ **토큰** - 인스턴스 메타데이터 서비스에 대한 모든 `GET` 요청에 토큰을 포함합니다. 토큰 사용이 `required`로 설정되면 유효한 토큰이 없거나 만료된 토큰이 있는 요청은 `401 - Unauthorized` HTTP 오류 코드를 수신합니다. 토큰 사용 요구 사항 변경에 대한 자세한 내용은 *AWS CLI 명령 레퍼런스*의 [update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html)를 참조하세요.
  + 토큰은 인스턴스에 특정한 키입니다. 토큰은 다른 인스턴스에서 유효하지 않으며 해당 토큰이 생성된 인스턴스 외부에서 사용하려고 시도하면 거부됩니다.
  + `PUT` 요청에는 토큰의 TTL(Time to Live)을 초 단위로 지정하는 헤더가 포함되어야 합니다. TTL은 최대 6시간(21,600초)까지 지정할 수 있습니다. 토큰은 논리 세션을 나타냅니다. TTL은 토큰이 유효한 시간 길이를 지정하며 따라서 세션 기간을 지정합니다.
  + 토큰이 만료된 후 인스턴스 메타데이터에 계속 액세스하려면 다른 `PUT` 요청을 사용하여 새 세션을 생성해야 합니다.
  + 토큰을 재사용하거나 모든 요청에 새 토큰을 생성하도록 선택할 수 있습니다. 요청 수가 적은 경우 인스턴스 메타데이터 서비스에 액세스해야 할 때마다 토큰을 생성하고 즉시 사용하는 것이 더 간편할 수 있습니다. 하지만 효율성을 향상하려면 인스턴스 메타데이터를 요청해야 할 때마다 `PUT` 요청을 작성하는 대신 토큰에 더 긴 기간을 지정하고 토큰을 재사용할 수 있습니다. 동시 토큰 수에는 실질적인 제한이 없으며 각각은 자체 세션을 나타냅니다. 그러나 IMDSv2에는 표준 인스턴스 메타데이터 서비스 연결 및 스로틀링 제한이 여전히 적용됩니다. 자세한 내용은 *Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서*의 [쿼리 스로틀링](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#instancedata-throttling)을 참조하세요.

IMDSv2 인스턴스 메타데이터 요청에서는 HTTP `GET` 및 `HEAD` 메서드가 허용됩니다. `PUT` 요청은 `X-Forwarded-For` 헤더가 포함된 경우 거부됩니다.

기본적으로 `PUT` 요청에 대한 응답에는 IP 프로토콜 수준에서 `1`의 응답 홉 제한(TTL(Time to Live))이 있습니다. 더 큰 홉 제한이 필요한 경우 `update-instance-metadata-options` 명령을 사용하여 홉 제한을 조정할 수 있습니다. 예를 들어, 인스턴스에서 실행 중인 컨테이너 서비스가 있는 경우 이전 버전과의 호환성을 위해 더 큰 홉 제한이 필요할 수 있습니다. 자세한 내용은 *AWS CLI 명령 레퍼런스*의 [update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html)를 참조하세요.

## 인스턴스 메타데이터 서비스 버전 2 사용으로 전환
<a name="instance-metadata-transition-to-version-2"></a>

Instance Metadata Service 버전 2(IMDSv2) 사용은 선택 사항입니다. Instance Metadata Service 버전 1(IMDSv1)은 무기한 지원됩니다. IMDSv2 사용으로 마이그레이션하도록 선택하는 경우 다음과 같은 도구와 전환 경로를 사용하는 것이 좋습니다.

**IMDSv2로 전환하는 데 도움이 되는 도구**

소프트웨어가 IMDSv1을 사용하는 경우 다음 도구를 사용하면 IMDSv2를 사용하도록 소프트웨어를 재구성하는 데 도움이 됩니다.
+ **AWS 소프트웨어:** 최신 버전의 AWS SDKs 및 AWS CLI 지원 IMDSv2. IMDSv2를 사용하려면 인스턴스에 최신 버전의 AWS SDKs 및가 있어야 합니다 AWS CLI. 업데이트에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*[의 설치, 업데이트 및 제거 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)를 AWS CLI참조하세요. 모든 Amazon Linux 2 소프트웨어 패키지에서는 IMDSv2가 지원됩니다.
+ **인스턴스 지표**: IMDSv2는 토큰 지원 세션을 사용하지만 IMDSv1은 사용하지 않습니다. `MetadataNoToken` 인스턴스 지표는 IMDSv1을 사용하는 인스턴스 메타데이터 서비스에 대한 호출 수를 추적합니다. 이 지표를 0까지 추적하면 모든 소프트웨어가 IMDSv2를 사용하도록 업그레이드되었는지 여부와 업그레이드된 시간을 확인할 수 있습니다. 자세한 내용은 [Amazon Lightsail의 인스턴스 지표 보기](amazon-lightsail-viewing-instance-health-metrics.md)를 참조하세요.
+ **Lightsail API 작업 및 AWS CLI 명령 업데이트**: 기존 인스턴스의 경우 [update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html) AWS CLI 명령(또는 [UpdateInstanceMetadataOptions](https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateInstanceMetadataOptions.html) API 작업)을 사용하여 IMDSv2를 사용해야 할 수 있습니다. 다음 명령은 예제입니다. *InstanceName*을 인스턴스 이름으로 바꾸고 *RegionName*을 인스턴스가 있는 로 바꿔야 AWS 리전 합니다.

  ```
  aws lightsail update-instance-metadata-options --region RegionName --instance-name InstanceName --http-tokens required
  ```

**IMDSv2에 액세스해야 하도록 설정하는 권장 경로**

위의 도구를 사용하여 IMDSv2로 전환하기 위해 다음 경로를 따르는 것이 좋습니다.

### 1단계: 시작 시
<a name="path-step-1"></a>

인스턴스에서 역할 자격 증명을 사용하는 AWS SDKs AWS CLI, 및 소프트웨어를 IMDSv2-compatible 버전으로 업데이트합니다. 업데이트에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*[의의 최신 버전으로 업그레이드를 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-linux.html#install-linux-awscli-upgrade) AWS CLI참조하세요.

그런 다음 IMDSv2 요청을 사용하여 인스턴스 메타데이터에 직접 액세스하는 소프트웨어(즉, AWS SDK를 사용하지 않는 소프트웨어)를 변경합니다.

### 2단계: 전환 도중
<a name="path-step-2"></a>

인스턴스 지표 `MetadataNoToken`을 사용하여 전환 진행률을 추적합니다. 이 지표는 인스턴스에서 IMDSv1을 사용하는 인스턴스 메타데이터 서비스에 대한 호출 수를 표시합니다. 자세한 내용은 [인스턴스 지표 보기](amazon-lightsail-viewing-instance-health-metrics.md)를 참조하세요.

### 3단계: 모든 인스턴스에서 모든 준비가 완료될 때
<a name="path-step-3"></a>

인스턴스 지표 `MetadataNoToken`이 IMDSv1 사용량 0을 기록하면 모든 인스턴스에서 준비가 모두 완료됩니다. 이 단계에서 [update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html) 명령을 통해 IMDSv2 사용을 요구할 수 있습니다. 실행 중인 인스턴스에서 이렇게 변경할 수 있으며, 인스턴스를 다시 시작할 필요는 없습니다.

기존 인스턴스에 대한 인스턴스 메타데이터 옵션 업데이트는 Lightsail API 또는 AWS CLI를 통해서만 사용할 수 있습니다. 현재 Lightsail 콘솔에서 사용할 수 없습니다. 자세한 내용은 [update-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-instance-metadata-options.html)를 참조하세요.

## 추가 IMDS 문서
<a name="amazon-lightsail-configuring-instance-metadata-service-imds-documentation"></a>

다음 IMDS 설명서는 *Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서*와 *Windows 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서*에서 확인할 수 있습니다.

**참고**  
Amazon EC2에서 인스턴스 블루프린트는 Amazon Machine Image(AMI)라고 합니다.
+ Linux 인스턴스의 경우:
  + [인스턴스 메타데이터 옵션 구성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)
  + [인스턴스 메타데이터 검색](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)
  + [인스턴스 사용자 데이터 작업](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html)
  + [동적 데이터 검색](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-dynamic-data-retrieval.html)
  + [인스턴스 메타데이터 카테고리](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html)
  + [예시: AMI 시작 인덱스 값](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMI-launch-index-examples.html)
  + [인스턴스 자격 증명 문서](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html)
+ Windows 인스턴스의 경우:
  + [인스턴스 메타데이터 옵션 구성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)
  + [인스턴스 메타데이터 검색](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)
  + [인스턴스 사용자 데이터 작업](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html)
  + [동적 데이터 검색](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-dynamic-data-retrieval.html)
  + [인스턴스 메타데이터 카테고리](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html)
  + [예시: AMI 시작 인덱스 값](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMI-launch-index-examples.html)
  + [인스턴스 자격 증명 문서](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html)