有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文为您介绍 Serverless Cloud Framework 的几种授权方式以及通过配置子账号权限进行实际操作演示。

前提条件

Serverless Cloud Framework 帮助您将项目快速部署到腾讯云 Serverless 应用中心,因此在部署前,请确认您已经 注册腾讯云账号 并完成 实名认证

授权方式

扫码一键授权

通过 scf deploy 命令进行部署时,您可以通过扫描二维码,一键授权并快速部署,扫码授权后,会生成临时密钥信息(过期时间为60分钟)写入当前目录下的 .env 文件中:
TENCENT_APP_ID=xxxxxx #授权账号的 AppId
TENCENT_SECRET_ID=xxxxxx #授权账号的 SecretId
TENCENT_SECRET_KEY=xxxxxx #授权账号的 SecretKey
TENCENT_TOKEN=xxxxx #临时 token
一键授权时获取的权限详情请参见 scf_QcsRole 角色权限列表
说明:
如果您的账号为腾讯云子账号,扫码部署前需要主账号先进行策略授权配置。配置详情请参见 子账号权限配置

本地密钥授权

为了避免扫码授权过期进行重复授权,您可以采用密钥授权方式。在部署的根目录下创建 .env 文件,并配置腾讯云的 SecretId 和 SecretKey 信息:
# .env
TENCENT_SECRET_ID=xxxxxxxxxx #您账号的 SecretId
TENCENT_SECRET_KEY=xxxxxxxx #您账号的 SecretKey
SecretId 和 SecretKey 可以在 API 密钥管理 中获取 。
说明:
为了账号安全性,密钥授权时建议使用子账号密钥。子账号必须先被授予相关权限才能进行部署。配置详情请参见 子账号权限配置

永久密钥配置

通过 scf credentials 指令,可以快速设置全局密钥信息永久保存。该指令必须在已经创建好的 scf 项目下进行配置,请确保您已经通过 scf init 或已经手动创建好您的带有 serverless.yml 的项目。

全部指令

scf credentials 管理全局用户授权信息
set 存储用户授权信息
--secretId / -i (必填)腾讯云 CAM 账号 secretId
--secretKey / -k (必填)腾讯云 CAM 账号 secretKey
--profile / -n {name} 授权名称,默认为 "default"
--overwrite / -o 覆写已有授权名称的密钥
remove 移除用户授权信息
--profile / -n {name} (必填)授权名称
list 查看用户授权信息

配置全局授权信息

# 通过默认 profile 名称配置授权信息
$ scf credentials set --secretId xxx --secretKey xxx

# 通过指定 profile 名称配置授权信息
$ scf credentials set --secretId xxx --secretKey xxx --profile profileName1

# 更新指定 profile 名称里的授权信息
$ scf credentials set --secretId xxx --secretKey xxx --profile profileName1 --overwrite

删除全局授权信息

$ scf credentials remove --profile profileName1

查看当前所有授权信息

$ scf credentials list

通过全局授权信息部署

# 通过默认 profile 部署
$ scf deploy
# 通过指定 profile 部署
$ scf deploy --profile newP
# 忽略全局变量,扫码部署
$ scf deploy --login

子账号权限配置

配置步骤

如果您的操作账号为腾讯云子账号,没有默认操作权限,则需要主账号(或拥有授权操作的子账号)进行如下授权操作:
1. CAM 用户列表 页,选取对应子账号,单击授权


2. 在弹出的窗口内,搜索并选中 QcloudSLSFullAccess,单击确定,完成授予子账号 Serverless Cloud Framework 所有资源的操作权限。



3. CAM 用户列表 页,选取对应子账号,单击用户名称,进入用户详情页。


4. 单击关联策略,在添加策略页面单击从策略列表中选取策略关联 > 新建自定义策略。 关联策略页面:

新建策略页面:


5. 选择按策略语法创建 > 空白模板,填入如下内容,注意角色参数替换为您的主账号 UIN:
{
"version": "2.0",
"statement": [
{
"action": [
"cam:PassRole"
],
"resource": [
"qcs::cam::uin/${填入账号的 uin}::roleName/scf_QcsRole"
],
"effect": "allow"
},
{
"resource": [
"*"
],
"action": [
"name/sts:AssumeRole"
],
"effect": "allow"
}
]
}
6. 完成自定义策略配置后,回到第 4 步的授权页面,搜索刚刚创建的自定义策略,单击下一步> 确定,即可授予子账号 scf_QcsRole 的操作权限,此时,您的子账号应该拥有一个自定义策略和一个 QcloudSLSFullAccess 的预设策略,可以完成 Serverless Framework 的正常使用。


说明:
除了授权调用默认角色 scf_QcsRole 外,也可给子账号授权调用自定义角色。通过自定义角色中的细粒度权限策略,达到权限收缩的目的。详情请参见 指定操作角色配置

scf_QcsRole 角色权限列表

策略
描述
QcloudCOSFullAccess
COS(对象存储)全读写访问权限。
QcloudSCFFullAccess
SCF(云函数)全读写权限。
QcloudSSLFullAccess
SSL 证书(SSL)全读写访问权限。
QcloudTCBFullAccess
TCB(云开发)全读写权限。
QcloudAPIGWFullAccess
APIGW(API 网关)全读写权限。
QcloudVPCFullAccess
VPC(私有网络)全读写权限。
QcloudMonitorFullAccess
Monitor(云监控)全读写权限。
QcloudSLSFullAccess
sls(Serverless Cloud Framework)全读写权限。
QcloudCDNFullAccess
CDN(内容分发网络)全读写权限。
QcloudCKafkaFullAccess
CKafka(消息队列 CKafka)全读写权限。
QcloudCodingFullAccess
CODING DevOps 全读写访问权限。
QcloudPostgreSQLFullAccess
云数据库 PostgreSQL 全读写访问权限。
QcloudCynosDBFullAccess
云数据库 CynosDB 全读写访问权限。
QcloudCLSFullAccess
日志服务(CLS)全读写访问权限。
QcloudAccessForscfRole
该策略供 Serverless Cloud Framework(sls)服务角色(scf_QCSRole)进行关联,用于 SCF 一键体验功能访问其他云服务资源。包含访问管理(CAM)相关操作权限。