インスタンスメタデータサービス (IMDS)
IMDSv2 が標準化され、2024 年中頃以降に登場した新しいインスタンスタイプではIMDSv1 が無効となりました。トークン必須の IMDSv2 だけが利用できるため、不正アクセス耐性が向上します。
2024 年 3 月からアカウント単位でIMDSv2 をデフォルト化できる機能が追加されました。設定すると新規起動インスタンスが自動で IMDSv2 専用となり、移行作業が簡単になります。
IMDSv1 呼び出しの残存を検知する CloudWatch 指標 MetadataNoTokenRejected が新設されました。移行後の監視とトラブルシュートに役立ちます。
https://scrapbox.io/files/69529a60d2b1174534c7de4c.png
■インスタンスの中に埋め込まれたデータ
例) EC2のIPアドレス、ホストネーム、使用しているAMIのID番号
■IMDSv (インスタンスメタデータサービスバージョン)
Amazon Linux 2 -> IMDSv1
Amazon Linux 2023 -> IMDSv2
IMDSv1の場合(Amazon Linux 2)
Instance Meta Dataの表示方法
AMI IDの取得
code:sh
# ami-0a1c2ec61571737db
ホストネームの取得
code:sh
# ip-172-31-7-160.ap-northeast-1.compute.internal
IMDSv2の場合(Amazon Linux 2023)
トークンを取得して、そのトークンを使ってInstance Meta Dataを取得する
code:sh
$ TOKEN=curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" \
# ホストネームの取得
# ip-172-31-7-160.ap-northeast-1.compute.internal
分解
ホストネームの取得
v2からはホストネーム取得のために長いセキュリティコマンドが必要になった。
code:sh
$ TOKEN=curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"
\
&&
curl -H "X-aws-ec2-metadata-token: $TOKEN"