みなさん、こんばんは。サニービュー事業部の小寺です。
Amazon Machine Images(AMI)でInstance Metadata Service Version2をデフォルトサポート開始しました。
そもそも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 (米国) で利用可能です。