全部產品
Search
文件中心

智能體身分(Agent Identity):擷取STS Token

更新時間:Jun 26, 2026

本文為您介紹通過 Agent Identity 擷取 STS Token 以訪問阿里雲服務(如 ECS、OSS、VPC 等)的認證流程和代碼配置方式。

工作流程

  1. 完成入站認證。Agent 通過 Agent Identity SDK 調用 Agent Identity 服務的GetWorkloadAccessToken*系列介面擷取 Workload Access Token。常見的入站認證方式是使用外部身份供應商簽發的 JWT Token。

  2. 擷取 STS Token。Agent Identity SDK 使用擷取的 Workload Access Token,調用 Agent Identity 服務的AssumeRoleForWorkloadIdentity介面進行角色扮演,擷取臨時安全性權杖 STS Token(包含 AccessKeyId、AccessKeySecret 和 SecurityToken)。

  3. 訪問阿里雲資源。Agent 使用擷取的 STS Token 調用阿里雲 OpenAPI,以 Workload Identity 關聯的運行時 RAM 角色身份安全地訪問 ECS、OSS、VPC 等阿里雲服務。

前提條件

在調用 Agent Identity 擷取 STS Token 前,需要完成 Workload Identity 的建立及其運行時 RAM 角色的授權配置:

  • 通過 Agent Identity 控制台或 Agent Identity CLI 建立 Workload Identity。使用 CLI 建立時會自動產生同名的運行時 RAM 角色(命名格式為 agentidentityrole-${workloadIdentityName})。

  • 在 RAM 控制台為該運行時 RAM 角色授予訪問目標阿里雲服務所需的權限原則(例如訪問 VPC 時授予 AliyunVPCFullAccess系統策略)。

使用方式

完成上述前置配置後,即可在 Agent 中使用 Agent Identity SDK 擷取 STS Token。在需要使用 STS Token 調用阿里雲 OpenAPI 的函數前,添加@requires_sts_token註解。Agent Identity SDK 會自動完成入站認證、擷取 Workload Access Token,並以此請求 STS Token,最終將 STS Token 注入到目標函數的指定參數中。

以下範例程式碼(Python)示範了在 Agent 中使用 STS Token 調用阿里雲 VPC OpenAPI 建立 VPC:

from typing import Optional

from agent_identity_python_sdk.core.decorators import get_region, requires_sts_token
from agent_identity_python_sdk.model import STSCredential

from alibabacloud_vpc20160428.client import Client as Vpc20160428Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_vpc20160428 import models as vpc_20160428_models

@requires_sts_token(
    inject_param_name="sts_credential"
)
def create_vpc(
    name: str,
    region_id: str,
    cidr_block: str,
    sts_credential: Optional[STSCredential] = None,
):
    # Initialize Alibaba Cloud OpenAPI client by using STS credential
    config = open_api_models.Config(
        access_key_id=sts_credential.access_key_id,
        access_key_secret=sts_credential.access_key_secret,
        security_token=sts_credential.security_token,
    )
    config.endpoint = f'vpc.{region_id}.aliyuncs.com'
    client = Vpc20160428Client(config)

    # Call OpenAPI to create VPC
    request = vpc_20160428_models.CreateVpcRequest(
        region_id=region_id,
        cidr_block=cidr_block,
        vpc_name=name,
        description='This is a test VPC.'
    )
    response = client.create_vpc(request)

更多內容,請參考擷取STS Token樣本

常見問題

如何區分STS Token是否為Agent Identity頒發?

與普通由阿里雲 STS 服務頒發的 STS Token(例如 RAM 使用者調用 AssumeRole 介面擷取的 STS Token)不同,Agent Identity 頒發的 STS Token 會攜帶調用方 Agent 的身份資訊(如 Workload Identity 與入站認證使用者身份)用於許可權控制及Action Trail。

當 Agent 使用 Agent Identity 頒發的 STS Token 調用阿里雲 OpenAPI(例如建立 VPC)時,Action Trail事件的 userIdentity 欄位會包含 externalIdentityContext,記錄 Workload Identity ARN、入站使用者身份等資訊。例如:

{
  ...
  "userIdentity": {
    "type": "assumed-role",
    ...
    "sessionContext": {
      "externalIdentityContext": {
        "agentidentityWorkloadIdentityArn": "acs:agentidentity:cn-beijing:<account_id>:workloadidentitydirectory/default/workloadidentity/<workload-identity-name>",
        "agentidentityInboundJwtClaimIss": "https://<oauth.yourcompany.com>",
        "agentidentityInboundJwtClaimSub": "iiCsOvhjNZX/hK0x1jl9****"
      }
    }
  }
  ...
  "eventName": "CreateVpc"
}