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

Elastic Compute Service:インスタンスメタデータ

最終更新日:May 16, 2026

ECS インスタンス内から、インスタンス ID や IP アドレスなどのインスタンスプロパティをクエリし、SSRF 攻撃 を防止するためにセキュリティ強化モードを適用します。

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

インスタンスメタデータには、インスタンス ID、ネットワーク構成、アクセス認証情報などの属性が含まれます。

方法 1:セキュリティ強化モード(推奨)

一時的なアクセストークンを取得し、メタデータリクエストに含めます。

Linux

  1. インスタンスにログインします。

  2. 一時トークンを取得します。

    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:21600"`
    X-aliyun-ecs-metadata-token-ttl-seconds パラメーターは、トークンの有効期間 (TTL) を秒単位で指定します。有効値:1 ~ 21600。
  3. メタデータを取得するリクエストにトークンを含めます。

    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/instance-id
    instance-id は、必要に応じて 他のメタデータ項目(例:mac や hostname)に置き換えてください。

    成功すると、端末にはインスタンス ID 文字列のみが出力されます(例:i-bp1******)。

Windows

  1. インスタンスにログインします。

  2. 一時トークンを取得します。

    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://100.100.100.200/latest/api/token
    X-aliyun-ecs-metadata-token-ttl-seconds パラメーターは、トークンの有効期間 (TTL) を秒単位で指定します。有効値:1 ~ 21600。
  3. メタデータを取得するリクエストにトークンを含めます。

    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/instance-id
    instance-id は、必要に応じて 他のメタデータ項目(例:mac や hostname)に置き換えてください。

    成功すると、端末にはインスタンス ID 文字列のみが出力されます(例:i-bp1******)。

方法 2:通常モード

警告

通常モードはセキュリティリスクが高く、使用は推奨されません。

  • Linux:

    # GET リクエストを送信してインスタンス ID を取得します。
    curl http://100.100.100.200/latest/meta-data/instance-id
  • Windows:

    # GET リクエストを送信してインスタンス ID を取得します。
    Invoke-RestMethod -Uri http://100.100.100.200/latest/meta-data/instance-id -Method Get

セキュリティ強化モードのみを有効化

セキュリティ強化モード を有効化すると、トークンを使用した場合にのみメタデータにアクセスできるようになります。通常モードでのリクエストは、403 - Forbidden エラーを返します。デフォルトでは、ECS インスタンスはトークン不要のアクセス(通常モード)を許可しており、SSRF 攻撃のリスクが高くなります。

典型的な攻撃では、外部 URL から画像をダウンロードするなどのアプリケーション機能を悪用します。攻撃者は、サーバーがメタデータサービスにクエリを送信するように仕向け、RAM ロールの一時的な認証情報を盗み出します。このロールが高度な権限を持っている場合、攻撃者はクラウドリソースや Alibaba Cloud アカウント全体を乗っ取る可能性があります。

新規インスタンスでのセキュリティ強化モードの有効化

コンソール

インスタンスを作成する際、詳細オプション > メタデータアクセスモードセキュリティ強化モード に設定します。

カスタムイメージからインスタンスを作成する際に セキュリティ強化モード が利用できない場合は、イメージをアップグレードしてください。

CLI

RunInstances または CreateInstance を呼び出し、HttpEndpoint=enabled および HttpTokens=required を指定します。例:

この例では、セキュリティ強化モード で Linux インスタンスを作成します。
aliyun ecs RunInstances \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--ImageId 'aliyun_3_x64_20G_alibase_20250629.vhd' \
--InstanceType 'ecs.g7.large' \
--VSwitchId 'vsw-bp1******trg' \
--SecurityGroupId 'sg-bp1******dgl' \
--SystemDisk.Size 40 \
--SystemDisk.Category cloud_essd \
--HttpEndpoint enabled \
--HttpTokens required

API

RunInstances または CreateInstance を呼び出し、HttpEndpoint=enabled および HttpTokens=required を指定します。

既存のインスタンスのアップグレード

適用範囲

  • Windows インスタンスセキュリティ強化モード はサポートされていません。このモードを強制的に適用すると、初期化に失敗し、ホスト名の変更や KMS のアクティベーションが中断されます。

  • Linux インスタンス:サポートされています。アップグレード前に、以下のセクションで依存関係のチェックと修正を完了させてください。

ステップ 1:コードと依存関係のチェックおよびアップグレード

セキュリティ強化モード に切り替える前に、インスタンスおよびすべてのデプロイ済みアプリケーションが次の要件を満たしていることを確認してください。

  • cloud-init のバージョンは 23.2.2 以降である必要があります。cloud-init --version コマンドでバージョンを確認できます。23.2.2 より前のバージョンの場合は、まず cloud-init をアップグレードしてください。アップグレードしない場合、モード切り替え後にインスタンスが起動できなくなります。

  • すべてのアプリケーションコードおよびスクリプトは、方法 1:セキュリティ強化モード を使用してインスタンスメタデータにアクセスする必要があります。

    重要

    SDK 構成用の STS トークンを取得するために Credentials ライブラリを使用している場合は、セキュリティ強化モードをサポートするバージョン にアップグレードしてください。

アップグレード後、通常モードでのアクセスが残っていないことを確認してください。「ECS インスタンスが通常モードでアクセスされているかどうかを検出する方法は?」をご参照ください。その後、インスタンスに対して セキュリティ強化モード を有効化します。

ステップ 2:セキュリティ強化モードの有効化

コンソール

  1. ECS コンソール - インスタンス ページに移動します。リージョンとリソースグループを選択します。

  2. [操作] 列で、image > インスタンスメタデータアクセス情報の変更 をクリックします。

  3. インスタンスメタデータアクセスチャネルを有効化 スイッチをオンにし、インスタンスメタデータアクセスモードセキュリティ強化モード に設定して、OK をクリックします。

    image

CLI

ModifyInstanceMetadataOptions を呼び出し、HttpEndpoint=enabled および HttpTokens=required を指定して セキュリティ強化モード を有効化します。例:

aliyun ecs ModifyInstanceMetadataOptions \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--InstanceId 'i-bp1******ke' \
--HttpEndpoint enabled \
--HttpTokens required

API

ModifyInstanceMetadataOptions を呼び出し、HttpEndpoint=enabled および HttpTokens=required を指定して セキュリティ強化モード を有効化します。

切り替え後、メタデータアクセスおよびアプリケーションステータスを監視します。問題が発生した場合は、通常モードおよびセキュリティ強化モード に戻してサービスを復元し、再度「ステップ 1:コードと依存関係のチェックおよびアップグレード」を実行してください。

インスタンスメタデータの詳細

メタデータはディレクトリのような階層構造で整理されています。ディレクトリにアクセスすると、そのエントリまたはサブディレクトリが返されます。たとえば、meta-data/instance/ にアクセスすると、instance-name および instance-type が返されます。

カテゴリ

メタデータ

説明

基本的なインスタンス情報

instance-id

インスタンス ID。

i-bp13znx0m0me8cquu****

instance/instance-name

インスタンス名。

iZbp1bfqfsvqzxhmnd5****

hostname

ホスト名。

iZbp13znx0m0me8cquu****

instance/instance-type

インスタンスタイプ。

ecs.g6e.large

serial-number

シリアル番号。

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

region-id

インスタンスのリージョン。

cn-hangzhou

zone-id

インスタンスのゾーン。

cn-hangzhou-i

owner-account-id

インスタンス所有者の Alibaba Cloud アカウント ID。

1609****

tags/instance/[tagKey]

指定されたインスタンスのタグの値。[tagKey] は、クエリするタグキーです。

この機能を有効にするには、ModifyInstanceMetadataOptions を呼び出して、InstanceMetadataTagsenabled に設定します。

dev

イメージ情報

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

source-address

Linux インスタンスが更新に使用するパッケージマネージャのソース(yum や apt など)。

http://mirrors.cloud.aliyuncs.com

基本的なネットワーク構成

network-type

ネットワークタイプ。VPC のみがサポートされています。

vpc

vpc-id

インスタンスの VPC ID。

vpc-bp1e0g399hkd7c8q****

vpc-cidr-block

インスタンスの VPC の CIDR ブロック。

192.168.XX.XX/16

vswitch-id

インスタンスの vSwitch ID。

vsw-bp1ygryo03m39xhsy****

vswitch-cidr-block

インスタンスの vSwitch の CIDR ブロック。

192.168.XX.XX/24

instance/max-netbw-egress

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

1228800

dns-conf/nameservers

DNS 構成。

100.100.XX.XX

ntp-conf/ntp-servers

NTP サーバーアドレス。

ntp1.aliyun.com

プライマリ ENI の IP アドレス

mac

インスタンスの MAC アドレス。複数の NIC を持つインスタンスの場合、eth0 の MAC アドレスのみが返されます。

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

private-ipv4

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

192.168.XX.XX

public-ipv4

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

120.55.XX.XX

eipv4

プライマリ ENI にアタッチされた静的パブリック IPv4 アドレスまたは EIP。

120.55.XX.XX

エラスティックネットワークインターフェースの詳細

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

ENI ID。

[mac] は、mac メタデータ項目から取得したインスタンスの MAC アドレスに置き換えてください。以下も同様です。

eni-bp1b2c0jvnj0g17b****

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

ENI の VPC ID。

vpc-bp1e0g399hkd7c8q3****

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

ENI の vSwitch ID。

vsw-bp1ygryo03m39xhsy****

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

ENI のプライマリプライベート IP。

192.168.XX.XX

network/interfaces/macs/[mac]/private-ipv4s

ENI に割り当てられたプライベート IPv4 アドレス。

["192.168.XX.XX"]

network/interfaces/macs/[mac]/ipv4-prefixes

ENI に割り当てられたプライベート IPv4 プレフィックス。

192.168.XX.XX/28

network/interfaces/macs/[mac]/netmask

ENI のサブネットマスク。

255.255.XX.XX

network/interfaces/macs/[mac]/gateway

ENI の IPv4 ゲートウェイ。

192.168.XX.XX

network/interfaces/macs/[mac]/vswitch-cidr-block

ENI の vSwitch の IPv4 CIDR ブロック。

192.168.XX.XX/24

network/interfaces/macs/[mac]/vpc-cidr-block

ENI の VPC の IPv4 CIDR ブロック。

192.168.XX.XX/16

network/interfaces/macs/[mac]/ipv6s

ENI に割り当てられた IPv6 アドレス。IPv6 が構成された VPC タイプのインスタンスでのみ利用可能です。

[2408:XXXX:325:a204:1875:217f:184a:e4e]

network/interfaces/macs/[mac]/ipv6-prefixes

ENI に割り当てられた IPv6 プレフィックス。

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

network/interfaces/macs/[mac]/ipv6-gateway

ENI の VPC の IPv6 ゲートウェイ。

2408:XXXX:325:a204:ffff:ffff:ffff:fff7

network/interfaces/macs/[mac]/vswitch-ipv6-cidr-block

ENI の vSwitch の IPv6 CIDR ブロック。IPv6 が構成された VPC タイプのインスタンスでのみ利用可能です。

2408:XXXX:325:a204::/64

network/interfaces/macs/[mac]/vpc-ipv6-cidr-blocks

ENI の VPC の IPv6 CIDR ブロック。IPv6 が構成された VPC タイプのインスタンスでのみ利用可能です。

[2408:XXXX:325:a200::/56]

ディスク情報

disks/

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

bp131n0q38u3a4zi****

disks/[disk-serial]/id

ディスク ID。

d-bp131n0q38u3a4zi****

disks/[disk-serial]/name

ディスク名。

testDiskName

セキュリティと認証情報

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

公開鍵。起動時に提供された場合のみ利用可能です。

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

ram/security-credentials/[role-name]

インスタンスに関連付けられた RAM ロールの一時的なセキュリティ認証情報。[role-name] は RAM ロール名に置き換えてください。認証情報は Expiration フィールドの時刻に有効期限が切れます。新しい認証情報を取得するには、再度呼び出してください。

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

高度なインスタンス属性

instance/virtualization-solution

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

ECS Virt

instance/virtualization-solution-version

内部ビルド番号。

2

instance/spot/termination-time

スポットインスタンスの停止およびリリース予定時刻。形式は UTC+0 の yyyy-MM-ddThh:mm:ssZ。

2020-04-07T17:03:00Z

Windows 固有の構成

kms-server

Windows インスタンスの 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

よくある質問

  • SSRF 攻撃とは何ですか?また、セキュリティ強化モードはどのように防御しますか?

    SSRF は、攻撃者がサーバーをだまして内部システム(メタデータサービスやデータベースなど)への不正なネットワークリクエストを実行させる脆弱性です。たとえば、攻撃者は http://100.100.100.200/latest/meta-data/ を含む URL を送信し、アプリケーションに機密メタデータをフェッチさせて返させることができます。

    デフォルトでは、ECS インスタンスはトークン不要のアクセス(通常モード)を許可しています。セキュリティ強化モード ではトークンの検証が必須となり、クライアントはまず一時トークンを取得するための PUT リクエストを送信し、その後の GET リクエストにトークンを含める必要があります。SSRF 攻撃は PUT リクエストを開始できないため、トークンを取得できず、不正アクセスを効果的に阻止します。

  • セキュリティ強化モードでコマンドを使用してインスタンスメタデータにアクセスできません。どうすればよいですか?

    一般的なコマンドエラー:

    • インスタンスメタデータアクセス認証情報の TTL が範囲外です(400 - Missing or Invalid Parameters)

      TTL は 1 ~ 21,600 秒の範囲内で指定する必要があります。この範囲外の値を指定すると、400 - Missing or Invalid Parameters エラーが返されます。

      curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"
    • リクエストに X-Forwarded-For ヘッダーが含まれています(403 - Forbidden)

      curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba****.com"
    • 指定されたインスタンスメタデータアクセス認証情報が無効です(401 - Unauthorized)

      curl -H "X-aliyun-ecs-metadata-token: aaa" -v http://100.100.100.200/latest/meta-data/
  • メタデータサービスへの高頻度アクセスがスロットルされた場合はどうすればよいですか?

    メタデータサービスにはレート制限があります。インスタンス ID など、あまり変更されない項目は起動時に一度取得し、適切な TTL でローカルにキャッシュしてください。

  • インスタンスメタデータアクセスモードをセキュリティ強化モードに変更した後、アプリケーションが動作しなくなりました。この問題をトラブルシューティングするにはどうすればよいですか?

    インスタンス上のアプリケーションまたはスクリプトがまだ通常モードを使用している可能性があります。「既存のインスタンスのアップグレード」に従って、これらをチェックおよびアップグレードしてください。

  • ローカルホストからメタデータアドレスにアクセスできますか?

    いいえ。100.100.100.200 はリンクローカルアドレスであり、ECS インスタンス内の仮想ネットワークインターフェースからのみ到達可能です。インスタンス外からのリクエストはこのアドレスにルーティングできません。

  • カスタムイメージからインスタンスを作成する際にセキュリティ強化モードを選択できません。どうすればよいですか?

    Linux のカスタムイメージから ECS インスタンスを作成する際、セキュリティ強化モード が利用できない場合があります。これは、イメージが要件を満たしていないことを意味します。次のようにイメージをアップグレードしてください。

    1. 一時インスタンスの作成:カスタムイメージを使用して一時的な ECS インスタンスを作成します。

    2. 一時インスタンスの修正:一時インスタンス上で、次の修正を行います。「既存のインスタンスのアップグレード」をご参照ください。

      • cloud-init のアップグレード:cloud-init をバージョン 23.2.2 以降にアップグレードします。

      • アプリケーションおよびスクリプトの修正:通常モードを使用しているすべてのアプリケーションまたはスクリプトをセキュリティ強化モードに更新します。

    3. 新しいイメージの作成と属性の更新:インスタンスから新しいカスタムイメージを作成します。その後、ModifyImageAttribute を呼び出して、Features.ImdsSupport を `v2` に設定します。

    4. リソースの解放:新しいイメージの作成後、一時インスタンスを解放します。

  • Credentials ツールのどのバージョンがセキュリティ強化モードをサポートしていますか?

    古いバージョンの Credentials はセキュリティ強化モードでのメタデータアクセスをサポートしていません。モード切り替え前にアップグレードせずに セキュリティ強化モード に切り替えると、SDK が STS トークンを取得できなくなり、サービス中断が発生します。

    モード切り替え前に、Credentials 依存関係をサポート対象のバージョンにアップグレードしてください。

    • Java: credentials-java バージョン >= 0.3.10

    • Node.js: credentials バージョン >= 2.3.1

    • PHP: credentials バージョン >= 1.2.0

    • Python: alibabacloud_credentials バージョン >= 0.3.6

    • Go: credentials-go バージョン >= 1.3.10

  • ECS インスタンスが通常モードでアクセスされているかどうかを検出するにはどうすればよいですか?

    次の方法を使用して、通常モードでメタデータにアクセスするプロセスを検出および特定します。

    方法 1:CloudMonitor を使用して通常モードのアクセスを確認

    CloudMonitor コンソールで ECS メタデータのモニタリングデータを確認し、インスタンスが通常モードでアクセスされているかどうかを判断します。

    1. CloudMonitor コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、クラウドリソースモニタリング > クラウドサービスモニタリング を選択します。「ECS メタデータ」モニタリングページを検索して移動します。

    3. 対象インスタンスの 通常モードでの成功したアクセス回数 メトリックを確認します。

    4. このメトリックが 0 でない場合、インスタンスが通常モードでアクセスされています。通常モードを使用しているアプリケーションを特定してアップグレードしてください。

    方法 2:クラウドアシスタントプラグインを使用して特定のプロセスを特定

    クラウドアシスタントプラグインを使用して、通常モードでメタデータにアクセスするプロセスを特定します。

    サポートされるオペレーティングシステム

    • Alibaba Cloud Linux 3

    • Alibaba Cloud Linux 3 Pro

    • Anolis OS 8

    • CentOS Stream 8/9

    • CentOS 8

    • Ubuntu: 20/24

    • Debian:10,11,12

    • Fedora 35+

    • AlmaLinux 8/9

    • Rocky Linux 8/9

    手順

    1. クラウドアシスタントプラグインのインストールと有効化

      ECS インスタンスにログインし、モニタリングサービスをインストールします。このサービスは一部のインスタンスリソースを消費します。

      # モニタリングサービスをデプロイします。
      sudo acs-plugin-manager --exec --plugin ACS-ECS-ImdsPacketAnalyzer
      
      # モニタリングサービスのステータスを確認します。
      sudo systemctl status imds_tracer_tool

      p940998

    2. 問題のあるプロセスの特定 まだ通常モードでメタデータにアクセスしているプロセスを確認します。ログにはプロセス ID (PID) が表示されます。

      cat /var/log/imds/imds-trace.* | grep WARNING

      p940995

    3. 分析と修正 PID に対応するアプリケーションまたはスクリプトを特定し、セキュリティ強化モード にアップグレードします。