使用自定义策略授权

最近更新时间:2026-04-23 15:58:51

我的收藏
本文介绍如何自定义配置云开发自定义策略,为子账号授权特定权限。
说明:
自定义策略支持更加灵活的权限配置,允许做细粒度的权限划分,您可以对策略中的元素进行设置,包括操作(action)、资源(resource)、以及效力(effect),如需了解更多的策略语法,详情请参见 元素参考

开通云开发

首次使用腾讯云云开发时,需要授权并开通云开发,不同身份的开通方式如下:
主账号:初次进入云开发控制台,控制台会提示授权确认,确认授权后即可创建环境。
说明:
此行为是一次性行为,只要开通过云开发,后续都不再需要此操作。(推荐)
子账号:子账号需要主账号授权资源访问后,才可使用。开通方式请参见下文 使用云开发

配置按环境隔离的策略

前置准备

在拼接 Policy 之前,您需要先获取目标环境的基本信息及其关联的云资源标识。
变量
说明
获取方式
${uin}
主账号 UIN
${appId}
腾讯云账号 AppId
${region}
环境所在地域,如 ap-shanghai、ap-guangzhou
DescribeEnvs 接口返回的 Region
${envId}
云开发环境 ID,如 your-env-id-001
DescribeEnvs 接口返回的 EnvId
${namespace}
SCF 云函数命名空间(通常与 envId 相同)
DescribeEnvs 接口返回的 Functions
${topicId}
CLS 日志主题 ID
DescribeEnvs 接口返回的 LogServices
${bucket}
COS 存储桶名称(含 AppId 后缀),如 tcb-xxx-123456
DescribeEnvs 接口返回的 Storages
调用 DescribeEnvs 接口获取环境关联的资源
${region} = EnvList[0].Region -> "ap-shanghai"
${envId} = EnvList[0].EnvId -> "your-env-id-001"
${namespace} = EnvList[0].Functions[0].Namespace -> "your-env-id-001"
${topicId} = EnvList[0].LogServices[0].TopicId -> "xxx-topic-id"
${appId} = EnvList[0].Storages[0].AppId -> "1234567890"
${bucket} = EnvList[0].Storages[0].Bucket -> "tcb-xxx-1234567890"

策略语法

本条策略语法可以帮助主账号对子账号的环境权限进行设置。
说明:
您需要将{$region}等变量替换为真实的值,实现对子账户设置特定环境的访问权限。
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cam:CreateRole",
"cam:AttachRolePolicy",
"cam:ListAttachedRolePolicies",
"cam:UpdatePolicy",
"cam:CreateServiceLinkedRole",
"cam:DescribeServiceLinkedRole",
"cam:GetRole",
"tcb:CheckTcbService",
"tcb:DescribePackages",
"tcb:DescribeEnvLimit",
"tcb:DescribeBillingInfo",
"tcb:DescribeExtensionsInstalled",
"tcb:DescribeCloudBaseRunAdvancedConfiguration",
"tcb:DescribeCloudBaseProjectLatestVersionList",
"tcb:DescribeExtensions",
"tcb:DescribePostPackage",
"tcb:DescribeICPResources",
"tcb:DescribeExtensionUpgrade",
"tcb:DescribeMonitorMetric",
"tcb:DescribeLowCodeUserQuotaUsage",
"tcb:DescribeEnvStatistics",
"tcb:DescribeLowCodeEnvQuotaUsage",
"tcb:CheckFeaturePermission",
"tcb:DescribeCommonBillingResources",
"tcb:DescribeCommonBillingPackages",
"tcb:DescribeExtraPackages",
"ssl:DescribeCertificateDetail",
"ssl:DescribeCertificates"
],
"resource": ["*"]
},
{
"effect": "allow",
"action": ["tcb:*"],
"resource": ["qcs::tcb:${region}:uin/${uin}:env/${envId}"]
},
{
"effect": "allow",
"action": ["tcbr:*"],
"resource": ["qcs::tcbr:${region}:uin/${uin}:env/${envId}"]
},
{
"effect": "allow",
"action": ["lowcode:*"],
"resource": ["qcs::lowcode::uin/${uin}:env/${envId}"]
},
{
"effect": "allow",
"action": ["scf:*"],
"resource": ["qcs::scf:${region}:uin/${uin}:namespace/${namespace}/function/*"]
},
{
"effect": "allow",
"action": ["cls:*"],
"resource": ["qcs::cls::uin/${uin}:topic/${topicId}"]
},
{
"effect": "allow",
"action": ["cos:*"],
"resource": ["qcs::cos:${region}:uid/${appId}:${bucket}/*"]
}
]
}

子账号关联自定义策略操作

说明:
子账号默认没有访问云开发资源的权限,因此使用子账号登录云开发控制台,无法访问云开发资源。
如果需要添加特定权限,可通过给子账号添加自定义策略的方式来访问云开发资源。具体操作步骤如下:

步骤1:添加自定义策略

1. 登录 CAM 控制台,选择左侧菜单策略
2. 进入策略页面,单击新建自定义策略
3. 选择创建策略方式,单击按策略语法创建
4. 选择策略模板,选择空白模板,单击下一步
5. 策略语法说明 中的策略复制进策略内容编辑器内,替换 {$EnvId} 为真实环境 ID。

步骤2:关联自定义策略

1. 登录 CAM 控制台,选择左侧菜单用户 > 用户列表
2. 进入用户列表页面,单击新建用户
3. 进入新建用户页面,根据提示填写用户相关信息。
4. 信息填写完毕后,前往策略列表中选择新建的自定义策略。
5. 单击完成,即可完成创建子账号。
除了上述在创建子账号时添加策略的方式外,也可通过策略关联用户的方式授权,详情请参见 授权管理 指引。