有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
策略是用户权限集的一种语法规范, 可以精确地描述被授权的资源集、操作集以及授权条件 。

CAM 策略语法

{
"version":"2.0",
"statement":
[
{
"effect":"effect",
"action":["action"],
"resource":["resource"],
"condition": {"key":{"value"}}
}
]
}
策略语法中各个语句解释如下表所示。
参数名称
子参数
是否必选
参数说明
version
目前仅允许值为"2.0"。
statement
effect
描述声明产生的结果是“允许”还是“显式拒绝”。包括 allow(允许)和 deny(显式拒绝)两种情况。
action
用来描述允许或拒绝的操作。操作可以是 API 或者功能集(一组特定的 API ,以 permid 前缀描述)。
resource
描述授权的具体数据。资源是用六段式描述,每款产品的资源定义详情会有所区别。
condition
描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP 地址等信息,有些服务允许您在条件中指定其他值。
说明
statement 用来描述一条或多条权限的详细信息。该元素包括 effect、action、resource、condition 等多个其他元素的权限或权限集合。一条策略有且仅有一个 statement 元素。

定义 action

在 CAM 策略语句中,您可以从支持 CAM 的任何服务中指定任意的 API 操作。对于 MongoDB,请使用以 mongodb: 为前缀的 API。例如 mongodb:BackupDBInstance 或 mongodb:CreateAccountUser。 如果您要在单个语句中指定多个操作的时候,请使用逗号将它们隔开,如下所示:
"action":["mongodb:action1","mongodb:action2"]
您也可以使用通配符指定多项操作。例如,您可以指定名字以单词" Describe "开头的所有操作,如下所示:
"action":["mongodb:Describe*"]
如果您要指定 MongoDB 中所有操作,请使用 * 通配符,如下所示:
"action"["mongodb:*"]

定义 resource

每个 CAM 策略语句都有适用于自己的资源。资源路径的一般形式如下:
qcs:project_id:service_type:region:account:resource
project_id:描述项目信息,仅为了兼容 CAM 早期逻辑,无需填写。
service_type:产品简称,如 mongodb。
region:地域信息,如 bj。
account:资源拥有者的主账号信息,如 uin/12345678。
resource:各产品的具体资源详情,如 instance/instance_id 或者 instance/*。
您可以使用特定实例(cmgo-aw6g1g0z)在语句中指定resource,示例如下:
"resource":[ "qcs::mongodb:bj:uin/12345678:instance/cmgo-aw6g1g0z"]
您还可以使用 * 通配符指定属于特定账户的所有实例,示例如下:
"resource":[ "qcs::mongodb:bj:uin/12345678:instance/*"]
您要指定所有资源,或者如果特定 API 操作不支持资源级权限,请在 resource 元素中使用 * 通配符,如下所示:
"resource": ["*"]
如果您想要在一条指令中同时指定多个资源,请使用英文逗号将它们隔开,如下所示为指定两个资源的例子:
"resource":["resource1","resource2"]
MongoDB 能够使用的资源和对应的资源描述方法,如下表所示。其中,$ 为前缀的单词均为代称,region 指地域,account 指账户 ID。
资源类型
授权策略中的 resource 描述方法
实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
VPC
qcs::vpc:$region:$account:vpc/$vpcId
安全组
qcs::cvm:$region:$account:sg/$sgId

云数据库 MongoDB 系统默认权限策略

腾讯云数据库 MongoDB 支持以下系统权限策略。
策略名称
说明
QcloudMongoDBFullAccess
云数据库 MongoDB 的管理权限,被授予该权限的子账户具有等同于腾讯云账号的权限,即控制台和 API 的所有操作权限。
QcloudMongoDBReadOnlyAccess
只读权限,被授予该权限的子账户只具有腾讯云账号所有资源的只读权限,不具有控制台和 API 的操作权限。
系统权限策略 QcloudMongoDFullAccess 策略内容如下:
{
"version": "2.0",
"statement": [
{
"action": [
"monitor:GetMonitorData",
"monitor:DescribeBaseMetrics",
"mongodb:*"
],
"resource": "*",
"effect": "allow"
}
]
}
系统权限策略 QcloudMongoDBReadOnlyAccess 策略内容如下:
{
"version": "2.0",
"statement": [
{
"action": [
"monitor:GetMonitorData",
"monitor:DescribeBaseMetrics",
"mongodb:Describe*"
],
"resource": "*",
"effect": "allow"
}
]
}

云数据库 MongoDB 自定义权限策略

当前云数据库 MongoDB 支持以下资源级权限的自定义权限策略。
说明
下表中未列出的云数据库 API 操作,即表示该云数据库 API 操作不支持资源级权限。针对不支持资源级权限的云数据库 API 操作,您仍可以向用户授予使用该操作的权限,但策略语句的资源元素必须指定为 *。
action 名称
权限说明
resource 描述
BackupDBInstance
备份数据库实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
CreateAccountUser
创建账号
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
CreateDBInstance
创建云数据库实例(包年包月)
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
CreateDBInstanceHour
创建云数据库实例(按量计费)
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DeleteAccountUser
删除账号
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeAccountUsers
查询账号的用户信息
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeBackupAccess
获取实例备份下载授权
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeBackupRules
获取云数据库实例备份规则
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeClientConnections
获取客户端连接数
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeDBBackups
查询实例备份列表
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeDBInstances
查询数据库实例列表
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeInstanceDB
查询实例的库表信息
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeSlowLog
获取慢日志信息
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeSlowLogPattern
获取慢日志统计信息
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
DescribeSpecInfo
查询云数据库的售卖规格
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
ExchangeInstance
临时实例替换原实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
IsolateDBInstance
隔离云数据库实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
ModifyDBInstanceSpec
调整云数据库实例配置
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
OfflineIsolatedDBInstance
下线隔离状态的云数据库实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
RemoveCloneInstance
删除临时实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
RenameInstance
重命名实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
RenewInstance
续费云数据库实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
ResizeOplog
调整实例 oplog 大小
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
RestartInstance
重启实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
RestoreDBInstance
恢复数据库实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetAccountUserPrivilege
设置用户权限
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetAutoRenew
设置自动续费
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetBackupRules
设置备份规则
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetInstanceFormal
设置临时实例为正式实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetInstanceMaintenance
设置实例维护时间窗
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetPassword
设置密码
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
SetReadOnlyToNormal
设置只读实例为正式实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
TerminateDBInstance
销毁包年包月实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
TerminateDBInstanceHour
销毁按量计费实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
UpgradeDBInstance
升级包年包月实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId
UpgradeDBInstanceHour
升级按量计费实例
qcs::mongodb:$region:$account:instance/*
qcs::mongodb:$region:$account:instance/$instanceId


自定义权限策略示例

授权账户对实例 cmgo-aw6g**** 进行 CreateDBInstance 和 CreateAccountUser 的操作权限。示例如下:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"mongodb:CreateDBInstance",
"mongodb:CreateAccountUser"
],
"resource": [
"qcs::mongodb::uin/100001540306:instanceId/cmgo-aw6g****"
],
"condition": {
"ip_equal": {
"qcs:ip": [
"10.0.0.4"
]
}
}
}
]
}

创建自定义权限策略

具体操作,请您登录访问管理(CAM)控制台的 策略 页面,参见 创建自定义策略 进行操作。