インスタンスメタデータオプションの設定
インスタンスメタデータオプションを使用すると、新規または既存のインスタンスで次の操作を実行するように設定できます。
-
インスタンスメタデータをリクエストするときに IMDSv2 の使用を要求する
-
PUT
レスポンスのホップ制限を指定する -
インスタンスメタデータへのアクセスを無効にする
IAM ポリシーまたは SCP で IAM 条件キーを使用して、次の操作を行うこともできます。
-
IMDSv2 の使用を要求するようにインスタンスが設定されている場合にのみ、インスタンスの起動を許可する
-
ホップの許可数を制限する
-
インスタンスメタデータへのアクセスを無効にする
PowerShell のバージョンが 4.0 より前の場合は、IMDSv2 の使用を要求するために Windows Management Framework 4.0 に更新
注意深く実行し、変更を行う前に慎重なテストを実施する必要があります。以下の情報を記録します。
-
IMDSv2の使用を強制する場合、インスタンスメタデータアクセスのためにIMDSv1を使用するアプリケーションまたはエージェントは休憩します。
-
インスタンスメタデータへのアクセスをすべてオフにする場合、インスタンスメタデータアクセスに依存して機能するアプリケーションまたはエージェントは休憩します。
-
IMDSv2 でトークンを取得する際には、
/latest/api/token
を使用する必要があります。
新規インスタンスのインスタンスメタデータオプションの設定
インスタンスの起動時に、インスタンスで IMDSv2 を使用することを要求できます。また、新しいインスタンスで IMDSv2 の使用を要求しない限り、新しいインスタンスの起動をユーザーに禁止する IAM ポリシーを作成することもできます。
すべての新しいインスタンスでIMDSv2の使用を強制するには
IAM ユーザーがインスタンスメタデータをリクエストする際にIMDSv2の使用を義務付けるインスタンスみを起動できるようにするには、IMDSv2を必要とする条件が満たされないとインスタンスを起動できないように指定することができます。IAM ポリシーの例については、「インスタンスメタデータの使用」を参照してください。
IPv4 および IPv6 エンドポイントの設定
デフォルトでは、IPv6 エンドポイントは無効です。これは、IPv6 専用サブネットでインスタンスを起動する場合にも当てはまります。インスタンスの起動時にこのエンドポイントを有効にすることを選択できます。IMDS の IPv6 エンドポイントは、Nitro System 上に構築されたインスタンス上でのみアクセスできます。メタデータオプションの詳細については、「AWS CLI コマンドリファレンス」の「run-instances」を参照してください。次の例では、IMDS で IPv6 のエンドポイントを有効にする方法を示しています。
aws ec2 run-instances --image-id
ami-0abcdef1234567890
--instance-typet3.large
... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
既存インスタンスのインスタンスメタデータオプションの変更
既存インスタンスで IMDSv2 を使用することを要求できます。また、既存インスタンスで PUT レスポンスのホップ制限を変更したり、インスタンスメタデータへのアクセスを無効にしたりすることもできます。また、既存インスタンスでインスタンスメタデータオプションを変更することをユーザーに禁止する IAM ポリシーを作成することもできます。
現在、既存のインスタンスでのインスタンスメタデータオプションの変更は、AWS SDK もしくは AWS CLI のみでサポートされます。Amazon EC2 コンソールを使用して、インスタンスメタデータオプションを変更することはできません。
IMDSv2 の使用を必須にするには
既存インスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 の使用を必須にするようにオプトインできます。modify-instance-metadata-optionsCLI コマンドを使って、http-tokens
パラメータを required
に設定できます。http-tokens
の値を指定する場合は、http-endpoint
も enabled
に設定する必要があります。
aws ec2 modify-instance-metadata-options \ --instance-id
i-1234567898abcdef0
\ --http-tokens required \ --http-endpoint enabled
PUT レスポンスホップリミットを変更するには
既存インスタンスについて、PUT
リスポンスホップリミットの設定を変更することができます。modify-instance-metadata-options CLI コマンドを使って、http-put-response-hop-limit
パラメータを必要なホップ数に設定できます。以下の例では、ホップリミットが3
に設定されています。http-put-response-hop-limit
の値を指定する場合は、http-endpoint
を enabled
に設定することも必要です。
aws ec2 modify-instance-metadata-options \ --instance-id
i-1234567898abcdef0
\ --http-put-response-hop-limit3
\ --http-endpoint enabled
IMDSv2 を使用してインスタンスで IMDSv1 の使用を復元するには
modify-instance-metadata-options CLI コマンドを、http-tokens
を optional
に設定して実行すると、インスタンスメタデータのリクエスト時に IMDSv1 の使用を復元できます。
aws ec2 modify-instance-metadata-options \ --instance-id
i-1234567898abcdef0
\ --http-tokens optional \ --http-endpoint enabled
インスタンスの IPv6 エンドポイントを有効にするには
デフォルトでは、IPv6 エンドポイントは無効です。これは、インスタンスを IPv6 専用サブネットで起動した場合にも当てはまります。IMDS の IPv6 エンドポイントは、Nitro System 上に構築されたインスタンス上でのみアクセスできます。メタデータオプションの詳細については、「AWS CLI コマンドリファレンス」の「modify-instance-metadata-options」を参照してください。次の例は、インスタンスメタデータサービスの IPv6 エンドポイントを有効にする方法を示しています。
aws ec2 modify-instance-metadata-options \ --instance-id
i-1234567898abcdef0
\ --http-protocol-ipv6 enabled \ --http-endpoint enabled
インスタンスメタデータへのアクセスを無効にするには
使用中のインスタンスメタデータサービスのバージョンに関係なく、インスタンスメタデータサービスの HTTP エンドポイントを無効にすることによりインスタンスメタデータへのアクセスをオフにすることができます。HTTP エンドポイントを有効化することにより、この変更はいつでも元に戻すことができます。modify-instance-metadata-optionsCLI コマンドを使って、http-endpoint
パラメータを disabled
に設定できます。
aws ec2 modify-instance-metadata-options \ --instance-id
i-1234567898abcdef0
\ --http-endpoint disabled
modify-instance-metadata-options の使用を制御するには
インスタンスメタデータオプションを変更できる IAM ユーザーをコントロールするには、指定したロールを持つユーザー以外のすべてのユーザーに ModifyInstanceMetadataOptions API の使用を禁止するポリシーを指定できます。IAM ポリシーの例については、「インスタンスメタデータの使用」を参照してください。