IMDSv2 のみの設定が反映されたか確認する方法

IMDSv2 のみの設定が反映されたか確認する方法

2025.12.15

この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2025 | Advent Calendar 2025 - Qiita 15 日目の記事です。

困っていること

既存のインスタンスでインスタンスメタデータオプションを変更し IMDSv1 と IMDSv2 の両方を使用する設定から、推奨されている IMDSv2 の使用を強制する設定へ変更しました。
変更後にコンソール上で「i - ☓☓☓☓☓☓☓☓ のインスタンスメタデータオプションが正常に更新されました。このプロセスは反映されるまで数分かかることがあります。」と記載されていますが、変更完了を確実に確認する方法を教えてください。

Message

どう対応すればいいの?

前提

EC2 インスタンスのメタデータオプションで IMDSv2 が Optional に設定されている場合、IMDSv1 と IMDSv2 の両方のリクエストが受け入れられます。
この場合、実際にどちらのバージョンが使用されるかは、アプリケーションやツールがどのように実装されているかによって決まります。

一方で Required になっている場合は、IMDSv2 が強制されます。

既存インスタンスのインスタンスメタデータオプションの変更|Amazon Elastic Compute Cloud

Require the use of IMDSv2

Use one of the following methods to modify the instance metadata options on an existing instance to require that IMDSv2 is used when requesting instance metadata. When IMDSv2 is required, IMDSv1 cannot be used.

Restore the use of IMDSv1

When IMDSv2 is required, IMDSv1 will not work when requesting instance metadata. When IMDSv2 is optional, then both IMDSv2 and IMDSv1 will work. Therefore, to restore IMDSv1, make IMDSv2 optional by using one of the following methods.

確認方法

インスタンスにログインし、以下のドキュメントに記載されているコマンドを実行し IMDSv1 でメタデータにアクセスすることで反映が確認できます。
IMDSv2 の設定が Required に正常に反映されている場合は、401 Unauthorized エラーが表示されます。
インスタンスメタデータサービスを使用してインスタンスメタデータにアクセスする|Amazon Elastic Compute Cloud

使用できるインスタンスメタデータのバージョンを取得する
次の例では使用できるインスタンスメタデータのバージョンを取得しています。
(中略)

curl

curl http://169.254.169.254/

PowerShell

Invoke-RestMethod -uri http://169.254.169.254/

コマンド実行結果が IMDSv2 の設定(Optional/Required)によって異なる理由は以下のとおりです。

IMDSv1 はシンプルな HTTP リクエストだけでメタデータを取得できる仕様です。
そのため、Optional 設定時はコマンド結果が正常に結果が返ってきます。

一方、IMDSv2 ではセキュリティ強化のため、事前にセッショントークンを取得してからアクセスする必要があります。Required 設定に変更後、トークンなしで同じコマンドを実行すると 401 Unauthorized エラーが返されるため、IMDSv2 の強制が正しく適用されたことが確認できます。

やってみた

Linux

IMDSv2 の使用を Optional(IMDSv1,IMDSv2 共に使用可) に設定した Linux インスタンスを起動します。
IMDS-Linux1

起動したインスタンスに SSH で接続し、コマンドcurl http://169.254.169.254/を実行します。
IMDS-Linux2

結果が正常に出力されたことを確認しました。
次にドキュメントの手順に沿って IMDSv2 を Required に変更します。

IMDS-Linux4

IMDSv2 が Required に変更され、インスタンスメタデータオプションの変更完了を示すポップアップが表示されたら再度 SSH で接続しコマンドを実行します。

IMDS-Linux5

401 Unauthorized が表示されたため、正常に IMDSv2 の使用が強制された設定へ変更されたことが確認できました。

Windows

IMDSv2 の使用を Optional に設定した Windows インスタンスを起動します。
起動したインスタンスに RDP 接続を行い、PoweShell でコマンドInvoke-RestMethod -uri http://169.254.169.254/を実行します。

IMDS-Windows2

結果が正常に出力されたことを確認しました。
ドキュメントの手順に沿って IMDSv2 を Required に変更します。

再度コマンドを実行したところ、Windows においても 401 Unauthorized が表示されることが確認できました。
IMDS-Windows5

参考情報

この記事をシェアする

FacebookHatena blogX

関連記事