すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:インスタンスメタデータの取得

最終更新日:Nov 20, 2024

ECS (Elastic Compute Service) インスタンスのメタデータは、メタデータサービスを使用してインスタンスから取得される情報 (インスタンス属性など) です。 インスタンス属性には、インスタンスID、仮想プライベートクラウド (VPC) 情報、およびネットワークインターフェイスコントローラ (NIC) 情報が含まれます。 メタデータサービスを使用すると、ECSコンソールにログインしたり、API操作を呼び出したりすることなく、ECSインスタンス内の情報にアクセスできます。 メタデータサービスを使用すると、実行中状態のECSインスタンス、またはECSインスタンスでホストされているアプリケーションをより便利で安全な方法で設定または管理することもできます。 たとえば、ECSインスタンスで実行されるアプリケーションは、インスタンスメタデータにアクセスして、インスタンスにアタッチされているRAM (Resource access Management) ロールのSTS (Security Token Service) トークンを取得できます。 その後、アプリケーションはトークンを使用して、Object Storage Service (OSS) リソース、Key Management Service (KMS) リソース、その他のECSリソースなどのリソースにアクセスできます。

制限事項

  • VPCに存在するECSインスタンスのみがインスタンスメタデータをサポートします。

  • ECSインスタンスのメタデータにアクセスするには、インスタンスからメタデータサーバーにアクセスし、インスタンスが [実行中] 状態であることを確認する必要があります。

  • 単一のECSインスタンスからメタデータサーバーに頻繁にアクセスする場合、アクセスリクエストが抑制される可能性があります。

    1つのECSインスタンスのメタデータに頻繁にアクセスする場合は、上記の問題を防ぐために、取得したインスタンスメタデータをキャッシュすることをお勧めします。 たとえば、一時的なRAMアクセス資格情報を取得した後、資格情報をキャッシュし、資格情報の有効期限が切れる前に資格情報を再取得することをお勧めします。

インスタンスメタデータの取得

メタデータサービスにアクセスして、インスタンスメタデータを取得できます。 インスタンスメタデータには、インスタンスID、VPC情報、NIC情報が含まれます。

手順

説明
  • ECSインスタンスまたはインスタンスのメタデータに機密データが含まれている場合は、アクセス制御やデータ暗号化などの適切な方法を使用してデータを保護することを推奨します。

  • 通常モードまたはセキュリティ強化モードでメタデータサーバーにアクセスして、インスタンスメタデータを取得できます。 モードの詳細については、このトピックの「インスタンスメタデータアクセスモード」をご参照ください。

セキュリティ強化モード

重要

メタデータを取得するECSインスタンスにcloud-init 23.2.2がインストールされていることを確認します。 ECSインスタンスにインストールされているcloud-initのバージョンが23.2.2でない場合、cloud-initをバージョン23.2.2にアップグレードします。 ECSインスタンスのcloud-initのバージョンを確認およびアップグレードする方法については、「cloud-initのインストール」をご参照ください。

  • Linuxインスタンス

    # Obtain metadata server access credentials and specify a validity period for the credentials. Do not include the X-Forwarded-For header in the access request.
    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<Validity period of the metadata server access credentials>"`
    # Access the instance metadata.
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/<metadata>
  • Windowsインスタンス

    # Obtain metadata server access credentials and specify a validity period for the credentials. Do not include the X-Forwarded-For header in the access request.
    $token=Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<Validity period of the metadata server access credentials>"} -Method PUT -Uri http://100.100.100.200/latest/api/token
    # Access the instance metadata.
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/<metadata>
    • <メタデータサーバーのアクセス資格情報の有効期間>: データセキュリティを強化するために、メタデータサーバーのアクセス資格情報の有効期間を指定します。 有効な値: 1 ~ 21600 単位は秒です。

      • 上記のコマンドを繰り返し実行して、メタデータサーバーのアクセス資格情報の有効期間内にECSインスタンスのメタデータアイテムにアクセスできます。 有効期間が終了したら、メタデータサーバーのアクセス資格情報を再取得します。 メタデータサーバーのアクセス資格情報を再取得しない場合、インスタンスのメタデータにアクセスできません。

      • メタデータサーバーのアクセス資格情報はECSインスタンスに関連付けられています。 ECSインスタンスのメタデータサーバーアクセス資格情報をコピーして別のECSインスタンスにアクセスすると、アクセスは拒否されます。

    • <metadata>: このパラメーターを、アクセスするメタデータ項目に置き換えます。 インスタンスメタデータ項目の詳細については、このトピックの「インスタンスメタデータ項目」をご参照ください。

通常モード

重要

通常モードでは、リクエストはIPアドレスに基づいて認証されます。 正しくないリバースプロキシ設定やパッチを適用されていないサーバー側のリクエストフォージェリ (SSRF) の脆弱性など、ECSインスタンスに問題が存在する場合、インスタンスにアタッチされているRAMロールのSTS一時アクセス資格情報が漏洩する可能性があります。

  • Linuxインスタンス

    curl http://100.100.100.200/latest/meta-data/<metadata>
  • Windowsインスタンス (PowerShell)

    Invoke-RestMethod http://100.100.100.200/latest/meta-data/<metadata>

<metadata>: このパラメーターを、アクセスするメタデータ項目に置き換えます。 インスタンスメタデータ項目の詳細については、このトピックの「インスタンスメタデータ項目」をご参照ください。

次の例では、ECSインスタンスのVPC IDが取得されます。

セキュリティ強化モード

次の例では、<メタデータサーバーのアクセス資格情報の有効期間> を180秒に設定します。

  • Linuxインスタンス

    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:180"`
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/vpc-id
  • Windowsインスタンス

    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "180"} -Method PUT –Uri http://100.100.100.200/latest/api/token
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/vpc-id

通常モード

  • Linuxインスタンス

    curl http://100.100.100.200/latest/meta-data/vpc-id
  • Windowsインスタンス

    Invoke-RestMethod http://100.100.100.200/latest/meta-data/vpc-id

インスタンスメタデータのアクセスモード

デフォルトでは、通常モードとセキュリティ強化モードでインスタンスメタデータにアクセスできます。 セキュリティを強化するために、セキュリティ強化モードのみをサポートするようにECSインスタンスを設定できます。

違い通常モードとセキュリティ強化モード

項目

通常モード

セキュリティ強化モード

相互作用パターン

リクエスト-レスポンス。

セッション指向。

認証方法

認証には同じVPC内の送信元IPアドレスを使用します。

同じVPC内の送信元IPアドレスと、認証にメタデータサーバーのアクセス資格情報を使用します。

メタデータサーバーのアクセス資格情報には、次の特徴があります。

  • メタデータサーバーのアクセス資格情報は短命で、最大6時間有効です。 有効期間が終了すると、メタデータサーバーのアクセス資格情報は期限切れになり、再取得する必要があります。

  • メタデータサーバーのアクセス資格情報はECSインスタンスに関連付けられています。 ECSインスタンスのメタデータサーバーアクセス資格情報をコピーして別のECSインスタンスにアクセスすると、アクセスは拒否されます。

  • メタデータサーバーのアクセス資格情報は、プロキシアクセスをサポートしていません。 リクエストにX-Forwarded-Forヘッダーが含まれている場合、メタデータサーバーはアクセス資格情報を発行しません。

アクセス方式

コマンドを使用して、アクセス資格情報を使用せずにエンドポイントにアクセスできます。

インスタンスメタデータのセキュリティを強化するには、認証用のメタデータサーバーアクセス資格情報を取得してから、エンドポイントにアクセスします。

セキュリティレベル

リクエストはIPアドレスに基づいて認証されます。 攻撃者は、リクエストでソースIPアドレスを偽造して、IPアドレスベースの認証を回避し、SSRF攻撃を開始できます。 その結果、インスタンスメタデータが漏洩する可能性がある。

高い

インスタンスメタデータにアクセスする前に、認証と承認のために有効なメタデータサーバーアクセス資格情報を取得する必要があります。 メタデータサーバーのアクセス資格情報はECSインスタンスで生成され、ECSインスタンスに関連付けられます。 メタデータサーバーのアクセス資格情報には有効期間があります。 メタデータサーバーのアクセス資格情報は、攻撃者が推測または偽造して、ほとんどのSSRF攻撃から防御するのに役立ちます。

cloud-initバージョンの要件

なし

cloud-init 23.2.2がECSインスタンスにインストールされていることを確認します。

重要
  • 特定の最新のパブリックイメージはcloud-init 23.2.2をサポートしています。 RunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成する場合、ImageIdパラメーターをcloud-init 23.2.2をサポートするパブリックイメージのIDに設定できます。 cloud-init 23.2.2をサポートするパブリックイメージから作成されたECSインスタンスは、セキュリティ強化モードをサポートしています。 cloud-init 23.2.2をサポートするパブリックイメージの詳細については、「リリースノート」をご参照ください。

  • 既存のECSインスタンスのcloud-initのバージョンが23.2.2でない場合、cloud-initをバージョン23.2.2にアップグレードしてセキュリティ強化モードを使用できます。 ECSインスタンスのcloud-initのバージョンを確認およびアップグレードする方法については、「cloud-initのインストール」をご参照ください。

インスタンスメタデータアクセスモードの設定

新しいインスタンス

  • ECSコンソールの使用

    ECSコンソールでECSインスタンスを作成すると、Metadata Access Modeパラメーターは自動的に通常モードとセキュリティ強化モードに設定されます。

    image

  • API操作の呼び出し

    RunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成する場合、HttpTokensパラメーターを使用してインスタンスメタデータアクセスモードを指定します。 HttpTokensパラメータの有効値:

    • optional: セキュリティ強化モードを強制的に使用しません。 通常モードとセキュリティ強化モードでインスタンスメタデータにアクセスできます。

    • required: セキュリティ強化モードを強制的に使用します。 このパラメーターを必須に設定すると、通常モードでインスタンスメタデータにアクセスできなくなります。

既存インスタンス

  • ECSコンソールの使用

    1. インスタンスリストページで、管理するECSインスタンスを見つけます。 [操作] 列で、[icon1] > [インスタンス設定] [インスタンスメタデータアクセス情報の変更] を選択します。

      image.png

    2. [インスタンスメタデータのアクセスチャネルの有効化] をオンにし、[インスタンスメタデータアクセスモード] パラメーターを設定します。 Instance Metadata Access Modeパラメータの有効値:

      • 通常モード: 通常モードまたはセキュリティ強化モードでインスタンスメタデータにアクセスできます。

      • セキュリティ強化モード (推奨): セキュリティ強化モードでのみインスタンスメタデータにアクセスできます。

  • API操作の呼び出し

    ModifyInstanceMetadataOptions操作を呼び出して既存のECSインスタンスのメタデータを変更する場合は、HttpTokensパラメーターを使用してインスタンスメタデータアクセスモードを指定します。 HttpTokensパラメータの有効値:

    • optional: セキュリティ強化モードを強制的に使用しません。 通常モードとセキュリティ強化モードでインスタンスメタデータにアクセスできます。

    • required: セキュリティ強化モードを強制的に使用します。 このパラメーターを必須に設定すると、通常モードでインスタンスメタデータにアクセスできなくなります。

RAMユーザーのメタデータサーバーアクセスモードをセキュリティ強化モードに制限

権限ポリシーを使用して、Alibaba CloudアカウントのすべてのRAMユーザーがRunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成する場合、またはModifyInstanceMetadataOptions操作を呼び出して既存のECSインスタンスのメタデータを変更する場合にのみ、セキュリティ強化モードでインスタンスメタデータにアクセスできるようにすることができます。 次のサンプルコードは、ポリシーの内容の例を示しています。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ecs:RunInstances",
        "ecs:CreateInstance",
        "ecs:ModifyInstanceMetadataOptions"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ecs:SecurityHardeningMode": [
            "false"
          ]
        }
      }
    }
  ]
}

権限ポリシーの作成方法については、「カスタムポリシーの作成」トピックの [JSON] タブでカスタムポリシーを作成するセクションをご参照ください。

重要

セキュリティ強化モードのみをサポートするECSインスタンスのメタデータにアクセスする前に、cloud-init 23.2.2がインスタンスにインストールされていることを確認してください。 ECSインスタンスのcloud-initのバージョンが23.2.2でない場合、インスタンスが起動できない可能性があります。 ECSインスタンスのcloud-initのバージョンを確認およびアップグレードする方法については、「cloud-initのインストール」をご参照ください。

インスタンスメタデータ項目

メタデータアイテム

説明

dns-conf/nameservers

インスタンスのドメインネームシステム (DNS) 設定。

100.100.XX.XX

hostname

インスタンスのホスト名。

iZbp13znx0m0me8cquu ****

インスタンス /インスタンスタイプ

インスタンスタイプです。

ecs.g6e.large

インスタンス /インスタンス名

インスタンスの名前です。

iZbp1bfqfsvqzxhmnd5 ****

image-id

インスタンスの作成に使用されるイメージのID。

aliyun_3_x64_20G_alibase_20210425.vhd

image/market-place/product-code

Alibaba Cloud Marketplaceイメージの製品コード。

cmjj01 ****

image/market-place/charge-type

Alibaba Cloud Marketplaceイメージの課金方法。

PrePaid

instance-id

インスタンスの ID です。

i-bp13znx0m0me8cquu ****

mac

インスタンスのメディアアクセス制御 (MAC) アドレス。 インスタンスに複数のNICがある場合、eth0 NICのMACアドレスのみが表示されます。

00:16:3e:0f:XX:XX

network-type

インスタンスのネットワークタイプです。 VPCにデプロイされたインスタンスのみがこのメタデータ項目をサポートします。

vpc

network/interfaces/macs/[mac]/network-interface-id

NICの識別子。 [mac] をインスタンスのMACアドレスに置き換えます。

eni-bp1b2c0jvnj0g17b ****

ネットワーク /インターフェイス /macs/[mac]/netmask

NICのサブネットマスク。

255.255.XX.XX

ネットワーク /インターフェイス /macs/[mac]/vswitch-cidr-block

NICが接続されているvSwitchのIPv4 CIDRブロック。

192.168.XX.XX/24

ネットワーク /インターフェイス /macs/[mac]/vpc-cidr-block

NICが属するVPCのIPv4 CIDRブロック。

192.168.XX.XX/16

ネットワーク /インターフェース /macs/[mac]/private-ipv4s

NICに割り当てられているプライベートIPv4アドレス。

["192.168.XX.XX"]

network/interfaces/macs/[mac]/vswitch-id

NICのセキュリティグループに関連付けられているvSwitchのID。

vsw-bp1ygryo03m39xhsy ****

ネットワーク /インターフェイス /macs/[mac]/vpc-id

NICのセキュリティグループが属するVPCのID。

vpc-bp1e0g399hkd7c8q3 ****

network/interfaces/macs/[mac]/primary-ip-address

NICのプライマリプライベートIPアドレス。

192.168.XX.XX

ネットワーク /インターフェイス /macs/[mac]/gateway

NICのIPv4ゲートウェイアドレス。

192.168.XX.XX

インスタンス /max-netbw-egress

インスタンスの最大アウトバウンド内部帯域幅。 単位:Kbit/秒

1228800

ネットワーク /インターフェース /macs/[mac]/ipv4-prefixes

NICに割り当てられているプライベートIPv4プレフィックスリスト。

192.168.XX.XX/28

ネットワーク /インターフェース /macs/[mac]/ipv6-prefixes

NICに割り当てられているプライベートIPv6プレフィックスリスト。

2001:db8:1234:1a00:XXXX::/80

ディスク /

ディスクのシリアル番号。

bp131n0q38u3a4zi ****

ディスク /[ディスクシリアル]/id

ディスクの ID です。

d-bp131n0q38u3a4zi ****

ディスク /[ディスクシリアル] /名前

ディスクのパラメーター名

testDiskName

private-ipv4

プライマリNICのプライベートIPv4アドレス。

192.168.XX.XX

public-ipv4

プライマリNICのパブリックIPv4アドレス。

120.55.XX.XX

eipv4

このメタデータアイテムは、次の情報を取得するために使用されます。

  • システムに割り当てられたインスタンスのパブリックIPv4アドレス

  • プライマリNICに関連付けられているエラスティックIPv4アドレス

120.55.XX.XX

ntp-conf/ntp-servers

ネットワークタイムプロトコル (NTP) サーバーのアドレス。

ntp1.aliyun.com

owner-account-id

インスタンスが属するAlibaba CloudアカウントのID。

1609 ****

region-id

インスタンスのリージョン ID です。

cn-hangzhou

zone-id

インスタンスのゾーン ID です。

cn-hangzhou-i

public-keys/[keypair-id]/openssh-key

インスタンスの公開キー。 このメタデータアイテムは、インスタンスの作成中に公開キーがインスタンスにバインドされている場合にのみ使用できます。

ssh-rsa **** 3NzaC1yc2EAAAADAQABAAABAQDLNbE7pS **** @ ****.com

serial-number

インスタンスのシリアル番号。

4acd2b47-b328-4762-852f-998 ****

source-address

YUMまたはAPTイメージリポジトリのアドレス。 Linuxインスタンスのパッケージ管理ソフトウェアは、イメージリポジトリから更新を取得できます。

http://mirrors.cloud.aliyuncs.com

kms-server

WindowsインスタンスがWindowsをアクティブ化するために使用するKey Management Service (KMS) サーバー。

kms.cloud.aliyuncs.com

wsus-server/wu-server

Windowsインスタンスの更新サーバー。

http://update.cloud.aliyuncs.com

wsus-server/wu-status-server

Windowsインスタンスの更新ステータスを監視するサーバー。

http://update.cloud.aliyuncs.com

vpc-id

インスタンスが属する VPC の ID。

vpc-bp1e0g399hkd7c8q ****

vpc-cidr-block

インスタンスが属するVPCのCIDRブロック。

192.168.XX.XX/16

vswitch-cidr-block

インスタンスが接続されているvSwitchのCIDRブロック。

192.168.XX.XX/24

vswitch-id

インスタンスが接続されているvSwitchのID。

vsw-bp1ygryo03m39xhsy ****

ram/security-credentials/[role-name]

インスタンスのRAMロール。 RAMロールがインスタンスにアタッチされている場合、role-nameの戻り値は、RAMロールの名前と、RAMロールに関連付けられているSTSトークンで構成されます。

{
  "AccessKeyId" : "****",
  "AccessKeySecret" : "****",
  "Expiration" : "2024-11-08T09:44:50Z",
  "SecurityToken" : "****",
  "LastUpdated" : "2024-11-08T03:44:50Z",
  "Code" : "Success"
}

instance/spot/termination-time

プリエンプティブルインスタンスのオペレーティングシステムで設定されている停止時間とリリース時間。 時刻はyyyy-MM-ddThh:mm:ssZ形式です。 時刻は UTC で表示されます。

2020-04-07T17:03:00Z

instance/virtualization-solution

ECS仮想化ソリューション。 Virt 1.0とVirt 2.0がサポートされています。

ECSヴァルト

instance/virtualization-solution-version

ECS仮想化ソリューションのバージョン。

2.0

よくある質問

セキュリティ強化モードでECSインスタンスのメタデータにアクセスするコマンドを実行できない場合はどうすればよいですか。

使用するコマンドが正しいかどうかを確認してください。 コマンドで次のエラーが終了する可能性があります。

  • メタデータサーバーのアクセス資格情報の有効期間が1秒から21,600秒の範囲内ではありません。

    curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"
  • 要求は、X − Forwarded − Forヘッダを含む。

    curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba****.com"
  • 指定されたメタデータサーバーのアクセス資格情報は無効です。

    curl -H "X-aliyun-ecs-metadata-token: aaa" -v http://100.100.100.200/latest/meta-data/