如何通过DAS实现只读账号登录数据库
DAS服务的系统权限策略中本身不支持只读账号,但是可以通过在IAM里创建用户自定义策略,搭配数据库自身的只读账号功能来实现。
IAM权限和数据库权限的区别
DAS作为管理面服务,不会直接对客户的数据库实例资源进行增删改操作。在DAS页面执行的只有增删改数据库连接(即数据库登录信息)的操作。
IAM权限控制对DAS的应用范围仅在登录数据库连接前,登录数据库连接后,权限校验就由数据库账号自身的权限来接管了。
您可以通过IAM自定义权限策略来控制子账号是否能增删改数据连接、能否登录数据库连接,但是进入数据库后,IAM无法再干涉用户执行SQL命令,此时只有数据库账号权限可以发挥作用。
操作步骤
- 使用主账号登录统一身份认证服务IAM控制台。
- 创建自定义权限策略。
- 在左侧导航栏中选择“权限管理 > 权限”,单击“创建自定义策略”。
- 配置相关参数。
图1 配置自定义权限策略
表1 参数说明 参数名称
说明
示例
策略名称
自定义名称。
das-log-database
策略配置方式
支持可视化视图和JSON视图。
可视化视图
策略内容
选择数据管理服务,根据需要添加相应的只读权限。
此处以“das:connections:login”为例,添加了此权限的用户或用户组仅具有通过DAS服务登录数据库连接的功能。
das:connections:login
- 单击确定,返回权限页面,可以查看到刚创建好的自定义权限策略。
图2 查看自定义权限策略
- 创建用户组并授权2中的自定义权限策略。
- 在左侧导航栏选择用户组,单击“创建用户组”,填写用户组名称,完成用户组创建。
- 单击用户组操作列的“授权”,选择2中创建好的自定义策略。
图3 授权
- 单击“下一步”,授权范围默认“所有资源”,继续单击“确定”。
- 创建用户并添加到用户组。
- 在左侧导航栏选择用户,单击“创建用户”,配置用户基本信息。
图4 配置用户基本信息
- 单击下一步,将当前用户添加到3中创建的用户组中。
图5 添加用户到用户组
- 单击创建用户,即可创建新用户(即IAM子账号)。此时该用户只有DAS登录数据库连接的权限。
- 在左侧导航栏选择用户,单击“创建用户”,配置用户基本信息。
- 创建数据库只读账号。此处以RDS for MySQL为例。
- 登录云数据库RDS控制台。
- 在实例管理页面,单击目标实例名称,进入基本信息页面。
- 在左侧导航栏中选择“账号管理”,单击“创建账号”,创建一个只读权限的数据库账号。
图6 创建数据库只读账号
您也可以登录RDS for MySQL数据库通过命令行来创建只读账号,具体可参考如下命令:
CREATE USER 'db_read_only'@'%' IDENTIFIED BY '**********'; GRANT SELECT ON *.* TO 'db_read_only'@'%'; FLUSH PRIVILEGES;
- 主账号通过DAS共享只读数据库功能给IAM子账号。
- 使用4中创建好的IAM子账号登录数据管理服务,验证只读权限。
图10 验证只读权限
使用IAM子账号登录到DAS服务后,选择“开发工具”,可以在他人共享给我的数据库实例登录页面,查看到由主账号共享给IAM子账号的数据库登录信息。在操作列可以看到只有登录数据库连接的权限。