新規インスタンスのインスタンスメタデータオプションの設定 - Amazon Elastic Compute Cloud

新規インスタンスのインスタンスメタデータオプションの設定

IMDSv2 の使用を要求する

インスタンスの起動時に、IMDSv2 を使用することを要求するには、以下に示すいくつかの方法があります。

起動時にインスタンスを設定する

インスタンスを起動する際に、以下のフィールドを設定しておくことで、IMDSv2 が使用されるようにそのインスタンスを構成できます。

  • Amazon EC2 コンソール: [Metadata version] (メタデータバージョン) で、[V2 only (token required)] (V2 のみ (トークンが必須)) を設定します。

  • AWS CLI: HttpTokensrequired を設定します。

IMDSv2 が必須であることを指定する場合、[Metadata accessible] (メタデータにアクセス可能) に [Enabled] (有効) (コンソールの場合) を設定するか、HttpEndpointenabled (AWS CLI の場合) を設定して、インスタンスメタデータサービスのエンドポイントも有効にする必要があります。

New console
新しいインスタンスで IMDSv2 の使用を要求するには
  • Amazon EC2 コンソールで新しいインスタンスを起動するとき、[Advanced details] (高度な詳細) を展開し、次の操作を行います。

    • [Metadata accessible] (メタデータにアクセス可能) には、[Enabled] (有効) を選択します。

    • [Metadata version] (メタデータバージョン) には、[V2 only (token required)] (V2 のみ (トークンが必要)) を選択します。

    詳細については、「高度な詳細」を参照してください。

Old console
新しいインスタンスで IMDSv2 の使用を要求するには
  • Amazon EC2 コンソールで新しいインスタンスを起動するとき、[Configure Instance Details (インスタンスの詳細の設定) ] ページで次のオプションを選択します。

    • [Advanced Details (高度な詳細)] の [ Metadata accessible (メタデータにアクセス可能)] で、[Enabled (有効)] を選択します。

    • [Metadata version (メタデータバージョン)] で、[V2 (token required) (V2 (トークンが必要))] を選択します。

詳細については、「ステップ 3: インスタンスの詳細を設定する」を参照してください。

AWS CLI
新しいインスタンスで IMDSv2 の使用を要求するには

次の run-instances の例では、c3.large--metadata-options に設定して HttpTokens=required インスタンスを起動します。HttpTokens の値を指定する場合は、HttpEndpointenabled に設定する必要があります。メタデータの取得リクエストでは、セキュリティで保護されたトークンヘッダーは required に設定されるので、インスタンスメタデータのリクエストに際しては、そのインスタンスは必ず IMDSv2 を使用することになります。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c3.large \ ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required"
AWS CloudFormation

AWS CloudFormation を使用してインスタンスのメタデータオプションを指定するには、「AWS CloudFormation ユーザーガイド」の「AWS::EC2::LaunchTemplate MetadataOptions」プロパティを参照してください。

AMI を設定する

AMI の登録時に、imds-support パラメータで v2.0 を設定できます。この AMI から起動されたインスタンスでは、[Metadata version] (メタデータバージョン) に V2 only (token required)] (V2 のみ (トークンが必要)) (コンソールの場合) が設定されるか、HttpTokensrequired (AWS CLI の場合) が設定されます。この設定が行われている場合、インスタンスメタデータがリクエストされる際には IMDSv2 を使用することが、インスタンスでの必須になります。

この AMI から起動されるインスタンスでは、imds-supportv2.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 の値を指定する場合は、HttpEndpointenabled に設定する必要があります。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t3.large \ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"

インスタンスメタデータへのアクセスを無効にする

使用しているインスタンスメタデータサービスのバージョンに関係なく、インスタンスメタデータへのアクセスを確実に無効にすることができます。アクセスを後で有効にする場合は、modify-instance-metadata-options コマンドを使用します。

New console
インスタンスメタデータへのアクセスを無効にするには
  • [Advanced details] (高度な詳細) で以下のように指定して、Amazon EC2 コンソールでインスタンスを起動します。

    • [Metadata accessible] (メタデータにアクセス可能) には、[Disabled] (無効) を選択します。

詳細については、「高度な詳細」を参照してください。

Old console
インスタンスメタデータへのアクセスを無効にするには
  • [Configure Instance Details] (インスタンスの詳細の設定) ページで次のオプションを選択して、Amazon EC2 コンソールでインスタンスを起動します。

    • [Advanced Details (高度な詳細)] の [ Metadata accessible (メタデータにアクセス可能)] で、[Disabled (無効)] を選択します。

詳細については、ステップ 3: インスタンスの詳細を設定する を参照してください。

AWS CLI
インスタンスメタデータへのアクセスを無効にするには

--metadata-optionsHttpEndpoint=disabled を設定し、インスタンスを起動します。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c3.large \ ... --metadata-options "HttpEndpoint=disabled"
AWS CloudFormation

AWS CloudFormation を使用してインスタンスのメタデータオプションを指定するには、「AWS CloudFormation ユーザーガイド」の「AWS::EC2::LaunchTemplate MetadataOptions」プロパティを参照してください。