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セキュリティ資格情報を取得した後、資格情報をキャッシュし、資格情報の有効期限が近づいたときに資格情報を再取得することをお勧めします。
インスタンスメタデータへのアクセス
ECSインスタンスまたはインスタンスのメタデータに機密データが含まれている場合は、アクセス制御やデータ暗号化など、適切な方法を使用してデータを保護することを推奨します。
インスタンスメタデータのアクセスモード
通常モードまたはセキュリティ強化モードでインスタンスメタデータにアクセスできます。
通常モードとセキュリティ強化モードの違い
インスタンスメタデータへのアクセス
(推奨) セキュリティ強化モードでのインスタンスメタデータへのアクセス
Linuxインスタンス
# メタデータサーバーのアクセス資格情報を取得し、資格情報の有効期間を指定します。 アクセス要求にX-Forwarded-Forヘッダーを含めないでください。 TOKEN='curl -X PUT "http:// 100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<メタデータサーバーのアクセス資格情報の有効期間>"' # インスタンスメタデータにアクセスします。 curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http:// 100.100.100.200/latest/meta-data/<metadata>
Windowsインスタンス
# メタデータサーバーのアクセス資格情報を取得し、資格情報の有効期間を指定します。 アクセス要求にX-Forwarded-Forヘッダーを含めないでください。 $token=Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<メタデータサーバーのアクセス資格情報の有効期間>"} -メソッドPUT -Uri http:// 100.100.100.200/latest/api/token # インスタンスメタデータにアクセスします。 Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -メソッドGET -Uri http:// 100.100.100.200/latest/meta-data/<metadata>
<メタデータサーバーのアクセス資格情報の有効期間>
: データセキュリティを強化するために、メタデータサーバーのアクセス資格情報の有効期間を指定します。 有効な値: 1 ~ 21600 単位は秒です。上記のコマンドを繰り返し実行して、メタデータサーバーのアクセス資格情報の有効期間内にインスタンスのメタデータ項目にアクセスできます。 有効期間が終了したら、メタデータサーバーのアクセス資格情報を再取得します。 メタデータサーバーのアクセス資格情報を再取得しない場合、インスタンスのメタデータにアクセスできません。
メタデータサーバーのアクセス資格情報はECSインスタンスに関連付けられています。 ECSインスタンスのメタデータサーバーアクセス資格情報をコピーして別のECSインスタンスにアクセスすると、アクセスは拒否されます。
<metadata>
: このパラメーターを、クエリするメタデータ項目に置き換えます。 インスタンスメタデータ項目の詳細については、このトピックの「インスタンスメタデータ項目」をご参照ください。
通常モードでのインスタンスメタデータへのアクセス
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"} -メソッドPUT -Uri http:// 100.100.100.200/latest/api/token Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -メソッド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インスタンスを設定できます。
新しいインスタンス
RunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成するときは、HttpTokens
パラメーターを設定してインスタンスメタデータアクセスモードを指定します。 パラメータの有効値:
optional
: セキュリティ強化モードを強制的に使用しません。 インスタンスメタデータには、通常モードとセキュリティ強化モードの両方でアクセスできます。required
: セキュリティ強化モードを強制的に使用します。 このパラメーターを必須に設定すると、通常モードでインスタンスメタデータにアクセスできなくなります。
既存インスタンス
ModifyInstanceMetadataOptions操作を呼び出して既存のECSインスタンスのメタデータを変更する場合は、HttpTokens
パラメーターを設定してインスタンスメタデータアクセスモードを指定します。 パラメータの有効値:
optional
: セキュリティ強化モードを強制的に使用しません。 インスタンスメタデータには、通常モードとセキュリティ強化モードの両方でアクセスできます。required
: セキュリティ強化モードを強制的に使用します。 このパラメーターを必須に設定すると、通常モードでインスタンスメタデータにアクセスできなくなります。
インスタンスメタデータのアクセスモードをセキュリティ強化に制限する権限ポリシーの設定
権限ポリシーを使用して、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 |
disks/[disk-id]/id | ディスクの ID です。 | d-bp131n0q38u3a4zi **** |
disks/[disk-id]/name | ディスクのパラメーター名 | testDiskName |
private-ipv4 | プライマリNICのプライベートIPv4アドレス。 | 192.168.XX.XX |
public-ipv4 | プライマリNICのパブリックIPv4アドレス。 | 120.55.XX.XX |
eipv4 | このメタデータアイテムは、次の情報を取得するために使用されます。
| 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ロールがインスタンスにアタッチされている場合、 | AliyunECSImageExportDefaultRole |
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 |