云开发 CloudBase 使用自定义策略授权

这篇说说如何为腾讯云云开发子账号配置自定义策略,实现按环境隔离的细粒度权限授权,包括策略语法、变量获取及关联步骤。 策略语法:通过JSON定义允许操作(如tcb:*)和资源范围(如指定envId),实现环境级权限控制。 配置步骤:在CAM控制台创建自定义策略,复制策略模板并替换变量,再关联至子账号。

相关产品
云开发 CloudBase 产品页,含版本规格、价格与购买入口。

这篇说说如何自定义配置云开发自定义策略,为子账号授权特定权限。

注意:说明:

注意:自定义策略支持更加灵活的权限配置,允许做细粒度的权限划分,你可以对策略中的元素进行设置,包括操作(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. 单击完成,即可完成创建子账号。

除了上述在创建子账号时添加策略的方式外,也可通过策略关联用户的方式授权,详情请参见 授权管理 指引。

七、如何为子账号授权标签功能?

本条策略语法可以帮助主账号对子账号的标签权限进行设置。关联此策略后,子账号可以在购买资源时进行标签关联。

{ "statement": [ { "action": [ "tag:DescribeTagKeys", "tag:DescribeTagValues", "tag:DescribeResourceTagsByResourceIds", "tag:DescribeResourceTagsByTagKeys" ], "effect": "allow", "resource": [ "*" ] } ], "version": "2.0"}

赞 (0)
上一篇 4天前
下一篇 4天前