본문 바로가기
AWS

[AWS] IMDSv2 EC2 메타데이터 서비스

by spareone 2026. 3. 19.

1 . IMDS

 

Instance Metadata는 실행 중인 인스턴스를 구성하고 관리하는 데 사용될 수 있는 인스턴스 관련 데이터입니다.

인스턴스 운영에 필요한 데이터가 들어있으며, (인스턴스 메타데이터 속성, 동적 데이터, 사용자 데이터) 등이 들어 있습니다.

 

자세한 내용:

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

 

인스턴스 메타데이터를 사용하여 EC2 인스턴스를 관리합니다. - - Amazon Elastic Compute Cloud

사용자는 인스턴스 자체 내에서 인스턴스 메타데이터 및 사용자 데이터에만 액세스할 수 있지만, 데이터는 인증 또는 암호화 방법으로 보호되지 않습니다. 인스턴스에 직접 액세스할 수 있는

docs.aws.amazon.com

 

이러한 메타데이터를 제공하는 서비스를 IMDS(Instance MetaData Service)라고 하며, 이 서비스를 통해 인스턴스 메타데이터를 확인하고 관리할 수 있습니다.

 

 

[그림 1] EC2 메타데이터 버전 선택

 

IMDS는 버전 1과 버전 2가 존재합니다.

최근에는 보안 상의 이유로 버전 2를 많이 사용합니다.

 

 

IMDS 버전 확인하기

aws ec2 describe-instances --region [리전] --instance-id [인스턴스 ID] --query "Reservations[0].Instances[0].MetadataOptions"

 

 

IMDSv1의 경우 HttpTokens에 optional, IMDSv2의 경우 HttpTokens에 required가 표시됩니다.

그 이유는 v2에서만 토큰이 필수 사용이기 때문입니다.

 

2. IMDS v1

 

IMDS v1에서는 아래 명령어로 메타데이터 항목을 받아옵니다.

curl http://169.254.169.254/latest/meta-data/

 

토큰을 사용하지 않으므로, 서버에서 위 주소만 입력하면 메타데이터에서 받아올 수 있습니다.

 

모종의 사유로 SSRF 등의 공격이 가능하다면 메타데이터를 탈취할 수 있습니다.

EC2 내부 메타데이터 IP는 169.254.169.254 고정이기 때문입니다.

 

 

3. IMDS v2

v1의 취약점을 보완하고자 토큰 방식의 v2가 등장했습니다.

 

사용자가 GET 요청을 통해 메타데이터를 요청하는 게 v1의 방식인데,

그 전에 PUT으로 Token을 받아야 하는 과정이 추가되었습니다.

 

TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H \
		"X-aws-ec2-metadata-token-ttl-seconds: 21600"`

 

먼저 PUT으로 토큰을 요청합니다. 위의 샘플 코드는 6시간(21600초)동안 유효한 토큰을 요청합니다.

 

curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/

 

발급받은 토큰을 헤더에 포함시켜 메타데이터를 요청합니다.

 

 

 

자세한 내용:

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-retrieval-examples-imdsv1

 

인스턴스 메타데이터 서비스를 사용하여 인스턴스 메타데이터에 액세스 - - Amazon Elastic Compute Clou

토큰이 유효하지 않고, 토큰을 만드는 데 오류가 발생하면 오류 메시지가 변수에 저장되고 명령이 작동하지 않습니다.

docs.aws.amazon.com

 

댓글