みなさん、こんばんは。サニービュー事業部の小寺です。

Amazon Machine Images(AMI)でInstance Metadata Service Version2をデフォルトサポート開始しました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/amazon-machine-images-support-instance-metadata-service-version-2-default/

そもそもInstance Metadata Serviceって?

Instance Metadata Serviceってご存じですか。

インスタンスメタデータは、インスタンスに関するデータで、実行中のインスタンスを設定または管理するために使用します。
インスタンスメタデータは、ホスト名、イベント、およびセキュリティグループなどでカテゴリ分けされます。

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

つまり、Amazon EC2のインスタンスメタデータを使うと、インスタンス内 (OS上) からインスタンスに関する様々な情報を取得できます。

今日のアップデートまではIMDSv2がデフォルトではなかったのですが、IMDSv1との違いは何でしょうか。

インスタンスメタデータサービスバージョン 1 (IMDSv1) – リクエスト/レスポンスメソッド
インスタンスメタデータサービスバージョン 2 (IMDSv2) – セッション志向メソッド

うーん、上記の記載だけだとわかりにくいですよね。セッション志向って・・。

インスタンスメタデータサービスバージョン 1 (IMDSv1)
インスタンスメタデータはEC2内部からHTTPリクエストを送ることで、データの取得ができていました。そのため、リクエスト、レスポンスメソッドと分類できます。

インスタンスメタデータサービスバージョン 1 (IMDSv2)
バージョン2からはセキュリティが強化されています。
一つ目にセッショントークン(期限付き。パスワードのような扱い)を取得し、PUTリクエストでないとトークン取得ができなくなりました。セッショントークンの期限は最大6時間 (1 秒~6 時間)です。

セッショントークンヘッダーを使って、「TOKEN」と呼ばれる変数に値を保管します。その後、トークンを使ってデータの取得を行います。トークンを作成した後は、設定した期限が切れるまでは、再使用することができます。

今使っているインスタンスのIMDSのバージョンって確認できる?

IMDS に関する設定は、describe-instancesの実行結果から確認可能です。

aws ec2 describe-instances –instance-id インスタンスID

MetadataOptionsを確認してみましょう。
先ほどの例では、以下の通り表示されました。
“MetadataOptions”: {
“State”: “applied”,
“HttpEndpoint”: “enabled”,
“HttpTokens”: “optional”,
“HttpPutResponseHopLimit”: 1
}

HttpTokensがoptionalの場合:IMDSv1 と IMDSv2 が使用可能
HttpTokensがrequiredの場合:IMDSv2 が使用可能

今回のアップデートのメリット

今回のアップデートにより、デフォルトで Instance Metadata Service Version 2 (IMDSv2) が使用されるように、EC2 の Amazon マシンイメージ (AMI) を設定できるようになりました。
今までは、IMDSv2を使用するときには、インスタンス起動時にInstance Metadata オプションを設定するか、または起動後にModifyInstanceMetadataOptions API を使ってインスタンスの更新が必要でした。
それがなんと、デフォルトサポートされるので、IMDS AMI プロパティを使って、AMI から起動されるすべての新しいインスタンスを、デフォルトでIMDSv2-only に設定できます。

対応リージョン

リリースの2022年10月時点で、全AWS リージョン と AWS GovCloud (米国) で利用可能です。