更新时间:2026-11-04 GMT+08:00
分享

创建工作负载身份

功能介绍

创建一个新的工作负载身份。工作负载身份用于为工作负载(如Agent运行时)提供统一的身份标识,支持配置自定义JWT、IAM、API Key等多种授权方式,实现对入站请求的身份验证和授权。

URI

POST /v1/workload-identities

请求参数

表1 请求Body参数

参数

是否必选

参数类型

描述

name

是

String

参数解释:

工作负载身份名称,用于唯一标识一个工作负载身份。

约束限制:

不涉及。

取值范围:

只能由英文字母、数字及"-"、"_"组成,长度为1~56个字符。

默认取值:

不涉及。

allowed_resource_oauth2_return_urls

否

Array of strings

参数解释:

工作负载身份关联的资源OAuth2回调地址列表。用于指定OAuth2授权流程中允许的回调地址,确保令牌仅返回到受信任的URL。

约束限制:

列表最多允许20个回调地址。

取值范围:

符合URL格式的字符串,必须以协议开头(如https://),长度为1~2048个字符。

默认取值:

不涉及。

authorizer_type

是

String

参数解释:

授权类型,用于指定工作负载身份的入站请求身份验证方式。不同的授权类型对应不同的授权配置。

约束限制:

创建工作负载身份时必填,创建后不可修改。

取值范围:

  • CUSTOM_JWT:自定义JWT授权,通过外部身份提供商的JWT令牌进行身份验证。

  • IAM:IAM授权,通过华为云IAM服务进行身份验证。

  • API_KEY:API Key授权,通过预置的API密钥进行身份验证。

  • NONE:无授权,不进行入站请求身份验证。

默认取值:

不涉及。

authorizer_configuration

否

AuthorizerConfiguration object

参数解释:

入站授权配置,用于定义工作负载身份如何验证入站请求的身份。根据授权类型(authorizer_type)的不同,需要配置对应的授权参数。

约束限制:

当authorizer_type为CUSTOM_JWT时,需配置custom_jwt;当authorizer_type为API_KEY时,需配置key_auth。

取值范围:

不涉及。

默认取值:

不涉及。

tags

否

Array of Tag objects

参数解释:

自定义标签列表,用于为工作负载身份添加标签,便于分类和管理。

约束限制:

列表最多20个标签。

取值范围:

不涉及。

默认取值:

不涉及。

表2 AuthorizerConfiguration

参数

是否必选

参数类型

描述

custom_jwt

否

CustomJWTAuthorizerConfiguration object

参数解释:

自定义JWT授权配置,用于配置通过外部身份提供商签发的JWT令牌进行入站请求身份验证的参数。当authorizer_type为CUSTOM_JWT时使用此配置。

约束限制:

仅当authorizer_type为CUSTOM_JWT时有效。

取值范围:

不涉及。

默认取值:

不涉及。

key_auth

否

KeyAuthAuthorizerConfiguration object

参数解释:

API Key授权配置,用于配置通过预置API密钥进行入站请求身份验证的参数。当authorizer_type为API_KEY时使用此配置。

约束限制:

仅当authorizer_type为API_KEY时有效。

取值范围:

不涉及。

默认取值:

不涉及。

表3 CustomJWTAuthorizerConfiguration

参数

是否必选

参数类型

描述

discovery_url

是

String

参数解释:

OpenID Connect发现地址(Discovery URL),用于获取身份提供商的OIDC配置信息,包括签发者地址、JWKS端点等。

约束限制:

不涉及。

取值范围:

必须以https://开头,且以/.well-known/openid-configuration结尾,长度为1~2048个字符。

默认取值:

不涉及。

allowed_audience

否

Array of strings

参数解释:

允许的JWT受众(audience)值列表。入站JWT令牌中的aud声明必须匹配此列表中的某个值才能通过验证。

约束限制:

列表最多允许100个值。

取值范围:

只能由英文字母、数字及"."、"_"、"-"组成,单个值长度为1~256个字符。

默认取值:

不涉及。

allowed_clients

否

Array of strings

参数解释:

允许的JWT客户端标识(client_id)列表。入站JWT令牌中的client_id声明必须匹配此列表中的某个值才能通过验证。

约束限制:

列表最多允许100个值。

取值范围:

只能由英文字母、数字及"."、"_"、"-"组成,单个值长度为1~256个字符。

默认取值:

不涉及。

allowed_scopes

否

Array of strings

参数解释:

允许的JWT scope值列表。入站JWT令牌中的scope声明必须包含此列表中的某个值才能通过验证。

约束限制:

列表最多允许100个值。

取值范围:

只能由英文字母、数字及"."、"_"、":"、"-"组成,单个值长度为1~256个字符。

默认取值:

不涉及。

custom_claims

否

Array of CustomClaimValidation objects

参数解释:

自定义声明(claim)验证规则列表,用于对入站JWT令牌中的自定义声明字段进行匹配验证。

约束限制:

列表最多允许100条规则。

取值范围:

不涉及。

默认取值:

不涉及。

表4 CustomClaimValidation

参数

是否必选

参数类型

描述

authorizing_claim_match_value

是

AuthorizingClaimMatchValue object

参数解释:

授权声明匹配值,定义入站JWT令牌中声明字段值与预期值之间的匹配关系。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

inbound_token_claim_name

是

String

参数解释:

需要验证的自定义声明字段名称。入站JWT令牌中必须包含此声明字段,且其值需满足匹配规则。

约束限制:

不涉及。

取值范围:

只能由英文字母、数字及"_"、"."、"-"、":"组成,长度为1~255个字符。

默认取值:

不涉及。

inbound_token_claim_value_type

是

String

参数解释:

声明字段值的数据类型,用于确定如何解析和匹配入站JWT令牌中的声明值。

约束限制:

不涉及。

取值范围:

  • STRING:字符串类型,声明值为单个字符串。

  • STRING_ARRAY:字符串数组类型,声明值为字符串列表。

默认取值:

不涉及。

表5 AuthorizingClaimMatchValue

参数

是否必选

参数类型

描述

claim_match_operator

是

String

参数解释:

声明匹配操作符,定义声明字段值与匹配值之间的关系类型。

约束限制:

不涉及。

取值范围:

  • EQUALS:等于,声明值必须完全等于匹配值。

  • CONTAINS:包含,声明值(字符串)必须包含匹配值。

  • CONTAINS_ANY:包含任意一个,声明值(数组)中至少包含匹配值列表中的一个元素。

默认取值:

不涉及。

claim_match_value

是

ClaimMatchValue object

参数解释:

声明匹配值,指定用于与入站JWT令牌中声明字段值进行比对的预期值。根据声明值类型(STRING或STRING_ARRAY),使用match_value_string或match_value_string_list。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

表6 ClaimMatchValue

参数

是否必选

参数类型

描述

match_value_string

否

String

参数解释:

字符串类型的匹配值,当inbound_token_claim_value_type为STRING时使用。

约束限制:

不涉及。

取值范围:

只能由英文字母、数字及"_"、"."、"-"组成,长度为1~255个字符。

默认取值:

不涉及。

match_value_string_list

否

Array of strings

参数解释:

字符串数组类型的匹配值列表项,当inbound_token_claim_value_type为STRING_ARRAY时使用。

约束限制:

不涉及。

取值范围:

只能由英文字母、数字及"_"、"."、"-"组成,单个值长度为1~255个字符。

默认取值:

不涉及。

表7 KeyAuthAuthorizerConfiguration

参数

是否必选

参数类型

描述

api_keys

是

Array of ApiKeyInfo objects

参数解释:

API密钥信息列表,用于配置一个或多个API密钥。在密钥轮换期间,列表中的任意一个密钥均可用于身份验证。

约束限制:

列表最多允许10个API密钥。

取值范围:

不涉及。

默认取值:

不涉及。

表8 ApiKeyInfo

参数

是否必选

参数类型

描述

api_key

是

String

参数解释:

API密钥值。在密钥轮换期间,列表中的任意一个密钥均可用于身份验证。如果为空,系统将自动生成一个随机字符串。

约束限制:

不涉及。

取值范围:

不能以空格开头或结尾,长度为1~1024个字符。

默认取值:

不涉及。

api_key_name

否

String

参数解释:

API密钥名称,用于标识和区分不同的API密钥。

约束限制:

不涉及。

取值范围:

只能由英文字母、数字及"-"、"_"组成,长度为0~64个字符。

默认取值:

空字符串。

表9 Tag

参数

是否必选

参数类型

描述

key

是

String

参数解释:

标签键,用于标识标签的名称。

约束限制:

首尾不能包含空格,不能以"_sys_"开头。

取值范围:

可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"符号的任意组合,长度为1~128个字符。

默认取值:

不涉及。

value

是

String

参数解释:

标签值,用于标识标签的具体内容。

约束限制:

不涉及。

取值范围:

可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"、"&"符号的任意组合,可以是空字符串,长度为0~255个字符。

默认取值:

不涉及。

响应参数

状态码:201

表10 响应Body参数

参数

参数类型

描述

workload_identity

WorkloadIdentity object

参数解释:

工作负载身份的详细信息,包含名称、URN、授权类型、API密钥凭证、创建者、创建时间、更新时间和标签等。

取值范围:

不涉及。

表11 WorkloadIdentity

参数

参数类型

描述

workload_identity_id

String

参数解释:

工作负载身份的唯一标识。

取值范围:

只能由英文字母、数字及"-"、"_"组成,长度为1~64个字符。

name

String

参数解释:

工作负载身份名称,用于唯一标识一个工作负载身份。

取值范围:

只能由英文字母、数字及"-"、"_"组成,长度为1~56个字符。

urn

String

参数解释:

工作负载身份的唯一资源名称(URN),由系统自动生成,用于全局唯一标识一个工作负载身份。

取值范围:

只能由英文字母、数字及"/"、"="、"_"、":"、"-"组成,长度为16~1500个字符。

allowed_resource_oauth2_return_urls

Array of strings

参数解释:

工作负载身份关联的资源OAuth2回调地址列表。

取值范围:

符合URL格式的字符串,必须以协议开头(如https://),长度为1~2048个字符。

authorizer_type

String

参数解释:

授权类型,用于指定工作负载身份的入站请求身份验证方式。不同的授权类型对应不同的授权配置。

取值范围:

  • CUSTOM_JWT:自定义JWT授权,通过外部身份提供商的JWT令牌进行身份验证。

  • IAM:IAM授权,通过华为云IAM服务进行身份验证。

  • API_KEY:API Key授权,通过预置的API密钥进行身份验证。

  • NONE:无授权,不进行入站请求身份验证。

api_key_secret

Secret object

参数解释:

凭证信息,包含凭证ID和凭证名称。用于API Key授权方式下,标识存储在CSMS(凭证管理服务)中的API密钥凭证。

取值范围:

不涉及。

created_by

CreatedBy object

参数解释:

工作负载身份的创建者信息,包含创建者类型和创建者标识。

取值范围:

不涉及。

created_at

String

参数解释:

UTC时间戳,记录资源的创建或更新时间。

取值范围:

使用UTC+0时间格式,格式为yyyy-MM-ddTHH:mm:ssZ。例如:2025-01-01T00:00:00Z。

updated_at

String

参数解释:

UTC时间戳,记录资源的创建或更新时间。

取值范围:

使用UTC+0时间格式,格式为yyyy-MM-ddTHH:mm:ssZ。例如:2025-01-01T00:00:00Z。

tags

Array of Tag objects

参数解释:

自定义标签列表。

取值范围:

不涉及。

表12 Secret

参数

参数类型

描述

secret_id

String

参数解释:

凭证ID,唯一标识CSMS中的凭证。

取值范围:

只能由英文字母、数字及"-"、"_"组成,长度为1~64个字符。

secret_name

String

参数解释:

凭证名称,CSMS中存储的凭证名称。

取值范围:

只能由英文字母、数字及"-"、"_"组成,长度为1~64个字符。

表13 CreatedBy

参数

参数类型

描述

type

String

参数解释:

工作负载身份创建者类型,标识创建者是由用户还是由服务创建的。

取值范围:

  • CUSTOMER:由用户创建。

  • SERVICE:由服务自动创建。

identifier

String

参数解释:

工作负载身份创建者标识。当创建者类型为CUSTOMER时,标识为用户的账号ID;当创建者类型为SERVICE时,标识为服务名称。

取值范围:

不涉及。

表14 Tag

参数

参数类型

描述

key

String

参数解释:

标签键,用于标识标签的名称。

取值范围:

可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"符号的任意组合,长度为1~128个字符。

value

String

参数解释:

标签值,用于标识标签的具体内容。

取值范围:

可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"、"&"符号的任意组合,可以是空字符串,长度为0~255个字符。

状态码:400

表15 响应Body参数

参数

参数类型

描述

error_code

String

参数解释:

错误码。

取值范围:

不涉及。

error_msg

String

参数解释:

错误信息。

取值范围:

不涉及。

request_id

String

参数解释:

请求ID。

取值范围:

不涉及。

encoded_authorization_message

String

参数解释:

加密后的认证失败信息,可以通过STS5解密接口进行解密。

取值范围:

不涉及。

状态码:409

表16 响应Body参数

参数

参数类型

描述

error_code

String

参数解释:

错误码。

取值范围:

不涉及。

error_msg

String

参数解释:

错误信息。

取值范围:

不涉及。

request_id

String

参数解释:

请求ID。

取值范围:

不涉及。

encoded_authorization_message

String

参数解释:

加密后的认证失败信息,可以通过STS5解密接口进行解密。

取值范围:

不涉及。

请求示例

  • 创建使用自定义JWT授权的工作负载身份。

    POST https://{endpoint}/v1/workload-identities
    
    {
      "name" : "my_workload_identity",
      "allowed_resource_oauth2_return_urls" : [ "https://example.com/oauth2/callback" ],
      "authorizer_type" : "CUSTOM_JWT",
      "authorizer_configuration" : {
        "custom_jwt" : {
          "discovery_url" : "https://example.com/.well-known/openid-configuration",
          "allowed_audience" : [ "example-audience" ],
          "allowed_clients" : [ "example-client-id" ],
          "allowed_scopes" : [ "read", "write" ],
          "custom_claims" : [ {
            "inbound_token_claim_name" : "tenant",
            "inbound_token_claim_value_type" : "STRING",
            "authorizing_claim_match_value" : {
              "claim_match_operator" : "EQUALS",
              "claim_match_value" : {
                "match_value_string" : "acme"
              }
            }
          }, {
            "inbound_token_claim_name" : "roles",
            "inbound_token_claim_value_type" : "STRING_ARRAY",
            "authorizing_claim_match_value" : {
              "claim_match_operator" : "CONTAINS_ANY",
              "claim_match_value" : {
                "match_value_string_list" : [ "admin", "editor" ]
              }
            }
          } ]
        }
      },
      "tags" : [ {
        "key" : "key-1",
        "value" : "value-1"
      } ]
    }
  • 创建使用API Key授权的工作负载身份。

    POST https://{endpoint}/v1/workload-identities
    
    {
      "name" : "my_workload_identity",
      "authorizer_type" : "API_KEY",
      "authorizer_configuration" : {
        "key_auth" : {
          "api_keys" : [ {
            "api_key" : "22243eefff**",
            "api_key_name" : "test-key-1"
          }, {
            "api_key" : "22243eefff**",
            "api_key_name" : "test-key-2"
          } ]
        }
      }
    }

响应示例

状态码:201

{
  "workload_identity" : {
    "workload_identity_id" : "684a2c3e5f1b9d0e7a3c4f56",
    "name" : "my_workload_identity",
    "urn" : "agentIdentity:<region>:<account-id>:workloadIdentity:workloadIdentityDirectory/<workload-directory-id>/<workload-identity-name>",
    "authorizer_type" : "CUSTOM_JWT",
    "api_key_secret" : "null,",
    "allowed_resource_oauth2_return_urls" : [ "https://example.com/oauth2/callback" ],
    "created_by" : {
      "type" : "SERVICE",
      "identifier" : "service.AgentRuntime"
    },
    "created_at" : "2025-01-01 00:00:00",
    "updated_at" : "2025-01-01 00:00:00",
    "tags" : [ {
      "key" : "key-1",
      "value" : "value-1"
    } ]
  }
}

状态码

状态码

描述

201

请求成功。

400

请求体异常。

409

请求冲突。

错误码

请参见错误码。

相关文档