# 安全规则

安全规则的接口,可通过 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()