本文为您介绍 Serverless Framework 的几种授权方式以及通过配置子账号权限进行实际操作演示。
前提条件
Serverless Framework 帮助您将项目快速部署到腾讯云 Serverless 应用中心,因此在部署前,请确认您已经 注册腾讯云账号 并完成 实名认证。
授权方式
注意:由于域名备案更新,目前 cli 部署流程无法通过扫码登录,您可以通过本地配置永久密钥,或者根据命令行提示,通过访问 URL 完成登录,具体恢复时间请等待更新。
扫码一键授权
通过 sls deploy
进行部署时,您可以通过扫描二维码,一键授权并快速部署,扫码授权后,会生成临时密钥信息(过期时间为60分钟)写入当前目录下的 .env
文件中:
TENCENT_APP_ID=xxxxxx #授权账号的 AppId
TENCENT_SECRET_ID=xxxxxx #授权账号的 SecretId
TENCENT_SECRET_KEY=xxxxxx #授权账号的 SecretKey
TENCENT_TOKEN=xxxxx #临时 token
一键授权时获取的权限详情请参见 SLS_QcsRole 角色权限列表。
说明:如果您的账号为腾讯云子账号,扫码部署前需要主账号先进行策略授权配置。配置详情请参见 子账号权限配置。
本地密钥授权
为了避免扫码授权过期进行重复授权,您可以采用密钥授权方式。在部署的根目录下创建 .env
文件,并配置腾讯云的 SecretId 和 SecretKey 信息:
# .env
TENCENT_SECRET_ID=xxxxxxxxxx #您账号的 SecretId
TENCENT_SECRET_KEY=xxxxxxxx #您账号的 SecretKey
SecretId 和 SecretKey可以在 API 密钥管理 中获取 。
说明:为了账号安全性,密钥授权时建议使用子账号密钥。子账号必须先被授予相关权限才能进行部署。配置详情请参见 子账号权限配置。
永久密钥配置
通过 sls credentials
指令,可以快速设置全局密钥信息永久保存。该指令必须在已经创建好的 sls 项目下进行配置,请确保您已经通过 sls init
或已经手动创建好您的带有 serverless.yml 的项目。
全部指令参考如下:
serverless credentials 管理全局用户授权信息 set 存储用户授权信息 --secretId / -i (必填)腾讯云 CAM 账号 secretId --secretKey / -k (必填)腾讯云 CAM 账号 secretKey --profile / -n {name} 授权名称,默认为 "default" --overwrite / -o 覆写已有授权名称的密钥 remove 移除用户授权信息 --profile / -n {name} (必填)授权名称 list 查看用户授权信息
配置全局授权信息:
# 通过默认 profile 名称配置授权信息 $ serverless credentials set --secretId xxx --secretKey xxx # 通过指定 profile 名称配置授权信息 $ serverless credentials set --secretId xxx --secretKey xxx --profile profileName1 # 更新指定 profile 名称里的授权信息 $ serverless credentials set --secretId xxx --secretKey xxx --profile profileName1 --overwrite
删除全局授权信息:
$ serverless credentials remove --profile profileName1
查看当前所有授权信息:
$ serverless credentials list
通过全局授权信息部署:
# 通过默认 profile 部署 $ sls deploy # 通过指定 profile 部署 $ sls deploy --profile newP # 忽略全局变量,扫码部署 $ sls deploy --login
子账号权限配置
配置步骤
如果您的操作账号为腾讯云子账号,没有默认操作权限,则需要主账号(或拥有授权操作的子账号)进行如下授权操作:
- 在 CAM 用户列表 页,选取对应子账号,单击授权。
- 在弹出的窗口内,搜索并选中
QcloudSLSFullAccess
,单击确定,完成授予子账号 Serverless Framework 所有资源的操作权限。 - 在 CAM 用户列表 页,选取对应子账号,单击用户名称,进入用户详情页。
- 单击关联策略,在添加策略页面单击从策略列表中选取策略关联 > 新建自定义策略。
关联策略页面:
新建策略页面: - 选择按策略语法创建 > 空白模板,填入如下内容,注意角色参数替换为您的主账号 UIN:
{ "version": "2.0", "statement": [ { "action": [ "cam:PassRole" ], "resource": [ "qcs::cam::uin/${填入账号的uin}:roleName/SLS_QcsRole" ], "effect": "allow" }, { "resource": [ "*" ], "action": [ "name/sts:AssumeRole" ], "effect": "allow" } ] }
- 完成自定义策略配置后,回到第4步的授权页面,搜索刚刚创建的自定义策略,单击下一步> 确定,即可授予子账号 SLS_QcsRole 的操作权限,此时,您的子账号应该拥有一个自定义策略和一个 QcloudSLSFullAccess 的预设策略,可以完成 Serverless Framework 的正常使用。
>?除了授权调用默认角色 SLS_QcsRole 外,也可给子账号授权调用自定义角色。通过自定义角色中的细粒度权限策略,达到权限收缩的目的。详情请参见 指定操作角色配置。
SLS_QcsRole 角色权限列表
策略 | 描述 |
---|---|
QcloudCOSFullAccess | COS(对象存储)全读写访问权限 |
QcloudSCFFullAccess | SCF(云函数)全读写权限 |
QcloudSSLFullAccess | SSL 证书(SSL)全读写访问权限 |
QcloudTCBFullAccess | TCB(云开发)全读写权限 |
QcloudAPIGWFullAccess | APIGW(API 网关)全读写权限 |
QcloudVPCFullAccess | VPC(私有网络)全读写权限 |
QcloudMonitorFullAccess | Monitor(云监控)全读写权限 |
QcloudSLSFullAccess | SLS(Serverless Framework)全读写权限 |
QcloudCDNFullAccess | CDN(内容分发网络)全读写权限 |
QcloudCKafkaFullAccess | CKafka(消息队列 CKafka)全读写权限 |
QcloudCodingFullAccess | CODING DevOps 全读写访问权限 |
QcloudPostgreSQLFullAccess | 云数据库 PostgreSQL 全读写访问权限 |
QcloudCynosDBFullAccess | 云数据库 CynosDB 全读写访问权限 |
QcloudCLSFullAccess | 日志服务(CLS)全读写访问权限 |
QcloudAccessForSLSRole | 该策略供 Serverless Framework(SLS)服务角色(SLS_QCSRole)进行关联,用于 SLS 一键体验功能访问其他云服务资源。包含访问管理(CAM)相关操作权限 |