Elastic Compute Service (ECS) インスタンスメタデータには、インスタンス ID、仮想プライベートクラウド (VPC)、ネットワークインターフェースコントローラー (NIC) などの属性情報が含まれており、メタデータサービスを使用してインスタンス内からアクセスできます。 ECS インスタンスメタデータには、ECS コンソールにログインしたり API オペレーションを呼び出したりすることなくアクセスでき、メタデータを使用して、実行中のインスタンスまたはインスタンスでホストされているアプリケーションを簡単かつ安全に構成または管理できます。
インスタンスメタデータ項目
メタデータサービスを使用して、ホスト名、インスタンスタイプ、インスタンス名、イメージ ID など、ECS インスタンスのメタデータを取得できます。次の表を展開して、インスタンスメタデータ項目を表示します。
インスタンスメタデータアクセスモード
インスタンスメタデータには、通常モードまたはセキュリティ強化モードでアクセスできます。詳細については、「さまざまなモードでインスタンスメタデータにアクセスする」をご参照ください。次の表は、2 つのモードを比較したものです。
セキュリティ強化モードを使用することをお勧めします。このモードでメタデータにアクセスするには、インスタンスの cloud-init バージョンが 23.2.2 以降であることを確認してください。 cloud-init バージョンの確認方法とアップグレード方法については、「cloud-init をインストールする」をご参照ください。
アクセスモードの比較
項目 | 通常モード | セキュリティ強化モード |
インタラクション方法 | リクエスト - レスポンス | セッション指向 |
認証方法 | 同じ VPC 内の送信元 IP アドレスに基づいてリクエストを認証します。 | 同じ VPC 内の送信元 IP アドレスとインスタンスメタデータアクセス認証情報に基づいて認証を実行します。 インスタンスメタデータアクセス認証情報には、次の特性があります。
|
アクセス方法 | アクセス認証情報なしでエンドポイントにアクセスするためのコマンドを実行します。 | 認証のためにエンドポイントにアクセスするためのインスタンスメタデータアクセス認証情報を取得します。 |
セキュリティレベル | 低 通常モードでは、リクエストは IP アドレスに基づいて認証されます。攻撃者は、リクエスト内の送信元 IP アドレスを偽造して、IP アドレスベースの認証をバイパスし、サーバーサイドリクエストフォージェリ (SSRF) 攻撃を開始する可能性があります。その結果、インスタンスメタデータが漏洩する可能性があります。 | 高 インスタンスメタデータにアクセスするには、認証と承認のために有効なメタデータアクセス認証情報が必要です。これらの認証情報は ECS インスタンスで生成され、ECS インスタンスに関連付けられており、有効期間が限られているため、攻撃者が推測したり偽造したりすることは困難です。これは、ほとんどの SSRF 攻撃に対する防御に役立ちます。 |
さまざまなモードでインスタンスメタデータにアクセスする
セキュリティ強化モード
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" = "<メタデータサーバーアクセス認証情報の有効期間>"} -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/<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 インスタンスがメタデータサーバーに頻繁にアクセスしてメタデータを取得する場合、アクセスリクエストがスロットルされる可能性があります。 RAM クレデンシャルなどのデータは、有効期限が切れる前にキャッシュして更新することをお勧めします。
インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成する
セキュリティを強化するために、Alibaba Cloud では、インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成できます。この設定が構成されると、通常モードを使用するリクエストは拒否されます。これは、ほとんどの SSRF 関連のリスクに対する防御に役立ちます。次のセクションでは、さまざまなシナリオでこの設定を構成する方法について説明します。
クレデンシャルツールを使用して ECS インスタンスにアタッチされている RAM ロールのテンポラリ ID クレデンシャルを取得する場合、セキュリティ強化モードに切り替えるとビジネスに影響を与える可能性があります。この問題を防ぐには、クレデンシャルツールをアップグレードします。セキュリティ強化モードをサポートするバージョンの詳細については、「クレデンシャルツールを使用してテンポラリアクセスクレデンシャルを取得する」をご参照ください。
インスタンスの作成中に排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成する
ECS コンソールの使用
インスタンス購入ページで、[詳細オプション] セクションを展開し、メタデータアクセスモードパラメーターをセキュリティ強化モードに設定します。
使用しているイメージがサポートしている場合にのみ、[セキュリティ強化モード] を選択できます。
[セキュリティ強化モード] を選択できない場合は、インスタンスを作成し、cloud-init バージョンを 23.2.2 以降にアップグレードしてから、インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成します。
一部の最新の Alibaba Cloud パブリックイメージは、cloud-init 23.2.2 以降がプリインストールされているため、セキュリティ強化モードをサポートしています。イメージがモードをサポートしているかどうかを確認するには、DescribeImages オペレーションを呼び出し、レスポンスでイメージの ImdsSupport
値を表示します。 ImdsSupport
の値が v2
の場合、イメージはセキュリティ強化モードをサポートしています。
API オペレーションの呼び出し
RunInstances または CreateInstance オペレーションを呼び出して ECS インスタンスを作成する場合は、HttpTokens
パラメーターを required
に設定して、[セキュリティ強化モード] を有効にします。
使用しているイメージがセキュリティ強化モードをサポートしている場合にのみ、インスタンスを起動できます。
起動に失敗した場合は、HttpTokens
パラメーターを optional
に設定し、cloud-init バージョンを 23.2.2 以降にアップグレードしてから、インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成します。
一部の最新の Alibaba Cloud パブリックイメージは、cloud-init バージョン 23.2.2 以降がプリインストールされているため、セキュリティ強化モードをサポートしています。イメージがモードをサポートしているかどうかを確認するには、DescribeImages オペレーションを呼び出し、レスポンスでイメージの ImdsSupport
値を表示します。 ImdsSupport
の値が v2
の場合、イメージはセキュリティ強化モードをサポートしています。
既存のインスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成する
既存の ECS インスタンスのメタデータへのアクセスに通常モードを使用しなくなった場合は、インスタンスのアプリケーションコードを変更し、排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成します。この設定が構成されると、通常モードを使用するリクエストは拒否されます。
手順 1: アプリケーションコードを変更してセキュリティ強化モードを使用する
アプリケーションコードを変更するインスタンスを特定します。
方法 1:CloudMonitor コンソール にログインします。 ページで、[ECS メタデータ] を検索します。 [監視チャート] に通常モードでのアクセス成功数 (カウント) が 0 より大きい ECS インスタンスを特定します。これは、インスタンス上のアプリケーションが通常モードを使用していることを意味します。これらのインスタンスにセキュリティ強化モードを構成する必要があります。データの精度を確保するために、14 日以上の期間を推奨します。
方法 2:Cloud Assistant が提供する
ACS-ECS-ImdsPacketAnalyzer
プラグインを使用して、通常モードを使用する ECS インスタンスのプロセスを特定します。このプラグインは、Linux インスタンスの作成中に Cloud Assistant クライアントがプリインストールされているため、Linux オペレーティングシステムでのみ使用できます。ただし、オペレーティングシステムの制限が適用されます。
特定されたインスタンスの cloud-init バージョンが 23.2.2 以降であることを確認します。 cloud-init バージョンが 23.2.2 より前の場合、バージョン 23.2.2 以降にアップグレードします。バージョンの確認方法とアップグレード方法については、「cloud-init をインストールする」をご参照ください。
メタデータアクセス認証情報を取得するようにアプリケーションコードを変更し、リクエストヘッダーに認証情報を含めてインスタンスメタデータにアクセスします。詳細については、「セキュリティ強化モードでインスタンスメタデータにアクセスする」をご参照ください。
アプリケーションコードでインスタンスメタデータにアクセスするために通常モードが使用されていないことを確認します。
[ECS メタデータ]CloudMonitor コンソール の [ECS メタデータ] ページで、特定されたインスタンスの [監視チャート] に [通常モードでのアクセス成功数 (カウント)] が [データなし] と表示されているかどうかを確認します。表示されている場合は、手順 2 に進むことができます。表示されていない場合は、インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成した後に、通常モードでインスタンスメタデータにアクセスするためのリクエストが拒否される可能性があります。データの精度を確保するために、14 日以上の期間を推奨します。
手順 2:インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成する
ECS コンソールの使用
ECS コンソール - インスタンス に移動します。
上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。
管理するインスタンスを見つけ、インスタンスの ID をクリックしてインスタンス詳細ページに移動し、右上隅にある [すべてのアクション] をクリックします。表示されるペインで、[インスタンスメタデータアクセス情報を変更する] を検索してクリックします。
[インスタンスメタデータのアクセスチャネルを有効にする] をオンにし、[インスタンスメタデータアクセスモード] を [セキュリティ強化モード] に設定します。
API オペレーションの呼び出し
DescribeInstances オペレーションを呼び出し、レスポンスの HttpTokens
値を表示して、インスタンスメタデータへのアクセスにセキュリティ強化モードが強制的に使用されているかどうかを確認できます。 HttpTokens
の値が optional
である ECS インスタンス上のアプリケーションは、引き続き通常モードを使用します。 DescribeInstances レスポンスでこれらの ECS インスタンスを特定します。
各インスタンスの HttpTokens
を required
に設定して ModifyInstanceMetadataOptions オペレーションを呼び出し、メタデータアクセスモードをセキュリティ強化モードに変更します。
ECS インスタンスの唯一のメタデータアクセスモードとしてセキュリティ強化モードを構成した後、通常モードでメタデータにアクセスするためのリクエストは拒否されます。リクエストの失敗によるビジネスの中断を回避するために、CloudMonitor コンソール でアラートを構成して、通常モードを使用するリクエストが拒否されたときに通知を受け取ります。インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを構成した後に、通常モードを使用するリクエストが拒否された場合は、インスタンスが通常モードとセキュリティ強化モードの両方をサポートするように構成し、インスタンスメタデータに通常モードでアクセスされていないことを確認してから、インスタンスの排他的なメタデータアクセスモードとしてセキュリティ強化モードを再構成します。