インスタンスアイデンティティドキュメント - Amazon Elastic Compute Cloud

インスタンスアイデンティティドキュメント

作成する各インスタンスには、インスタンス自体に関する情報を提供するインスタンスアイデンティティドキュメントがあります。インスタンスアイデンティティドキュメントを使用して、インスタンスの属性を検証することができます。

インスタンスアイデンティティドキュメントは、インスタンスが停止して起動、再起動、起動するときに生成されます。インスタンスアイデンティティドキュメントは、インスタンスが作成されてインスタンスメタデータサービス (IMDS) によって (プレーンテキストの JSON 形式で) 公開されます。IPv4 アドレス 169.254.169.254 は、リンクローカルアドレスで、インスタンスからのみ有効です。詳細については、Wikipedia の「リンクローカルアドレス」を参照してください。IPv6 アドレス [fd00:ec2::254] は、リンクローカルアドレスで、インスタンスからのみ有効です。詳細については、Wikipedia の ユニークなローカルアドレスを参照してください。

注記

このセクションの例では、IMDS の IPv4 アドレス 169.254.169.254 を使用します。IPv6 アドレスを使用して EC2 インスタンスのインスタンスメタデータを取得する場合は、IPv6 アドレスを有効にして使用してください。[fd00:ec2::254]。IMDS の IPv6 アドレスは、IMDSv2 コマンドと互換性があります。IPv6 アドレスは、AWS Nitro System 上に構築されたインスタンスでのみアクセス可能です。

インスタンスアイデンティティドキュメントは、実行中のインスタンスからいつでも取得できます。インスタンスアイデンティティドキュメントには、以下の情報が含まれています。

データ 説明
accountId

インスタンスを起動した AWS アカウントの ID。

architecture

インスタンスの作成に使用された AMI のアーキテクチャ (i386 | x86_64 | arm64)。

availabilityZone

インスタンスが実行されているアベイラビリティーゾーン。

billingProducts

インスタンスの請求製品。

devpayProductCodes

廃止済み。

imageId

インスタンスの起動に使用される AMI の ID。

instanceId

インスタンスの ID。

instanceType

インスタンスのインスタンスタイプ。

kernelId

インスタンスに関連付けられているカーネルの ID (ある場合)。

marketplaceProductCodes

インスタンスの作成に使用された AMI の AWS Marketplace 製品コード。

pendingTime

インスタンスが作成された日時。

privateIp

インスタンスのプライベート IPv4 アドレス。

ramdiskId

インスタンスに関連付けられている RAM ディスクの ID (ある場合)。

region

インスタンスが実行されているリージョン。

version

インスタンスアイデンティティドキュメント形式のバージョン。

プレーンテキストの インスタンスアイデンティティドキュメント を取得する

プレーンテキストのインスタンスアイデンティティドキュメントを取得するには

インスタンスに接続し、インスタンスで使用されている IMDS のバージョンに応じて、次のいずれかのコマンドを実行します。

IMDSv2
PS C:\> [string]$token = (Invoke-WebRequest -Method Put -Headers @{'X-aws-ec2-metadata-token-ttl-seconds' = '21600'} http://169.254.169.254/latest/api/token).Content
PS C:\> (Invoke-WebRequest -Headers @{'X-aws-ec2-metadata-token' = $Token} http://169.254.169.254/latest/dynamic/instance-identity/document).Content
IMDSv1
PS C:\> (Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/document).Content

以下は出力例です。

{ "devpayProductCodes" : null, "marketplaceProductCodes" : [ "1abc2defghijklm3nopqrs4tu" ], "availabilityZone" : "us-west-2b", "privateIp" : "10.158.112.84", "version" : "2017-09-30", "instanceId" : "i-1234567890abcdef0", "billingProducts" : null, "instanceType" : "t2.micro", "accountId" : "123456789012", "imageId" : "ami-5fb8c835", "pendingTime" : "2016-11-19T16:32:11Z", "architecture" : "x86_64", "kernelId" : null, "ramdiskId" : null, "region" : "us-west-2" }

インスタンスアイデンティティドキュメント の検証

インスタンスアイデンティティドキュメントの内容を重要な用途に使用する場合は、使用前にその内容と真正性を検証する必要があります。

プレーンテキストのインスタンスアイデンティティドキュメントには、ハッシュ化および暗号化された署名が 3 つあります。これらの署名を使用して、インスタンスアイデンティティドキュメントの作成元および真正性とそれに含まれている情報を検証できます。提供されている署名は次のとおりです。

  • base64 でエンコードされた署名—RSA キーペアを使用して暗号化されたインスタンスアイデンティティドキュメントの base64 でエンコードされた SHA256 ハッシュです。

  • PKCS7 署名—DSA キーペアを使用して暗号化されたインスタンスアイデンティティドキュメントの SHA1 ハッシュです。

  • RSA-2048 署名—RSA-2048 キーペアを使用して暗号化されたインスタンスアイデンティティドキュメントの SHA256 ハッシュです。

それぞれの署名は、インスタンスメタデータの異なるエンドポイントで取得できます。ハッシュ化と暗号化の要件に応じて、これらの署名のいずれかを使用できます。署名を検証するには、対応する AWS パブリック証明書を使用する必要があります。

以下のトピックでは、それぞれの署名を使用してインスタンスアイデンティティドキュメントを検証するための詳細な手順について説明します。