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)라고 하며, 이 서비스를 통해 인스턴스 메타데이터를 확인하고 관리할 수 있습니다.

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/
발급받은 토큰을 헤더에 포함시켜 메타데이터를 요청합니다.
자세한 내용:
인스턴스 메타데이터 서비스를 사용하여 인스턴스 메타데이터에 액세스 - - Amazon Elastic Compute Clou
토큰이 유효하지 않고, 토큰을 만드는 데 오류가 발생하면 오류 메시지가 변수에 저장되고 명령이 작동하지 않습니다.
docs.aws.amazon.com
'AWS' 카테고리의 다른 글
| [AWS] AWS CodeDeploy와 Github Actions를 이용하여 EC2 배포 자동화 CI/CD 파이프라인 구축 (1) | 2026.03.10 |
|---|---|
| [AWS] Terraform 설치 및 사용 (1) | 2026.03.06 |
| [AWS] CloudShell 사용 (0) | 2026.03.06 |
| [AWS] AWS CLI 설치 및 사용 (0) | 2026.03.06 |
댓글