既存インスタンスのインスタンスメタデータオプションの変更
既存のインスタンスのインスタンスメタデータオプションを変更することが可能です。
また、既存のインスタンスでインスタンスメタデータオプションを変更することをユーザーに禁止する IAM ポリシーを作成することもできます。インスタンスメタデータオプションを変更できるユーザーをコントロールするには、指定したロールを持つユーザー以外のすべてのユーザーに ModifyInstanceMetadataOptions API の使用を禁止するポリシーを指定できます。IAM ポリシーの例については、「インスタンスメタデータの使用」を参照してください。
IMDSv2 の使用を要求する
既存のインスタンスに対して、インスタンスメタデータのリクエスト時に IMDSv2 が使用されるようにするため、既存のインスタンスメタデータオプションを変更します。IMDSv2 が必須である場合、IMDSv1 は使用できません。
IMDSv2 の使用を要求する前に、インスタンスが IMDSv1 呼び出しを行っていないことを確認してください。MetadataNoToken
CloudWatch メトリクスは IMDSv1 呼び出しを追跡します。あるインスタンスの MetadataNoToken
で IMDSv1 の使用量がゼロと記録されている場合は、そのインスタンスは IMDSv2 を要求できます。
- Console
-
既存インスタンスでの IMDSv2 の使用を義務付けるには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[インスタンス] を選択します。
-
インスタンスを選択します。
-
[アクション]、[インスタンスの設定]、[インスタンスメタデータのオプションを変更] の順に選択します。
-
[インスタンスメタデータオプションの変更] ダイアログボックスで、次の操作を行います。
-
[インスタンスメタデータサービス] で、[有効にする] を選択します。
-
[IMDSv2] の場合は、[必須] を選択します。
-
[Save] を選択します。
- AWS CLI
-
既存インスタンスでの 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
- PowerShell
-
既存インスタンスでの IMDSv2 の使用を義務付けるには
Edit-EC2InstanceMetadataOption コマンドレットを使って、HttpTokens
パラメータを required
に設定できます。HttpTokens
の値を指定する場合は、HttpEndpoint
も enabled
に設定する必要があります。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpTokens required `
-HttpEndpoint enabled).InstanceMetadataOptions
IMDSv1 の使用を再開します
IMDSv2 が必須である場合、インスタンスメタデータのリクエスト時に IMDSv1 は機能しません。IMDSv2 がオプションである場合、IMDSv2 と IMDSv1 の両方が機能します。したがって、IMDSv1 を復元するには、次のいずれかの方法を使用して IMDSv2 をオプションとします。
- Console
-
インスタンスで IMDSv1 の使用を復元するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[インスタンス] を選択します。
-
インスタンスを選択します。
-
[アクション]、[インスタンスの設定]、[インスタンスメタデータのオプションを変更] の順に選択します。
-
[インスタンスメタデータオプションの変更] ダイアログボックスで、次の操作を行います。
-
[インスタンスメタデータサービス] で、[有効にする] が選択されていることを確認します。
-
[IMDSv2] の場合は、[オプション] を選択します。
-
[Save] を選択します。
- AWS CLI
-
インスタンスで 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
- PowerShell
-
インスタンスで IMDSv1 の使用を復元するには
Edit-EC2InstanceMetadataOption コマンドレットを、HttpTokens
を optional
に設定して実行すると、インスタンスメタデータのリクエスト時に IMDSv1 の使用を復元できます。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpTokens optional `
-HttpEndpoint enabled).InstanceMetadataOptions
PUT レスポンスホップリミットを変更する
既存インスタンスについて、PUT
リスポンスホップリミットの設定を変更することができます。
現在、PUT 応答ホップ制限の変更をサポートしているのは、AWS CLI と AWS SDK のみです。
- AWS CLI
-
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-limit 3
\
--http-endpoint enabled
- PowerShell
-
PUT レスポンスホップリミットを変更するには
Edit-EC2InstanceMetadataOption コマンドレットを使って、HttpPutResponseHopLimit
パラメータを必要なホップ数に設定できます。以下の例では、ホップリミットが3
に設定されています。HttpPutResponseHopLimit
の値を指定する場合は、HttpEndpoint
を enabled
に設定することも必要です。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpPutResponseHopLimit 3 `
-HttpEndpoint enabled).InstanceMetadataOptions
IMDS IPv4 および IPv6 エンドポイントを有効にする
IMDS のインスタンスには、IPv4 (169.254.169.254
) と IPv6 ([fd00:ec2::254]
) という 2 つのエンドポイントがあります。IMDS を有効にすると、IPv4 エンドポイントが自動的に有効になります。IPv6 専用サブネットに対してインスタンスを起動しても、その IPv6 エンドポイントは無効のままになります。IPv6 エンドポイントを有効にするには、明示的に有効にする必要があります。IPv6 エンドポイントを有効にしても、IPv4 エンドポイントは有効なままになります。
IPv6 エンドポイントは、インスタンス起動時またはその後に有効にできます。
現在、AWS CLI と AWS SDK のみがインスタンス起動後の IMDS IPv6 エンドポイントの有効化をサポートします。
- AWS CLI
-
インスタンスで IMDS IPv6 エンドポイントを有効にするには
modify-instance-metadata-optionsCLI コマンドを使って、http-protocol-ipv6
パラメータを enabled
に設定できます。http-protocol-ipv6
の値を指定する場合は、http-endpoint
を enabled
に設定することも必要です。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567898abcdef0
\
--http-protocol-ipv6 enabled \
--http-endpoint enabled
- PowerShell
-
インスタンスで IMDS IPv6 エンドポイントを有効にするには
Edit-EC2InstanceMetadataOption コマンドレットを使って、HttpProtocolIpv6
パラメータを enabled
に設定できます。HttpProtocolIpv6
の値を指定する場合は、HttpEndpoint
を enabled
に設定することも必要です。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpProtocolIpv6 enabled `
-HttpEndpoint enabled).InstanceMetadataOptions
使用中の IMDS のバージョンに関係なく、IMDS の HTTP エンドポイントを無効にすることによりインスタンスメタデータへのアクセスをオフにすることができます。HTTP エンドポイントを無効化することにより、この変更はいつでも元に戻すことができます。
次のいずれかの方法を使用して、インスタンスのインスタンスメタデータへのアクセスを有効にします。
- Console
-
インスタンスメタデータへのアクセスを有効にするには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[インスタンス] を選択します。
-
インスタンスを選択します。
-
[アクション]、[インスタンスの設定]、[インスタンスメタデータのオプションを変更] の順に選択します。
-
[インスタンスメタデータオプションの変更] ダイアログボックスで、次の操作を行います。
-
[インスタンスメタデータサービス] で、[有効にする] を選択します。
-
[Save] を選択します。
- AWS CLI
-
インスタンスメタデータへのアクセスを有効にするには
modify-instance-metadata-optionsCLI コマンドを使って、http-endpoint
パラメータを enabled
に設定できます。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567898abcdef0
\
--http-endpoint enabled
- PowerShell
-
インスタンスメタデータへのアクセスを有効にするには
Edit-EC2InstanceMetadataOption コマンドレットを使って、HttpEndpoint
パラメータを enabled
に設定できます。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpEndpoint enabled).InstanceMetadataOptions
使用中のインスタンスメタデータサービスのバージョンに関係なく、IMDS の HTTP エンドポイントを無効にすることにより IMDS へのアクセスをオフにすることができます。HTTP エンドポイントを有効化することにより、この変更はいつでも元に戻すことができます。
インスタンスのインスタンスメタデータへのアクセスを無効にするには、次のいずれかの方法を使用します。
- Console
-
インスタンスメタデータへのアクセスを無効にするには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[インスタンス] を選択します。
-
インスタンスを選択します。
-
[アクション]、[インスタンスの設定]、[インスタンスメタデータのオプションを変更] の順に選択します。
-
[インスタンスメタデータオプションの変更] ダイアログボックスで、次の操作を行います。
-
[インスタンスメタデータサービス] では、[有効にする] をオフにします。
-
[Save] を選択します。
- AWS CLI
-
インスタンスメタデータへのアクセスを無効にするには
modify-instance-metadata-optionsCLI コマンドを使って、http-endpoint
パラメータを disabled
に設定できます。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567898abcdef0
\
--http-endpoint disabled
- PowerShell
-
インスタンスメタデータへのアクセスを無効にするには
Edit-EC2InstanceMetadataOption コマンドレットを使って、HttpEndpoint
パラメータを disabled
に設定できます。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpEndpoint disabled).InstanceMetadataOptions