除了默认角色 SLS_QcsRole 外,主账号还可自行创建多个角色,并将它们分配给每个子用户,各子用户根据自身业务需求只具有相应角色所赋予的策略,达到权限收缩的目的,流程图如下:
创建子账号配置角色,并为该角色赋予相应策略。以部署 API 网关触发的 SCF 函数为例:
{
"version": "2.0",
"statement": [
{
"action": [
"cam:PassRole"
],
"resource": [
# 角色六段式(例:"qcs::cam::uin/123456789:roleName/test-role1")
],
"effect": "allow"
}
]
}
说明:角色资源描述可以在角色信息页面获取。
{
"version": "2.0",
"statement": [
{
"action": [
"sls:*"
],
"resource": [
#填入项目资源名称(例:"qcs::sls:ap-guangzhou::appname/*")
],
"effect": "allow"
}
]
}
说明:项目资源描述严格按照 CAM 规范进行,您也可以对资源再进行进一步细化,具体到函数名称或者 stage 名称。
本地创建 Serverless 项目,在配置文件 serverless.yaml 中添加全局配置项 configRole,输入角色名称,后台通过权限检测后即可完成部署:
# serverless.yml
component: scf # (必填) 引用 component 的名称,当前用到的是 tencent-scf 组件
name: scfdemo # (必填) 该组件创建的实例名称
org: test # (可选) 用于记录组织信息,默认值为您的腾讯云账户 appid
app: scfApp # (可选) 该 SCF 应用名称
stage: dev # (可选) 用于区分环境信息,默认值是 dev
globalOptions:
configRole: test-role1 # (可选) 填入指定角色名称
inputs:
name: scfFunctionName
src: ./src
runtime: Nodejs10.15 # 云函数的运行时环境。除 Nodejs10.15 外,可选值为:Python2.7、Python3.6、Nodejs6.10、Nodejs8.9、PHP5、PHP7、Go1、Java8。
region: ap-guangzhou
handler: index.main_handler
events:
- apigw:
name: serverless_api
parameters:
protocols:
- http
- https
serviceName:
description: The service of Serverless Framework
environment: release
endpoints:
- path: /index
method: GET
注意:
- 如果不绑定角色,子账号默认使用 SLS_QcsRole 进行 SLS 部署,配置文件中无需填 configRole 参数。
- 一旦绑定角色,请仔细核对 yaml 文件中 configRole 名称,填错或不填都会报错,子账号只支持使用绑定的角色,无权使用其它角色。
子账号如果需要添加权限,需要将角色名称与需要添加的策略名称一起提供给主账号,主账号在 CAM 控制台 >角色中完成权限添加。
本页内容是否解决了您的问题?