创建工作负载身份
功能介绍
创建一个新的工作负载身份。工作负载身份用于为工作负载(如Agent运行时)提供统一的身份标识,支持配置自定义JWT、IAM、API Key等多种授权方式,实现对入站请求的身份验证和授权。
URI
POST /v1/workload-identities
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| name | 是 | String | 参数解释: 工作负载身份名称,用于唯一标识一个工作负载身份。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字及"-"、"_"组成,长度为1~56个字符。 默认取值: 不涉及。 |
| allowed_resource_oauth2_return_urls | 否 | Array of strings | 参数解释: 工作负载身份关联的资源OAuth2回调地址列表。用于指定OAuth2授权流程中允许的回调地址,确保令牌仅返回到受信任的URL。 约束限制: 列表最多允许20个回调地址。 取值范围: 符合URL格式的字符串,必须以协议开头(如https://),长度为1~2048个字符。 默认取值: 不涉及。 |
| authorizer_type | 是 | String | 参数解释: 授权类型,用于指定工作负载身份的入站请求身份验证方式。不同的授权类型对应不同的授权配置。 约束限制: 创建工作负载身份时必填,创建后不可修改。 取值范围: 默认取值: 不涉及。 |
| authorizer_configuration | 否 | AuthorizerConfiguration object | 参数解释: 入站授权配置,用于定义工作负载身份如何验证入站请求的身份。根据授权类型(authorizer_type)的不同,需要配置对应的授权参数。 约束限制: 当authorizer_type为CUSTOM_JWT时,需配置custom_jwt;当authorizer_type为API_KEY时,需配置key_auth。 取值范围: 不涉及。 默认取值: 不涉及。 |
| tags | 否 | Array of Tag objects | 参数解释: 自定义标签列表,用于为工作负载身份添加标签,便于分类和管理。 约束限制: 列表最多20个标签。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| custom_jwt | 否 | 参数解释: 自定义JWT授权配置,用于配置通过外部身份提供商签发的JWT令牌进行入站请求身份验证的参数。当authorizer_type为CUSTOM_JWT时使用此配置。 约束限制: 仅当authorizer_type为CUSTOM_JWT时有效。 取值范围: 不涉及。 默认取值: 不涉及。 | |
| key_auth | 否 | 参数解释: API Key授权配置,用于配置通过预置API密钥进行入站请求身份验证的参数。当authorizer_type为API_KEY时使用此配置。 约束限制: 仅当authorizer_type为API_KEY时有效。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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条规则。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| authorizing_claim_match_value | 是 | AuthorizingClaimMatchValue object | 参数解释: 授权声明匹配值,定义入站JWT令牌中声明字段值与预期值之间的匹配关系。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| inbound_token_claim_name | 是 | String | 参数解释: 需要验证的自定义声明字段名称。入站JWT令牌中必须包含此声明字段,且其值需满足匹配规则。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字及"_"、"."、"-"、":"组成,长度为1~255个字符。 默认取值: 不涉及。 |
| inbound_token_claim_value_type | 是 | String | 参数解释: 声明字段值的数据类型,用于确定如何解析和匹配入站JWT令牌中的声明值。 约束限制: 不涉及。 取值范围: 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| claim_match_operator | 是 | String | 参数解释: 声明匹配操作符,定义声明字段值与匹配值之间的关系类型。 约束限制: 不涉及。 取值范围: 默认取值: 不涉及。 |
| claim_match_value | 是 | ClaimMatchValue object | 参数解释: 声明匹配值,指定用于与入站JWT令牌中声明字段值进行比对的预期值。根据声明值类型(STRING或STRING_ARRAY),使用match_value_string或match_value_string_list。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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个字符。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| api_keys | 是 | Array of ApiKeyInfo objects | 参数解释: API密钥信息列表,用于配置一个或多个API密钥。在密钥轮换期间,列表中的任意一个密钥均可用于身份验证。 约束限制: 列表最多允许10个API密钥。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| api_key | 是 | String | 参数解释: API密钥值。在密钥轮换期间,列表中的任意一个密钥均可用于身份验证。如果为空,系统将自动生成一个随机字符串。 约束限制: 不涉及。 取值范围: 不能以空格开头或结尾,长度为1~1024个字符。 默认取值: 不涉及。 |
| api_key_name | 否 | String | 参数解释: API密钥名称,用于标识和区分不同的API密钥。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字及"-"、"_"组成,长度为0~64个字符。 默认取值: 空字符串。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key | 是 | String | 参数解释: 标签键,用于标识标签的名称。 约束限制: 首尾不能包含空格,不能以"_sys_"开头。 取值范围: 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"符号的任意组合,长度为1~128个字符。 默认取值: 不涉及。 |
| value | 是 | String | 参数解释: 标签值,用于标识标签的具体内容。 约束限制: 不涉及。 取值范围: 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"、"&"符号的任意组合,可以是空字符串,长度为0~255个字符。 默认取值: 不涉及。 |
响应参数
状态码:201
| 参数 | 参数类型 | 描述 |
|---|---|---|
| workload_identity | WorkloadIdentity object | 参数解释: 工作负载身份的详细信息,包含名称、URN、授权类型、API密钥凭证、创建者、创建时间、更新时间和标签等。 取值范围: 不涉及。 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| 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 | 参数解释: 授权类型,用于指定工作负载身份的入站请求身份验证方式。不同的授权类型对应不同的授权配置。 取值范围: |
| 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 | 参数解释: 自定义标签列表。 取值范围: 不涉及。 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| secret_id | String | 参数解释: 凭证ID,唯一标识CSMS中的凭证。 取值范围: 只能由英文字母、数字及"-"、"_"组成,长度为1~64个字符。 |
| secret_name | String | 参数解释: 凭证名称,CSMS中存储的凭证名称。 取值范围: 只能由英文字母、数字及"-"、"_"组成,长度为1~64个字符。 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| type | String | 参数解释: 工作负载身份创建者类型,标识创建者是由用户还是由服务创建的。 取值范围: |
| identifier | String | 参数解释: 工作负载身份创建者标识。当创建者类型为CUSTOMER时,标识为用户的账号ID;当创建者类型为SERVICE时,标识为服务名称。 取值范围: 不涉及。 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| key | String | 参数解释: 标签键,用于标识标签的名称。 取值范围: 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"符号的任意组合,长度为1~128个字符。 |
| value | String | 参数解释: 标签值,用于标识标签的具体内容。 取值范围: 可以包含任意语种字母、数字、空格以及"_"、"."、":"、"/"、"="、"+"、"-"、"@"、"&"符号的任意组合,可以是空字符串,长度为0~255个字符。 |
状态码:400
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
状态码:409
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
请求示例
-
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" } ] } -
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 | 请求冲突。 |
错误码
请参见错误码。