VPCインスタンスメタデータサービスについて
VPCインスタンス・メタデータ・サービスは、仮想サーバー・インスタンスに関する情報にアクセスするために使用できる無料のサービスです。 インスタンス内で REST API を介してサービスを呼び出して、そのインスタンスに関する情報を取得できます。 インスタンスの外部から API にアクセスすることはできません。 メタデータにアクセスする前に、インスタンス ID アクセス・トークンを生成する必要があります。 インスタンス ID トークンを使用して、すべての IAM 対応サービスにアクセスするために使用できる IAM トークンをオプションで取得できます。
メタデータ・サービスの概念
仮想サーバー・インスタンスに関するメタデータにプログラムでアクセスし、そのメタデータを使用して、新しいインスタンスを初期化できます。 APIサービスによって提供されるメタデータは、リクエストが行われたインスタンスにのみ関係する。 インスタンス内のメタデータ・サービスを使用して、別のインスタンスに関する情報を取得したり、インスタンスに現在関連付けられていないリソースに関する情報を取得したりすることはできません。
アクセスできるメタデータには、インスタンス名、CRN、リソース・グループ、ユーザー・データのほか、SSHキーや配置グループに関する情報も含まれます。 サービスから返されるすべてのメタデータについて詳しくは、 メタデータ・サービスによって返されるデータの要約 を参照してください。
インスタンス・メタデータ・サービスは、REST APIとインスタンスのホスト名を使用してメタデータを取得する。 デフォルトでは、メタデータ・サービスは無効になっています。 VPC API、CLI、またはコンソールから、すべてのインスタンスでメタデータサービスを有効にできます。
インスタンス・メタデータ・サービスには、次の 2 つのコンポーネントがあります。
-
VPC メタデータ・サービスにアクセスするための JSON ウェブ・トークンを取得できる、 インスタンス ID トークン・サービス。 他の IBM Cloud IAM 対応サービスにアクセスするために、インスタンス識別トークンを IAM トークンと交換できます。 例えば、インスタンスを開始するには、IBM Cloud データベースを呼び出して、データベース・サーバーをセットアップすることが必要になる場合があります。
-
インスタンス・メタデータ・サービス。これにより、インスタンス・メタデータを取得するための API 呼び出しを行うことができます。 メタデータ・サービス API を呼び出すことで、インスタンス初期設定データ、ネットワーク・インターフェース、ボリューム接続、公開 SSH 鍵、配置グループの情報を取得できます。
インスタンス ID トークン・サービス
インスタンス ID トークン・サービスを使用して、メタデータ・サービスにアクセスするためのインスタンス ID アクセス・トークンを生成できます。 これを生成するには、エンドポイント http://api.metadata.cloud.ibm.com/instance_identity/v1/token
を呼び出すか、セキュア通信が有効になっている場合は https://api.metadata.cloud.ibm.com/instance_identity/v1/token
を呼び出します。 このエンドポイントは、仮想サーバーインスタンス内で実行されているすべてのコマンド、プロセス、およびソフトウェアアプリケーションからアクセス可能です。 API エンドポイントへのアクセスは、仮想サーバーインスタンスの外部では利用できません。
メタデータ・サービスを呼び出すときは、インスタンス ID アクセストークンを使用します。 トークンは、有効期限 (デフォルトでは 5 分) に達するまで有効です。 詳しくは、 インスタンス ID アクセス・トークンの取得 を参照してください。
インスタンス識別アクセス・トークンから IAM トークンを生成することもできます。 この IAM トークンを使用して、インスタンスにリンクされている IAM トラステッド・プロファイルのアクセス権限およびポリシー設定に基づくすべての IAM 対応サービスにアクセスできます。 これは、IAMトークン・サービスのデフォルトに基づいて、独自の有効期限を持っています。 インスタンス識別アクセス・トークンから IAM トークンを生成します。
メタデータ・サービス
すべての新しいインスタンスでメタデータサービスを有効にすると、インスタンスに関するデータを取得できます。
メタデータは、インスタンス固有の情報を提供する REST API を呼び出すことで取得します。 実行中の仮想サーバー・インスタンス内でアクセス可能なエンドポイントに対して、 GET
。 ホスト名を呼び出す呼び出しを行うことにより、インスタンス、鍵、および配置グループに関するメタデータを取得できます。
https://api.metadata.cloud.ibm.com/metadata/v1/instance
https://api.metadata.cloud.ibm.com/metadata/v1/keys
https://api.metadata.cloud.ibm.com/metadata/v1/placement_groups
インスタンス・メタデータにアクセスするために使用できるすべてのエンドポイントについて詳しくは、 メタデータ・サービスによって返されるデータの要約 を参照してください。
メタデータ・サービスを有効にする には、VPC UI、CLI、または API でトグルを設定します。 インスタンスを作成するとき、または既存のインスタンスを更新するときに、サービスを有効にすることができます。
メタデータ・サービスは、サービスのIPへのすべてのリクエストをインターセプトし、リクエストを処理する特定のサービスにルーティングする。 メタデータ・サービスへのリクエストの一部として、インスタンスIDアクセストークンを含める必要がある。
コンピュート・リソース ID
IAMを通じて、 コンピュートリソースアイデンティティを 作成してインスタンスにアクセス権を割り当て、そのアイデンティティを使用している IBM-有効なサービスへのアクセス権を設定することもできます。
コンピュートリソースアイデンティティサービスは、信頼されたプロファイルを作成します。 このプロファイルに対して、インスタンスが IBM Cloud Object Storage や IBM Key Protect for IBM Cloud などのIAM対応サービスを呼び出せるようにするためのアクセス権を割り当てることができます。 トラステッド・プロファイルは、仮想サーバー・インスタンス内に作成されます。 信頼されたプロファイルは、インスタンス上で実行されているすべてのアプリケーションの承認を定義する。
ユーザー・データ
インスタンスからアクセスするメタデータには、 _ユーザー・データも_含まれる。 ユーザーデータは、インスタンスのプロビジョニング時に指定したデータで、他のインスタンスのプロビジョニング時に利用可能です。 (これはVPCインスタンスのcloud-initから利用できるのと同じユーザーデータだ) 例えば、データベース・ソフトウェアをロードするための情報、ワーカー・ノードのカスタム・ソフトウェア、またはインスタンスの初期化方法に関する決定を行うための情報が、ユーザー・データで提供されます。 詳しくは、 ユーザー・データ に関するトピックを参照してください。
インスタンス内からアクセスするメタデータは、暗号化方式では保護されない。 インスタンスおよびメタデータ・サービスへのアクセス権限を持つすべてのユーザーが、メタデータを参照する可能性があります。 予防措置として、パスワードやお客様の暗号鍵などの機密データをユーザー・データとして保管しないでください。
メタデータ・サービスを使用するシナリオ
メタデータ・サービスは、以下の 2 つの方法で使用できます。
-
インスタンス内からメタデータにアクセスする。
このシナリオでは、インスタンス内からメタデータを取得して、インスタンスをブートストラップします。 たとえば、インスタンスの作成時にカスタム・ユーザ・データを指定し、インスタンスの初期化時にそのカスタム・ユーザ・データを取得したい場合があります。 詳しくは、インスタンスからメタデータにアクセスするを参照してください。
-
インスタンス ID IAM トークンにアクセスし、IAM 対応サービスを呼び出す。
このシナリオでは、コンピュート・リソース ID のトラステッド・プロファイルを作成し、IAM 対応サービスのアクセス権限を仮想サーバー・インスタンスに割り当てます。 APIリクエストを行って新しいインスタンスを作成し、そのインスタンスをメタデータサービスで構成して、インスタンスを信頼済みプロファイルにリンクします。 メタデータ・サービスを呼び出してインスタンス ID アクセス・トークンを取得してから、そのトークンから IAM トークンを生成 します。 そして、インスタンスからIAM対応サービスを呼び出すことができる。 このオプションは、インスタンス・ブートストラッピングの一部として IAM 対応サービスを呼び出す場合に使用します。 例えば、インスタンスのワークロードが使用する新しい Object Storage バケットを設定したいかもしれない。 詳しくは、トラステッド・プロファイルを使用した IAM 対応サービスの呼び出しを参照してください。
図 1 は、これらのシナリオを示しています。

データ・セキュリティー
IBM は、データを確実に保護するための予防措置を講じています。 メタデータは、ユーザーにアクセス権限があるインスタンスからのみ取得されます。 複数のインスタンスに共通するデータは取得されるが、他のインスタンスの特定のIPアドレスは公開されない。
メタデータ・サービスのデフォルト・プロトコルは HTTP です。 メタデータ・サービスへの呼び出しは、発信元のコンピュート・ホストを離れる前にセキュアに行われる。 データは、データが計算ホストから出る前に、セキュア・プロトコルを使用してラップされます。 インスタンス・メタデータ・サービスへの初期呼び出しは、HTTP 接続を介して行われます。 この呼び出しの目的は、メタデータ・サービスにアクセスするためのIDトークンを取得することである。 これらのサービスでは、既知の URL を使用します。 非セキュアな接続が見えますが、VPCコンピュート・サービスはトークンとメタデータ・サービスをセキュアにするために特別なアクションを取ります。
メタデータ・サービスは、 HTTP Secure protocol ( HTTPS ) を使用するように設定することもできる。 詳しくは、 UI を使用したセキュア・アクセスの有効化 を参照してください。
インスタンス・メタデータ・サービスは機密データ用ではありません。 サービス・エンドポイントは、インスタンス上のすべてのプロセスに開かれている。 このサービスを通じて公開される情報は、仮想サーバーインスタンス内で動作するすべてのアプリケーションの共有情報とみなされる。
実行できる追加のセキュリティー対策について詳しくは、 インスタンス・メタデータ・サービスのセキュリティーのベスト・プラクティス を参照してください。