IMDS 認証情報プロバイダー - AWS SDKs および ツール

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IMDS 認証情報プロバイダー

Instance Metadata Service (IMDS) は、実行中のインスタンスを設定または管理するために使用できるインスタンスに関するデータを提供します。利用可能なデータの詳細については、「Amazon ユーザーガイド」の「インスタンスメタデータの使用」を参照してください。 EC2 Amazon EC2 は、インスタンスにさまざまな情報を提供できるローカルエンドポイントを提供します。インスタンスにロールがアタッチされている場合は、そのロールに有効な認証情報のセットが使用できます。SDKs は、そのエンドポイントを使用して、デフォルトの認証情報プロバイダーチェーン の一部として認証情報を解決できます。インスタンスメタデータサービスバージョン 2 (IMDSv2) は、セッショントークンIMDSを使用する のより安全なバージョンであり、デフォルトで使用されます。再試行できない状態 (HTTPエラーコード 403、404、405) が原因で失敗した場合、 IMDSv1はフォールバックとして使用されます。

この機能を設定するには、以下のように使用します。

AWS_EC2_METADATA_DISABLED - 環境変数

Amazon EC2 Instance Metadata Service (IMDS) を使用して認証情報を取得しようとするかどうか。

デフォルト値: false

有効値:

  • true – 認証情報の取得IMDSに を使用しないでください。

  • false – 認証情報を取得IMDSするために使用します。

ec2_metadata_v1_disabled - 共有 AWS configファイル設定
AWS_EC2_METADATA_V1_DISABLED - 環境変数
aws.disableEc2MetadataV1 - JVMシステムプロパティ: Java/Kotlin のみ

がIMDSv2失敗した場合、インスタンスメタデータサービスバージョン 1 (IMDSv1) をフォールバックとして使用するかどうか。

注記

新しい SDKsは IMDSv1 をサポートしていないため、この設定はサポートされていません。詳細については、表 との互換性 AWS SDKs を参照してください。

デフォルト値: false

有効値:

  • true – フォールバックIMDSv1として を使用しないでください。

  • false – フォールバックIMDSv1として を使用します。

ec2_metadata_service_endpoint - 共有 AWS configファイル設定
AWS_EC2_METADATA_SERVICE_ENDPOINT - 環境変数
aws.ec2MetadataServiceEndpoint - JVMシステムプロパティ: Java/Kotlin のみ

のエンドポイントIMDS。

デフォルト値: ec2_metadata_service_endpoint_modeIPv4 に等しい場合、デフォルトエンドポイントは http://169.254.169.254 です。ec2_metadata_service_endpoint_modeIPv6 に等しい場合、デフォルトのエンドポイントは http://[fd00:ec2::254] です。

有効な値: 有効な URI。

ec2_metadata_service_endpoint_mode - 共有 AWS configファイル設定
AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE - 環境変数
aws.ec2MetadataServiceEndpointMode - JVMシステムプロパティ: Java/Kotlin のみ

のエンドポイントモードIMDS。

デフォルト値:IPv4

有効な値: IPv4IPv6

注記

IMDS 認証情報プロバイダーは の一部です認証情報プロバイダーチェーン。ただし、IMDS認証情報プロバイダーは、このシリーズの他の複数のプロバイダーの後にのみチェックされます。そのため、プログラムでこのプロバイダーの認証情報を使用する場合は、設定から他の有効な認証情報プロバイダーを削除するか、別のプロファイルを使用する必要があります。または、認証情報プロバイダーチェーンに依存して有効な認証情報を返すプロバイダーを自動的に検出する代わりに、コードでIMDS認証情報プロバイダーの使用を指定します。サービスクライアントを作成するときに、認証情報ソースを直接指定できます。

IMDS 認証情報のセキュリティ

デフォルトでは、 に AWS SDK有効な認証情報が設定されていない場合、 SDKは Amazon EC2 Instance Metadata Service (IMDS) を使用して AWS ロールの認証情報を取得しようとします。この動作は、AWS_EC2_METADATA_DISABLED 環境変数を true に設定することで無効にできます。これにより、不要なネットワークアクティビティが防止され、Amazon EC2 Instance Metadata Service が偽装される可能性のある信頼できないネットワークのセキュリティが強化されます。

注記

AWS SDK 有効な認証情報で設定された クライアントは、これらの設定に関係なく、 IMDSを使用して認証情報を取得することはありません。

Amazon EC2IMDS認証情報の使用を無効にする

この環境変数の設定方法は、使用中のオペレーティングシステムと、変更を持続的にしたいかどうかによって異なります。

Linux および macOS

Linux または macOS を使用しているお客様は、次のコマンドを使用して、この環境変数を設定できます。

$ export AWS_EC2_METADATA_DISABLED=true

この設定を複数のシェルセッションやシステムの再起動後も維持したい場合は、.bash_profile.zsh_profile.profile などの上記のコマンドをシェルプロファイルファイルに追加できます。

Windows

Windows を使用しているお客様は、次のコマンドを使用して、この環境変数を設定できます。

$ set AWS_EC2_METADATA_DISABLED=true

この設定を複数のシェルセッションやシステムの再起動後も維持したい場合は、代わりに以下のコマンドを使用できます。

$ setx AWS_EC2_METADATA_DISABLED=true
注記

setx コマンドは現在のシェルセッションに値を適用しないため、変更を有効にするにはシェルをリロードするか再度開く必要があります。

との互換性 AWS SDKs

このトピックで説明されている機能と設定SDKsを以下に示します。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、 AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。

SDK サポート 注意または詳細情報
AWS CLI v2 あり
SDK C++ 用 あり
SDK Go V2 用 (1.x) あり
SDK Go 1.x (V1) 用 あり 共有 config ファイル設定を使用するには、設定ファイルからの読み込みを有効にする必要があります。「セッション」を参照してください。
SDK for Java 2.x あり
SDK for Java 1.x 部分的 JVM システムプロパティ: com.amazonaws.sdk.disableEc2MetadataV1の代わりに aws.ec2MetadataServiceEndpointを使用しaws.disableEc2MetadataV1aws.ec2MetadataServiceEndpointModeサポートされていません。
SDK JavaScript 3.x 用 あり
SDK JavaScript 2.x 用 あり
SDK Kotlin 用 あり IMDSv1 フォールバックを使用しません。
SDK の 。NET 3.x あり
SDK 3.x PHP 用 あり
SDK for Python (Boto3) あり
SDK Ruby 3.x 用 あり
SDK Rust 用 あり IMDSv1 フォールバックを使用しません。
のツール PowerShell あり を使用して、コードでIMDSv1フォールバックを明示的に無効にできます[Amazon.Util.EC2InstanceMetadata]::EC2MetadataV1Disabled = $true