身份业务

你可以使用元数据服务从元数据服务中获取身份访问令牌,生成 IAM 访问令牌,并创建身份证书。 这些令牌和证书可用于访问元数据服务以调用启用IAM的服务,并在文件共享与虚拟服务器实例之间建立加密连接。

身份访问令牌

身份访问令牌为访问 IBM Cloud® 元数据和VPC身份服务提供了安全凭证。 它是一个经过签名的令牌,带有一组基于实例信息和令牌请求中传递的信息的声明。 使用身份访问令牌功能的最低版本日期为 2022-03-01

实例与元数据服务之间的通信始终在主机内部进行。 您需在实例内部获取该令牌。 如果您的实例启用了安全访问元数据服务,请使用 "https "协议而不是 "http "协议。

要获取身份令牌,请向 元数据服务 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 小时之间的任何值。 请参阅以下启用了安全访问的主机示例。 在下一个示例中,令牌的过期时间被指定为一小时。

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 响应包含身份访问令牌。 使用此令牌访问元数据服务。

下面的 JSON 响应显示了身份访问令牌字符串、创建日期和时间、过期日期和时间以及您设置的过期时间。 该令牌 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 命令的返回值是身份访问令牌。 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)'`

jq jq 可能不会预装在创建实例时可用的所有 VPC 映像 。 在使用前,您可能需要安装 jq 或使用您选择的其他解析器。

您可以在 GET 元数据服务调用中指定 identity_token 变量,以调用其中一个元数据方法。 如需了解更多信息,请参阅 从正在运行的实例中检索元数据

您还可以根据此身份令牌生成 IAM 令牌,并使用 VPC API 调用启用了 IAM 的服务。 有关更多信息,请参阅 从身份访问令牌生成 IAM 令牌

从身份访问令牌生成 IAM 令牌

要访问 IBM Cloud 账户中启用了 IAM 的服务,可以通过身份访问令牌和受信任配置文件生成 IAM 令牌。 生成 IAM 令牌后,您可以使用它访问启用了 IAM 的服务,如 IBM Cloud Object Storage、云数据库服务和 VPC API。 您可以多次重复使用令牌。

提出 POST /identity/v1/iam_tokens 请求,并指定受信任配置文件的 ID。 该请求使用身份访问令牌和链接到虚拟服务器实例的受信任配置文件来生成 IAM 访问令牌。 可信配置文件可以在创建实例时链接,也可以在请求正文中提供。

用于传递身份访问令牌和生成 IAM 令牌的 IAM API 已被弃用。 测试版用户必须迁移到元数据服务 API,使用 POST /identity/v1/iam_tokens 生成 IAM 令牌。

示例请求:

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 的服务

使用身份访问令牌生成身份证书

要在虚拟服务器实例和 IBM Cloud® File Storage for VPC 共享之间成功启用和使用传输加密,需要身份证书。 要为实例生成身份证书,请使用身份访问令牌和证书签名请求(CSR)调用 POST /identity/v1/certificates

您可以通过开源命令行工具包获取证书签名请求(CSR)。OpenSSL

  1. 以下命令使用 openssl 生成证书签名请求 (CSR)和 RSA 密钥对。 运行该命令时,请将 US 中的国家代码替换为 '/C=US' 中的两位数国家代码。

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

    如果您使用不同的软件创建 CSR,可能会提示您输入有关您所在地的信息,如国家代码 (C)、州 (ST)、地区 (L)、您的组织名称 (O) 和组织单位 (OU)。 可以使用其中任何一个命名属性。 任何其他命名属性(如通用名称)均不予接受。 指定了“通用名”的 CSR 会被拒绝,因为在向元数据 API 提出请求时,系统会将实例 ID 值应用于身份证书的主题“通用名”。 带有扩展名的 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"
}

有关详细信息,请参阅 传输中加密 - 保护文件共享与主机之间的挂载连接

解析身份访问令牌

IBM Cloud® Virtual Private Cloud 身份元数据访问令牌是标准的 JSON Web Tokens(JWT)。 您可以使用命令行工具、在线解码器或编程库对它们进行解码,以查看诸如过期时间(exp)、服务器信息(iaas)和非ce等声明。

在终端中解码 IBM Cloud VPC 身份令牌的最快方法是使用标准的 Unix 工具或专门的CLI实用程序。

身份令牌由三部分(头、有效载荷、签名)组成,各部分之间以句点 . 分隔。

  1. 编码后的头对象由键值对组成。
  2. 由声明组成的编码有效载荷对象,这些声明本质上是键值对。 以下是身份令牌中 IBM Cloud VPC 声明的示例。
    • iaas
    • vpc
    • 自定义 IP 地址
    • subnets
  3. 发行者的签名,用于判断JWT代码在签发后是否遭到泄露或篡改。 签名是由签发者使用服务器密钥或私钥对编码后的头部和有效载荷对象进行签名而生成的。 发行者由 iss 声明标识。
  • 要使用 base64 和 jq 解码身份令牌,可以使用以下命令解码有效载荷(第二部分)。

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

    对于使用 URL-safe Base64 的代币,在解码前,您可能需要将 - 替换为 +,并将 _ 替换为 /

  • 要使用 jwt-cli 解码身份令牌,请按照以下步骤操作。 使用此流程时应谨慎。

    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。

为实例创建可信配置文件

计算资源身份的受信任配置文件可帮助您为 IBM Cloud® 资源(如虚拟服务器实例)分配 IBM Cloud® IAM 身份。 您可以从实例调用任何支持 IAM 的服务,而无需管理和向实例分发 IAM 秘密。 从身份访问令牌生成 IAM 令牌并将其链接到实例时,可以创建受信任配置文件。 有关详细信息,请参阅 使用受信任配置文件调用启用 IAM 的服务

后续步骤

创建身份访问令牌并启用对元数据服务的访问后,就可以检索实例、SSH 密钥和放置组的元数据。 更多信息,请参阅 从实例检索元数据