アイデンティティ・オペレーション

メタデータ・サービスを使用して、メタデータ・サービスから ID アクセストークンを取得し、IAM アクセストークンを生成し、ID 証明書を作成することができる。 これらのトークンと証明書は、IAM対応サービス呼び出しのためのメタデータサービスへのアクセス、およびファイル共有と仮想サーバーインスタンス間の暗号化接続の確立に使用できます。

アイデンティティ・アクセストークン

IDアクセストークンは、 IBM Cloud® のメタデータおよびVPC Identityサービスにアクセスするためのセキュリティ認証情報を提供します。 これは、インスタンスに関する情報およびトークンリクエストで渡された情報に基づいて一連のクレームが設定された、署名付きトークンです。 アイデンティティアクセストークン機能を使用するための最小バージョン日付は. です 2022-03-01

インスタンスとメタデータサービス間の通信は、ホスト内で完結します。 インスタンス内からトークンを取得します。 インスタンスでメタデータ・サービスへのセキュア・アクセスが有効になっている場合は、「http」プロトコルの代わりに「https」プロトコルを使用する。

IDトークンを取得するには、 メタデータ・サービスAPIに PUT /identity/v1/token

現在 メソッド /instance_identity/v1/token を使用しており、API リリースバージョン 2025-08-26 以降を採用したい場合は、移行ガイダンスに記載されている変更点を確認してください: VPC Identity API の バージョン 2025-08-26 への更新

curl -X PUT "https://api.metadata.cloud.ibm.com/identity/v1/token?version=2025-08-26" -H "Metadata-Flavor: ibm" -d '{}'

リクエストでは、トークンの有効期限を指定できます。 デフォルトの有効期限は5分ですが、5秒から1時間の間で任意の値を指定できます。 セキュアアクセスが有効になっているホストの例を以下に示す。 次の例では、トークンの有効期限を1時間としている。

curl -X PUT "https://api.metadata.cloud.ibm.com/identity/v1/token?version=2025-08-26" -H "Metadata-Flavor: ibm" -d '{"expires_in": 3600}'

API レスポンスには ID アクセストークンが含まれる。 このトークンを使用して、メタデータ・サービスにアクセスします。

以下の JSON レスポンスには、ID アクセストークンの文字列、作成日時、有効期限、および設定した有効期限が表示されています。 このトークンの有効期限は5分である。

{
  "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlZTSS1DUl91cy1lYXN0X2I5...",
  "created_at": "2025-06-10T11:08:39.363Z",
  "expires_at": "2025-06-10T11:13:39.363Z",
  "expires_in": 300
}

あるいは、次のコマンドを使用することもできます:

identity_token=`curl -X PUT "https://api.metadata.cloud.ibm.com/identity/v1/token?version=2025-08-26"\
  -H "Metadata-Flavor: ibm"\
  -d '{
        "expires_in": 3600
      }' | jq -r '(.access_token)'`

以下の例では、 cURL コマンドの返り値は ID アクセストークンである。 トークンは jq によって抽出され、 identity_token 環境変数に置かれる。

identity_token=`curl -X PUT "https://api.metadata.cloud.ibm.com/identity/v1/token?version=2025-08-26"\
  -H "Metadata-Flavor: ibm"\
  -d '{
        "expires_in": 3600
      }' | jq -r '(.access_token)'`

この例では、 MITライセンス の下で提供されているサードパーティ製ツールである jq をパーサーとして使用しています。インスタンスを作成する際に利用可能なすべてのVPCイメージに、 jq がプリインストールされているとは限りません。 使用前に jq をインストールするか、お好みの別のパーサーを使用する必要がある場合があります。

メタデータ・メソッドの1つを呼び出すために、メタデータ・サービスへの GET 呼び出しで identity_token 変数を指定することができる。 詳しくは、実行中のインスタンスからのメタデータの取得を参照してください。

また、このIDトークンからIAMトークンを生成し、VPC APIを使用してIAM対応のサービスを呼び出すこともできます。 詳細については、「 ID アクセストークンから IAM トークンを生成する 」を参照してください。

IDアクセストークンからIAMトークンを生成する

アカウント IBM Cloud のIAM対応サービスにアクセスするには、IDアクセストークンと信頼済みプロファイルからIAMトークンを生成できます。 IAMトークンを生成したら、そのトークンを使用して、 IBM Cloud Object Storage、Cloud Database Service、VPC APIなど、IAM対応のサービスにアクセスできます。 このトークンは何度でも再利用できます。

POST /identity/v1/iam_tokens 、信頼できるプロファイルのIDを指定する。 このリクエストでは、IDアクセストークンと、仮想サーバーインスタンスにリンクされている信頼済みプロファイルを使用して、IAMアクセストークンを生成します。 トラステッド・プロファイルは、インスタンスの作成時にリンクすることも、要求本体で指定することもできます。

IDアクセストークンの渡しのため、およびIAMトークンの生成に使用されていたIAM APIは、非推奨となります。 ベータ版ユーザーは、 POST /identity/v1/iam_tokens を使用して IAM トークンを生成するために、メタデータ・サービス API に移行する必要があります。

要求例:

iam_token=`curl -X POST "$vpc_metadata_api_endpoint/identity/v1/iam_tokens?version=2025-10-14" \
-H "Authorization: Bearer $identity_token" \
-d '{
      "trusted_profile": {
        "id": "Profile-8dd84246-7df4-4667-94e4-8cede51d5ac5"
      }
    }'| jq -r '(.access_token)'`

JSON 応答に IAM トークンが示されます。

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aGVfYmVzdCI6I8...",
  "created_at": "2025-06-10T14:10:15Z",
  "expires_at": "2025-06-10T15:10:15Z",
  "expires_in": 3600
}

トラステッド・プロファイルについて詳しくは、『トラステッド・プロファイルを使用した IAM 対応サービスの呼び出し』を参照してください。

IDアクセストークンを使用したID証明書の生成

仮想サーバーインスタンスと IBM Cloud® File Storage for VPC 共有間の転送で暗号化を有効にして使用するには、ID 証明書が必要です。 インスタンスのID証明書を生成するには、IDアクセストークンと証明書署名要求(CSR)を使用して POST /identity/v1/certificates

証明書署名要求(CSR)は、オープンソースの OpenSSL コマンドラインツールキットから取得できます。

  1. 以下のコマンドは、opensslを使用して証明書署名要求 (CSR)と RSAキー・ペアを生成します。 コマンドを実行する際は、国番号 US'/C=US' の2桁の国番号に置き換えてください。

    openssl req -sha256 -newkey rsa:4096 -subj '/C=US' -out ./sslcert.csr -keyout file.key -nodes
    

    CSRの作成に別のソフトウェアを使用している場合、国コード(C)、州(ST)、地域(L)、組織名(O)、組織単位(OU)など、所在地に関する情報を入力するよう求められることがあります。 これらの命名属性のどれでも使用できる。 その他の命名属性(例:一般名)は拒否される。 Metadata API へのリクエスト時に、システムは ID 証明書のサブジェクト共通名にインスタンス ID 値を適用するため、共通名が指定された CSR は拒否される。 延長されたCSRも拒否される。

  2. メタデータサービスへのAPI呼び出しを行う前に、次のコマンドを使用してCSRをフォーマットしてください。

    awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' sslcert.csr
    

次に、メタデータ・サービスにAPIリクエストを行うことができる。 以下の例を参照してください。 csr の値は必須です。 expires_in の値は省略可能です。 有効期限のデフォルト値は3600で、これは1時間に相当する。

curl -X POST "$vpc_metadata_api_endpoint/identity/v1/certificates?version=2024-11-12" \
 -H "Authorization: Bearer $identity_token" \
 -d '{ "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICnTCCAYUCAQAwWDELMAkGA1UEBhMCVVMxEjAQBgNVBAgMCU1pbm5lc290YTES\nMBAGA1UEBwwJUm9jaGVzdGVyMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0\neSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYBvW12cKEkRUu\nyPScs7Xjwu/m+W8pZSQf9wrBa7DBVLFCdh440xOuSnIbsm+BNgYz4wL6/8la+N/K\nff06CdEwy9HLhPYc2z62tECxOBhI1G9gnsRUwb6WHNY71VulZs+37/9Mgd/eQy2n\nKHULNEU7sjNpLYoguKX8GRV3etKDp3tlFQmB6cNGOAgB3aQDmhdAh7K6oftesm0R\n8C7nmFA4SSjaI+855JxoxadlB2cCA5boaQ2gNO6YhYbtuTrMicQb0MTlZmacqzqP\nAxXWD3yFmAuUCpa2tBFBsavSW/kc52m4ldcO60U6hARvOxcXDqrbwu8r1ieY+tcZ\ncqjjBi99AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAgAqWjtH3yAsX8QfTa9Pv\n3kktYFQKFsBzntmFDdIrOkeGayWRCuSG06f3sHWH0RuGkpq1x/4bedjcyyNVSna7\nxYX6kPOQX5iqf9pISD7A0XIkfS6XAos7gOh/jadjtxSwPCkuztSqIPKObH9OClAE\nU1fYDEtZCaZxsUdLwWJwOzbsivT97g1UVnbJAEzAJrqyaV4cUbv/w/slytHF+GAg\nNoUvPD8NGOQ+VzuI2oQuK515cyHO1SXrJyvkEVwRVVr3SoasqqWIQRrIv6zgzgik\nLN+uQxpzL1EeTB8qKy7xjymo2y1PbmaZzVNQNaBnxJfLE522pfW69evBRJ1qhrby\nTQ==\n-----END CERTIFICATE REQUEST-----\n"}'

あるいは、次のコマンドを使用することもできます:

curl -X POST "$vpc_metadata_api_endpoint/identity/v1/certificates?version=2025-08-26" \
 -H "Authorization: Bearer $identity_token" \
 -d '{ "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICnTCCAYUCAQAwWDELMAkGA1UEBhMCVVMxEjAQBgNVBAgMCU1pbm5lc290YTES\nMBAGA1UEBwwJUm9jaGVzdGVyMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0\neSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYBvW12cKEkRUu\nyPScs7Xjwu/m+W8pZSQf9wrBa7DBVLFCdh440xOuSnIbsm+BNgYz4wL6/8la+N/K\nff06CdEwy9HLhPYc2z62tECxOBhI1G9gnsRUwb6WHNY71VulZs+37/9Mgd/eQy2n\nKHULNEU7sjNpLYoguKX8GRV3etKDp3tlFQmB6cNGOAgB3aQDmhdAh7K6oftesm0R\n8C7nmFA4SSjaI+855JxoxadlB2cCA5boaQ2gNO6YhYbtuTrMicQb0MTlZmacqzqP\nAxXWD3yFmAuUCpa2tBFBsavSW/kc52m4ldcO60U6hARvOxcXDqrbwu8r1ieY+tcZ\ncqjjBi99AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAgAqWjtH3yAsX8QfTa9Pv\n3kktYFQKFsBzntmFDdIrOkeGayWRCuSG06f3sHWH0RuGkpq1x/4bedjcyyNVSna7\nxYX6kPOQX5iqf9pISD7A0XIkfS6XAos7gOh/jadjtxSwPCkuztSqIPKObH9OClAE\nU1fYDEtZCaZxsUdLwWJwOzbsivT97g1UVnbJAEzAJrqyaV4cUbv/w/slytHF+GAg\nNoUvPD8NGOQ+VzuI2oQuK515cyHO1SXrJyvkEVwRVVr3SoasqqWIQRrIv6zgzgik\nLN+uQxpzL1EeTB8qKy7xjymo2y1PbmaZzVNQNaBnxJfLE522pfW69evBRJ1qhrby\nTQ==\n-----END CERTIFICATE REQUEST-----\n"}'

成功すると、新しい証明書が、そのID、作成日時、有効期限などの情報とともに返される。

{
  "certificates": [
    "-----BEGIN CERTIFICATE-----\nMIIDmTCCAoECFDGlhn2VlwNEQymsNpyt9rOiiiWDMA0GCSqGSIb3DQEBCwUAMIGJ\nMQswCQYDVQQGEwJVUzESMBAGA1UECAwJTWlubmVzb3RhMRIwEAYDVQQHDAlSb2No\nZXN0ZXIxDDAKBgNVBAoMA0lCTTEeMBwGA1UECwwVVmlydHVhbCBQcml2YXRlIENs\nb3VkMSQwIgYDVQQDDBtWUEMgRXhhbXBsZSBJbnRlcm1lZGlhdGUgQ0EwHhcNMjIx\nMTAxMTM1MDE0WhcNMjIxMTAxMTQyMDE0WjCBhzELMAkGA1UEBhMCVVMxEjAQBgNV\nBAgMCU1pbm5lc290YTESMBAGA1UEBwwJUm9jaGVzdGVyMQwwCgYDVQQKDANJQk0x\nHjAcBgNVBAsMFVZpcnR1YWwgUHJpdmF0ZSBDbG91ZDEiMCAGA1UEAwwZRXhhbXBs\nZSBTaGFyZSBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAM6JytY3R4zWo3zzw/dM9ldUw8TIDQ9dNt+0sm3bFHHlAXaSKvmI+Ls/uQoh\n9VPpRLTx+WyljnKNnkXC6BQOzlugjAfi8hE2f5CC0A0m58XcBiZqH5BwTeLI4vVZ\nO9pLySckkEtHcmFE4h70KS5+1jDApeOTTS6EJsQcal/AAVYg7PDyXr1jE2HTKxnt\nlXopB/+bvWmBQ2k50Km0h0D1n0Ipoqqwb1wwWCrzQ2ds2XNKCUGkCgN6buFiF2nN\nLYS1tsIaw6OsTx+VheNGlYdlOhMUVypCok9JQ85P4NU47O6YgITX1V63ewZBnn5p\napywqdg8K2X2YgU/tLdpl5Jz2ysCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEABuOX\npxGbBQPdG3VGkNCYScZUcxocqmx4mCegBFfv4PjWU2+eG+3JikB3YWwqD11hixQm\n5Qwge/zMXzuKPs5D4yyblpDJlq5Iz/0VMjEl2paCHg9nm5Z3QaSydFH3SCGwfvld\nRn9ib6DSw4a58hmqON+CiWUSSibQy46gUsqVvYhq2lJimejTAN2DlePY2su1xvNV\nAdmDjmvO7j7YV/eWk6r7OgcqtVaAovN3okaybwxf8sLAFxLzp/aUaqXL10qJ/ISz\nVL+UHN7t5WzjHdh2OjDXwz0BOyhdbjyNX8ptKd+E0O21PsFFe8ErfShDh00g/ERP\nzXuEUsCxzTyWRTm8GA==\n-----END CERTIFICATE-----\n",
    "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIUDzQruKqvBY7+CS6DL0u93Na6cLMwDQYJKoZIhvcNAQEL\nBQAwgYExCzAJBgNVBAYTAlVTMRIwEAYDVQQIDAlNaW5uZXNvdGExEjAQBgNVBAcM\nCVJvY2hlc3RlcjEMMAoGA1UECgwDSUJNMR4wHAYDVQQLDBVWaXJ0dWFsIFByaXZh\ndGUgQ2xvdWQxHDAaBgNVBAMME1ZQQyBFeGFtcGxlIFJvb3QgQ0EwHhcNMjIxMTAx\nMDM0OTI5WhcNMjcxMDMxMDM0OTI5WjCBiTELMAkGA1UEBhMCVVMxEjAQBgNVBAgM\nCU1pbm5lc290YTESMBAGA1UEBwwJUm9jaGVzdGVyMQwwCgYDVQQKDANJQk0xHjAc\nBgNVBAsMFVZpcnR1YWwgUHJpdmF0ZSBDbG91ZDEkMCIGA1UEAwwbVlBDIEV4YW1w\nbGUgSW50ZXJtZWRpYXRlIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\nAQEAxjvxOtSFKsJKl4teBLgkX4+myxhClz2Qmg5MnNQ+oyhyNrpYvjG3+O+DrSUK\nKTXzmWSkKU/6BKmHQPNdpd4ymbb0cG7wmpcU3YjjrSNFgd/o3CEK9M7+ofIuQtTX\nXNUQWX5rb3wBqEA1TWazVTZpphhhcGQ8u03VTKvoF4S2DI6L3brDJJ0w1DM9Isaa\nB2mS64VYMIj3jLry39ryGEoYq1a0tC4C9fET3V5NmUnIRNqVDnGGkYBy/57VRACU\nXxXcQuW6eoPYGk6Ho3eKly34eilF2n9xD/bB41R4NzaxO/0lHq+caI5r1WlnTXtF\nE8wLpFoYMkuC0qiKBesyuyef2QIDAQABo2YwZDAdBgNVHQ4EFgQU2MIYc9g4Z7Kj\n79u2HPGYyTk5QHwwHwYDVR0jBBgwFoAUVnTLKJHyjHUcRp22jx+d3uGqnrwwEgYD\nVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBADhOBfnBEaWVWCsZo3UR7UlP5/8i3mRgyFt4YkICPMacy2IcnDw8aoyjTO5b\n4BLO4J1m4AmcJnDJcFIEKLBSNbzsiDdP2rWIAAJKO4gKxdTArIuLgq7zrR74j46L\nn6IFwumKQRw0diGYD6wWIo/f9kGy1NQ46igmRYrEfzA5HWitEpF0mu6lz8mZ8m9s\na6CTEqwLFhP+qOcWtpGjNTa+OHENAmmAR4mR4Os4MsBBnb4RA//S/4suW419Cz8N\n1/Ul7KduYRKpRMSiS9YWbCvC5WiEvOvfp8Z4ecXlC+ohU5MLuCRPfP+blBvxNx2O\nsLotlbzDpim/gYiJCHgW3POlsLE=\n-----END CERTIFICATE-----\n"
  ],
  "created_at": "2024-11-12T13:50:14Z",
  "expires_at": "2024-11-12T14:50:14Z",
  "expires_in": 3600,
  "id": "9fd84246-7df4-4667-94e4-8ecde51d5ac5"
}

詳細については、 転送時の暗号化 - ファイル共有とホスト間のマウント接続の保護 を参照してください。

IDアクセストークンの復号化

IBM Cloud® Virtual Private Cloud IDメタデータアクセストークンは、標準的なJSON Web Token(JWT)です。 コマンドラインツール、オンラインデコーダー、またはプログラミング用ライブラリを使用してこれらをデコードすることで、有効期限(exp)、サーバー情報(iaas)、ノンセなどのクレームを確認できます。

ターミナルで IBM Cloud VPC のIDトークンをデコードする最も速い方法は、標準の Unix ツールや専用のCLIユーティリティを使用することです。

IDトークンは、ピリオド . で区切られた3つの部分(ヘッダー、ペイロード、署名)で構成されます。

  1. エンコードされたヘッダーオブジェクトは、キーと値のペアで構成されています。
  2. 本質的にキーと値のペアであるクレームで構成される、エンコード済みのペイロードオブジェクト。 以下は、IDトークンに含まれる IBM Cloud VPC のクレームの例です。
    • iaas
    • vpc
    • カスタムIPアドレス
    • subnets
  3. JWTコードが発行後に漏洩または改ざんされたかどうかを判断するために使用される、発行者の署名。 署名は、発行者がエンコードされたヘッダーおよびペイロードオブジェクトにサーバー鍵または秘密鍵を用いて署名を行うことで作成されます。 発行元は、 iss クレームによって示されます。
  • base64 とjqを使用してIDトークンをデコードするには、次のコマンドでペイロード(2番目の部分)をデコードします。

    # Replace <TOKEN> with your actual token string
    echo "<TOKEN>" | cut -d '.' -f 2 | base64 --decode | jq .
    

    URL-safe Base64 を使用するトークンの場合、デコードする前に、 -+ に、 _/ に置き換える必要がある場合があります。

  • jwt-cli を使用して ID トークンをデコードするには、以下の手順に従ってください。 この手順は慎重に行う必要があります。

    1. よりきれいな出力を得るために、専用のツールをインストールしてください。

      npm install -g jwt-cli
      
    2. 以下のコマンドを発行します。

      jwt decode <TOKEN>
      
    3. ペイロードセクションに記載されている情報を確認してください。 以下の例を参照してください。

      {
        "aud": [
          "VSI-CR_us-south",
          "247cd7d3-ff6b-11ef-8b70-ca73f727becf_63791398320466773051136262737897537855791952320"
        ],
        "exp": 1741802544,
        "iaas": {
          "crn": "crn:v1:staging:public:is:us-south-3:a/af6443f619a949c9919c1eb1625d6cc5::instance:7389_bca3d8e4-b8b4-42e0-881e-761a01a89f20",
          "accountID": "af6443f619a949c9919c1eb1625d6cc5",
          "instanceID": "7389_bca3d8e4-b8b4-42e0-881e-761a01a89f20",
          "zone": "us-south-3",
          "region": "us-south",
          "profile_name": "bx2-2x8",
          "resource_group_id": "6d42cce33e604a86b95485c5735be52d"
        },
        "iat": 1741802244,
        "ip_addresses": [
          {
            "address": "52.118.123.193"
          },
          {
            "address": "10.240.128.4"
          }
        ],
        "iss": "VSI-CR_us-south",
        "nonce": "2026-03-12T12:34:56.789Z",
        "subnets": [
          {
            "crn": "crn:v1:staging:public:is:us-south-3:a/af6443f619a949c9919c1eb1625d6cc5::subnet:7389-9b1a8341-5863-40da-a29f-9a9d6eef2a51",
            "name": "fode-sn3",
            "id": "7389-9b1a8341-5863-40da-a29f-9a9d6eef2a51"
          }
        ],
        "vpc": {
          "crn": "crn:v1:staging:public:is:us-south:a/af6443f619a949c9919c1eb1625d6cc5::vpc:r134-199db3c7-928c-41af-95fd-d4e166648773",
          "name": "fode",
          "id": "r134-199db3c7-928c-41af-95fd-d4e166648773"
        }
      }
      
    4. JWTを検証するには、 iss の署名を確認し、JWTの発行後にエンコードされたヘッダーオブジェクトおよびペイロードオブジェクトが改ざんされていないことを確認してください。

また、 python-jwtgolang-jwt などのサードパーティ製ツールを使用して、JWT をデコードすることもできます。

インスタンスの信頼済みプロファイルの作成

コンピューティングリソースのIDに対する信頼済みプロファイルを使用すると、仮想サーバーインスタンスなどの IBM Cloud® リソースに、 IBM Cloud® のIAM IDを割り当てることができます。 IAM シークレットを管理してインスタンスに配布しなくても、インスタンスからすべての IAM 対応サービスを呼び出すことができます。 IDアクセストークンからIAMトークンを生成し、それをインスタンスに関連付けることで、信頼済みプロファイルを作成できます。 詳しくは、 トラステッド・プロファイルを使用した IAM 対応サービスの呼び出しを参照してください。

次のステップ

IDアクセストークンを作成し、メタデータサービスへのアクセスを有効にすると、インスタンス、SSHキー、およびプレースメントグループのメタデータを取得できるようになります。 詳細については、 インスタンスからメタデータを取得するを 参照してください。