# 安全规则
安全规则的接口,可通过 commonService 来调用
# 权限类别(以下前 4 种属于简易权限,CUSTOM 属于安全规则特有)
- READONLY:所有用户可读,仅创建者和管理员可写
- PRIVATE:仅创建者及管理员可读写
- ADMINWRITE:所有用户可读,仅管理员可写
- ADMINONLY:仅管理员可读写
- CUSTOM: 自定义安全规则
# 获取数据库简易权限
# 1. 接口描述
接口功能:获取数据库简易权限
接口声明:manager.commonService().call({Action: 'DescribeDatabaseACL',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
CollectionName | 是 | String | 集合名 |
EnvId | 是 | String | 环境 ID |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | 是 | String | 请求唯一标识 |
AclTag | 否 | String | 权限类别 |
# 4. 示例代码
const cloudbaseConfig = {
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
}
let manager = new CloudBase(cloudbaseConfig)
async function test() {
const res = await manager.commonService().call({
Action: 'DescribeDatabaseACL',
Param: {
CollectionName: 'xxx',
EnvId: cloudbaseConfig.envId
}
})
console.log(res.AclTag) // 打印权限类别
}
test()
# 修改数据库简易权限
# 1. 接口描述
接口功能:修改数据库简易权限
接口声明:manager.commonService().call({Action: 'ModifyDatabaseACL',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
CollectionName | 是 | String | 集合名 |
AclTag | 是 | String | 数据库简易权限 READONLY PRIVATE ADMINWRITE ADMINONLY |
EnvId | 是 | String | 环境 ID |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | String | 是 | 请求唯一标识 |
# 4. 示例代码
const cloudbaseConfig = {
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
}
let manager = new CloudBase(cloudBaseConfig)
async function test() {
const res = await manager.commonService().call({
Action: 'ModifyDatabaseACL',
Param: {
CollectionName: 'xxx',
EnvId: cloudbaseConfig.envId,
AclTag: 'PRIVATE'
}
})
console.log(res)
}
test()
# 设置数据库安全规则
# 1. 接口描述
接口功能:设置数据库安全规则
接口声明:manager.commonService().call({Action: 'ModifySafeRule',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
CollectionName | 是 | String | 集合名 |
EnvId | 是 | String | 环境 ID |
AclTag | 是 | String | 权限类别 |
Rule | 否 | String | 权限类别设置为 CUSTOM 时,需要设置该字段(数据库安全规则文档 (opens new window)) |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | 是 | String | 请求唯一标识 |
# 4. 示例代码
const cloudbaseConfig = {
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
}
let manager = new CloudBase(cloudBaseConfig)
async function test() {
const res = await manager.commonService().call({
Action: 'ModifySafeRule',
Param: {
CollectionName: 'coll-1',
AclTag: 'CUSTOM',
EnvId: 'xxx',
Rule: JSON.stringify({
read: true,
write: 'doc._openid == auth.openid'
})
}
})
console.log(res)
}
test()
# 查询数据库安全规则
# 1. 接口描述
接口功能:查询数据库安全规则
接口声明:manager.commonService().call({Action: 'DescribeSafeRule',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
CollectionName | 是 | String | 集合名 |
EnvId | 是 | String | 环境 ID |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | 是 | String | 请求唯一标识 |
AclTag | 是 | String | 权限类别 |
Rule | 是 | String or null | 安全规则 |
# 4. 示例代码
const cloudbaseConfig = {
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
}
let manager = new CloudBase(cloudBaseConfig)
async function test() {
const res = await manager.commonService().call({
Action: 'DescribeSafeRule',
Param: {
CollectionName: 'coll-1',
EnvId: cloudbaseConfig.envId
}
})
console.log(res.AclTag)
console.log(res.Rule)
}
test()
# 设置存储安全规则
# 1. 接口描述
接口功能:设置存储安全规则
接口声明:manager.commonService().call({Action: 'ModifyStorageSafeRule',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Bucket | 是 | String | 桶名 |
AclTag | 是 | String | 权限类别 |
EnvId | 是 | String | 环境 ID |
Rule | 否 | String | 权限类别为 CUSTOM 时,设置该字段,存储安全规则文档 (opens new window) |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | 是 | String | 请求唯一标识 |
# 4. 示例代码
const manager = new CloudBase({
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
})
const { env } = manager
// 先获取桶名
const {
EnvInfo: { Storages }
} = await env.getEnvInfo()
const { Bucket } = Storages[0]
async function test() {
const res = await manager.commonService().call({
Action: 'ModifyStorageSafeRule',
Param: {
Bucket,
AclTag: 'CUSTOM',
EnvId: envId,
Rule: JSON.stringify({
read: true,
write: 'resource.openid == auth.uid'
})
}
})
console.log(res)
}
test()
# 查询存储安全规则
# 1. 接口描述
接口功能:查询存储安全规则
接口声明:manager.commonService().call({Action: 'DescribeStorageSafeRule',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Bucket | 是 | String | 桶名称 |
EnvId | 是 | String | 环境 ID |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | 是 | String | 请求唯一标识 |
AclTag | 是 | String | 权限类别 |
Rule | 是 | String or null | 安全规则 |
# 4. 示例代码
const cloudbaseConfig = {
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
}
let manager = new CloudBase(cloudBaseConfig)
async function test() {
const res = await manager.commonService().call({
Action: 'DescribeStorageSafeRule',
Param: {
Bucket: 'xxx',
EnvId: cloudBaseConfig.envId
}
})
console.log(res.AclTag)
console.log(res.Rule)
}
test()
# 查询存储安全规则修改异步任务状态
# 1. 接口描述
接口功能:查询存储安全规则修改异步任务状态
接口声明:manager.commonService().call({Action: 'DescribeCDNChainTask',Param: {}}): Promise<Object>
⚠️ 本接口从 3.0.0 版本后,commonService 作为方法使用,请求参数为(service?:string, version?:string) ,属于不兼容变更
# 2. 输入参数
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Action | 是 | String | 接口名称 |
Param | 是 | Object | 接口参数 |
# Param 字段说明
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
Bucket | 是 | String | 桶名称 |
EnvId | 是 | String | 环境 ID |
# 3. 返回结果
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
RequestId | 是 | String | 请求唯一标识 |
Status | 是 | String | 开/关防盗链任务状态。WAITING、PENDING、FINISHED、ERROR |
# 4. 示例代码
const cloudbaseConfig = {
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
}
let manager = new CloudBase(cloudBaseConfig)
async function test() {
// 获取环境信息 取bucket
const {
EnvInfo: { Storages }
} = await env.getEnvInfo()
console.log(Storages)
const { Bucket } = Storages[0]
const res = await manager.commonService().call({
Action: 'ModifyStorageSafeRule',
Param: {
Bucket,
AclTag: 'CUSTOM',
EnvId: envId,
Rule: JSON.stringify({
read: true,
write: 'resource.openid == auth.uid'
})
}
})
console.log(res)
expect(res.RequestId !== undefined).toBe(true)
let status = ''
do {
status = (
await commonService.call({
Action: 'DescribeCDNChainTask',
Param: {
Bucket,
EnvId: envId
}
})
).Status
console.log(status)
} while (status !== 'FINISHED' && status !== 'ERROR')
}
test()