新規インスタンスのインスタンスメタデータオプションの設定
IMDSv2 の使用を要求する
インスタンスの起動時に、IMDSv2 を使用することを要求するには、以下に示すいくつかの方法があります。
起動時にインスタンスを設定する
インスタンスを起動する際に、以下のフィールドを設定しておくことで、IMDSv2 が使用されるようにそのインスタンスを構成できます。
-
Amazon EC2 コンソール: [Metadata version] (メタデータバージョン) で、[V2 only (token required)] (V2 のみ (トークンが必須)) を設定します。
-
AWS CLI:
HttpTokens
にrequired
を設定します。
IMDSv2 が必須であることを指定する場合、[Metadata accessible] (メタデータにアクセス可能) に [Enabled] (有効) (コンソールの場合) を設定するか、HttpEndpoint
に enabled
(AWS CLI の場合) を設定して、インスタンスメタデータサービスのエンドポイントも有効にする必要があります。
AMI を設定する
AMI の登録時に、imds-support
パラメータで v2.0
を設定できます。この AMI から起動されたインスタンスでは、[Metadata version] (メタデータバージョン) に V2 only (token required)] (V2 のみ (トークンが必要)) (コンソールの場合) が設定されるか、HttpTokens
に required
(AWS CLI の場合) が設定されます。この設定が行われている場合、インスタンスメタデータがリクエストされる際には IMDSv2 を使用することが、インスタンスでの必須になります。
この AMI から起動されるインスタンスでは、imds-support
に v2.0
を設定している場合、[Metadata response hop limit] (メタデータレスポンスのホップ制限) (コンソールの場合)、または http-put-response-hop-limit
(AWS CLI の場合) が「2」に設定されることに注意してください。
IMDSv2 向けに AMI を設定するには
以下の register-image の例では、EBS ルートボリュームの指定されたスナップショットをデバイス /dev/xvda
として使用して、AMI を登録しています。imds-support
パラメータに v2.0
を指定することで、AMI から起動されるインスタンスで IMDSv2 の使用が必須となるように、AMI の設定を行っています。
aws ec2 register-image \ --name
my-image
\ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example
} \ --imds-support v2.0
IAM ポリシーを使用する
IMDSv2 の使用が必須ではない新しいインスタンスを IAM ユーザーが起動できないように、IAM ポリシーを作成することもできます。
IAM ポリシーにより、すべての新しいインスタンスでの IMDSv2 の使用を必須にするには
IAM ユーザーがインスタンスメタデータをリクエストする際にIMDSv2の使用を義務付けるインスタンスみを起動できるようにするには、IMDSv2を必要とする条件が満たされないとインスタンスを起動できないように指定することができます。IAM ポリシーの例については、「インスタンスメタデータの使用」を参照してください。
IPv4 および IPv6 エンドポイントの設定
デフォルトでは、IPv6 エンドポイントは無効です。これは、IPv6 専用サブネットでインスタンスを起動する場合にも当てはまります。AWS CLI を使用する場合は、インスタンスの起動時に IPv6 エンドポイントを有効にすることができます。このオプションは Amazon EC2 コンソールでは利用できません。
インスタンスメタデータサービスの IPv6 エンドポイントは、Nitro System 上に構築されたインスタンス からのみアクセスできます。
IPv4 および IPv6 エンドポイントの設定
以下の run-instances の例では、インスタンスメタデータサービスのために IPv6 エンドポイントが有効化された、t3.large
インスタンスを起動しています。IPv6 エンドポイントを有効にするには、--metadata-options
パラメータに HttpProtocolIpv6=enabled
を指定します。HttpProtocolIpv6
の値を指定する場合は、HttpEndpoint
も enabled
に設定する必要があります。
aws ec2 run-instances \ --image-id
ami-0abcdef1234567890
\ --instance-typet3.large
\ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
インスタンスメタデータへのアクセスを無効にする
使用しているインスタンスメタデータサービスのバージョンに関係なく、インスタンスメタデータへのアクセスを確実に無効にすることができます。アクセスを後で有効にする場合は、modify-instance-metadata-options コマンドを使用します。