Tencent Cloud CLI:隔离 CAM 身份、profile 与接口地域
TCCLI 把腾讯云 API 暴露为统一命令入口,profile 选择账号和配置,产品命令再选择地域、endpoint 与接口版本。默认 profile 的历史状态很容易把只读查询或删除脚本带到错误账号,因此身份、地域和版本必须显式验证。
CAM 与 SSO 决定身份,profile 隔离本机状态
TCCLI 配置目录通常位于 ~/.tccli,credential 与 configure 文件分别保存身份材料和产品默认项。--profile 或 TCCLI_PROFILE 选择命名配置。当前官方文档还提供 SSO 登录路径,临时凭据在会话有效期内刷新;人员优先使用这类组织身份,CI 使用工作负载短期凭据。
tccli --version
tccli configure list
tccli sso login --profile dev-readonly
tccli sts GetCallerIdentity --profile dev-readonly若目标租户未启用 SSO,配置仍应由安全凭据入口注入,不能在命令行、仓库或公共环境变量中硬编码 SecretKey。身份查询返回的账号、UIN/角色信息应进入变更守卫。
配置文件和产品默认项需要共同复核
TCCLI 的 configure 文件可保存默认 Region、输出格式、endpoint 与产品 API version,credential 文件保存凭据。相同命令在两个 profile 下可能调用不同账号、地域甚至接口版本。脚本使用显式 --profile 和 --region,关键 API 还固定经验证的 --version。
tccli configure --profile dev-readonly
tccli configure list --profile dev-readonly
tccli cvm DescribeZones --profile dev-readonly --region ap-guangzhou配置交互前确认目标目录与 profile 名。自动化不解析带遮罩的人工展示输出,而是通过身份 API 和最小资源查询证明实际状态。
正向与反向调用要保留 RequestId
正向实验在明确地域查询少量开发资源,输出 InstanceId、状态、标签和 RequestId。反向实验调用 CAM 未授权动作或错误地域,确认返回明确错误码。AuthFailure、UnauthorizedOperation、InvalidParameter、资源不存在与限流代表不同故障层。
tccli cvm DescribeInstances \
--profile dev-readonly \
--region ap-guangzhou \
--Filters.0.Name tag:Environment \
--Filters.0.Values.0 dev
tccli cvm TerminateInstances \
--profile dev-readonly \
--region ap-guangzhou \
--InstanceIds.0 ins-intentional-negative-canary反例在隔离账号准备,不触碰生产实例。RequestId 连接终端输出、云审计、API 错误日志与工单,脚本不得只打印“失败”后丢掉原始响应。
地域、接口版本与输出格式属于长期契约
腾讯云产品 API 可能拥有独立版本和 endpoint。TCCLI 自身版本与 --version 指定的产品接口版本不是一回事。升级 CLI 或 API version 前,用固定正反样例比较请求参数、响应字段、错误码和分页方式。
脚本消费 JSON,并对字段缺失和空数组作明确判断。分页的 Offset/Limit 或其他 token 由产品 API 决定,批量资产查询需估算账号、地域、产品和页数。创建动作默认不开无限重试,避免网络超时后重复创建。
actual=$(tccli sts GetCallerIdentity --profile "$TCCLI_PROFILE")
printf '%s' "$actual" | jq -e --arg uin "$EXPECTED_UIN" '.Response.AccountId == $uin or .Response.UserId == $uin'
tccli cvm DescribeInstances --profile "$TCCLI_PROFILE" --region "$EXPECTED_REGION"CAM 权限、敏感响应和成本一起治理
CAM 用户、角色、策略和条件决定实际能力。人员只读、资源部署、成本盘点与审计查询使用不同身份;SSO 会话和临时密钥限制期限。credential 文件、debug 日志和 API 响应可能包含 Secret、资源地址与客户数据,上传前脱敏并设置访问保留。
容量来自地域、分页、产品 API 和重试,费用来自 CVM、磁盘、快照、公网 IP、日志、流量等关联对象。资源创建统一写 owner、environment、expires-at、cost-center 标签,后续清理才有可靠集合。
本地退出与云端吊销分别完成
tccli sso logout 结束 SSO 会话,删除 profile 只处理本机文件;二者都不会回滚云资源、CAM 策略或长期密钥。退出顺序是停止流水线、盘点和移交资源、验证依赖与备份、删除或降权,再注销和清理本地配置。
tccli sso logout --profile dev-readonly
tccli configure remove --profile dev-readonly
tccli cvm DescribeZones --profile dev-readonly --region ap-guangzhou最后一条应按预期失败。长期治理记录 profile owner、允许 UIN/地域、接口版本、CAM scope、RequestId 证据和清理演练,使 TCCLI 从个人终端快捷方式变成可审查的云 API 客户端。
工作站迁移只带走安装来源、profile 名称、允许地域和接口版本,不复制旧 credential。新电脑重新完成 SSO 或短期凭据登录,并运行身份、只读查询和越权拒绝三组验证。
