CASB 访问控制使用基于角色的访问控制(RBAC)来控制代理账号的访问权限,可以根据客户端 IP、访问的库、表、字段、命令、时间等维度控制不同的角色的访问权限。
CASB 的访问控制独立于数据库的权限系统,CASB 访问控制基于 CASB 代理账号,数据库权限管理适用于元数据账号,互相独立、互为补充。
接入场景
本示例使用 CASB 访问控制功能配置不同角色的应用访问代理的权限。示例:
doc
数据库中表userinfo
内存在两个敏感字段name
和phone
。只允许来自
172.16.32.33
机器的访问。存在四个角色的应用:
admin
:管理员角色,能读写name
和phone
。reader
:只读角色,只能读name
和phone
。nameadmin
:姓名校验角色,可以读写name
字段。cronjob
:定时任务角色,只允许每天10:00~10:30
时间段内读name
字段。步骤一:接入准备和数据库绑定
说明:
本示例中,代理的地址是
172.16.0.30:10100
,数据库的地址是 172.16.32.4:3306
。步骤二:创建代理账号
步骤三:创建和绑定访问控制角色
1. 创建
admin
、reader
、nameadmin
和cronjob
的角色。
参考 访问控制角色管理,新增 admin
、 reader
、nameadmin
和cronjob
四个角色。

2. 绑定代理账号和角色。
参考 添加代理账号,分别将代理账号绑定到角色。
代理账号
user1
绑定角色 admin
。代理账号
user2
绑定角色 reader
。代理账号
user3
绑定角色 nameadmin
。代理账号
user4
绑定角色 cronjob
。说明
一个代理账号只能绑定一个角色。

步骤四:创建和绑定访问控制规则
1. 创建访问控制规则

rule_deny_all
:阻断所有访问语句。
rule_deny_phone
: 阻断访问phone
字段的语句。
rule_allow_client
: 放行来自172.16.32.33
机器的语句。
rule_allow_client_rd
: 放行来自172.16.32.33
机器的SELECT
语句。
rule_allow_client_name_rw
: 放行来自172.16.32.33
机器、name
字段的SELECT
、UPDATE
语句。
rule_allow_client_name_cron_rd
: 放行来自172.16.32.33
机器、20:00~21:00
时间段内、name
字段的SELECT
语句。
2. 配置角色的访问控制规则
注意:
CASB 访问控制规则采用顺序匹配的方式,匹配到任意一条规则时结束匹配(放行或阻断)。因此,对于部分允许的需求,应先设置相反的禁止访问规则,即本例中若只允许访问
name
字段,应先配置禁止访问phone
的规则,此时先匹配到阻断规则后可立即阻断。若需要限制部分访问,角色规则中包含放行规则时,应在最后加上
阻断所有请求
的规则,阻断所有放行规则外的请求。规则名称 | 说明 |
admin 角色规则 | admin 角色按如下顺序配置两条规则。rule_allow_client : 放行来自172.16.32.33 机器的语句。rule_deny_all : 阻断所有访问语句。 |
reader 角色规则 | reader 角色按如下顺序配置两条规则。rule_allow_client_rd : 放行来自172.16.32.33 机器的SELECT 语句。rule_deny_all : 阻断所有访问语句。 |
nameadmin 角色规则 | nameadmin 角色按如下顺序配置三条规则。rule_deny_phone : 阻断访问phone 字段的语句。rule_allow_client_name_rw : 放行来自172.16.32.33 机器、name 字段的SELECT 、UPDATE 语句。rule_deny_all : 阻断所有访问语句。 |
cronjob 角色规则 | cronjob 角色按如下顺序配置三条规则。rule_deny_phone : 阻断访问phone 字段的语句。rule_allow_client_name_cron_rd : 放行来自172.16.32.33 机器、20:00~21:00 时间段内、name 字段的SELECT 语句。rule_deny_all : 阻断所有访问语句。 |
3. 效果验证
1. 绑定
admin
角色的代理账号user1
: 可以读写所有字段。

2. 绑定
reader
角色的代理账号user2
: 可以读所有字段,不能写字段值。

3. 绑定
nameadmin
角色的代理账号user3
: 可以读写name
字段,不能读写phone
字段。

4. 绑定
cronjob
角色的代理账号user4
: 仅可以在规定的时间内读name
字段,不能写字段。

步骤五:访问控制和安全组限制来源 IP 区别
访问控制限制来源IP在代理的应用层内实现,代理在收到客户端数据库查询语句时,检查客户端连接的来源 IP,并进行规则匹配,会占用代理的计算资源。
安全组限制来源 IP 在 VPC 网络层实现,不符合安全组规则的来源 IP 无法建立到代理的连接,不会占用代理的计算资源。
说明: