使用自定义策略授权
本文介绍如何自定义配置云开发自定义策略,为子账号授权特定权限。
说明
自定义策略支持更加灵活的权限配置,允许做细粒度的权限划分,您可以对策略中的元素进行设置,包括操作(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:添加自定义策略
- 登录 CAM 控制台,选择左侧菜单策略。
- 进入策略页面,单击新建自定义策略。
- 选择创建策略方式,单击按策略语法创建。
- 选择策略模板,选择空白模板,单击下一步。
- 将 策略语法 中的策略复制进策略内容编辑器内,替换
$\{envId\}为真 实环境 ID。
步骤 2:关联自定义策略
- 登录 CAM 控制台,选择左侧菜单用户 > 用户列表。
- 进入用户列表页面,单击新建用户。
- 进入新建用户页面,根据提示填写用户相关信息。
- 信息填写完毕后,前往策略列表中选择新建的自定义策略。
- 单击完成,即可完成创建子账号。
除了上述在创建子账号时添加策略的方式外,也可通过策略关联用户的方式授权,详情请参见 授权管理 指引。
常见问题
如何为子账号授权标签功能?
本条策略语法可以帮助主账号对子账号的标签权限进行设置。关联此策略后,子账号可以在购买资源时进行标签关联。
{
"statement": [
{
"action": [
"tag:DescribeTagKeys",
"tag:DescribeTagValues",
"tag:DescribeResourceTagsByResourceIds",
"tag:DescribeResourceTagsByTagKeys"
],
"effect": "allow",
"resource": ["*"]
}
],
"version": "2.0"
}