文档首页/ 数据管理服务 DAS/ 最佳实践/ 如何通过DAS实现只读账号登录数据库
更新时间:2024-08-21 GMT+08:00
分享

如何通过DAS实现只读账号登录数据库

DAS服务的系统权限策略中本身不支持只读账号,但是可以通过在IAM里创建用户自定义策略,搭配数据库自身的只读账号功能来实现。

IAM权限和数据库权限的区别

DAS作为管理面服务,不会直接对客户的数据库实例资源进行增删改操作。在DAS页面执行的只有增删改数据库连接(即数据库登录信息)的操作。

IAM权限控制对DAS的应用范围仅在登录数据库连接前,登录数据库连接后,权限校验就由数据库账号自身的权限来接管了。

您可以通过IAM自定义权限策略来控制子账号是否能增删改数据连接、能否登录数据库连接,但是进入数据库后,IAM无法再干涉用户执行SQL命令,此时只有数据库账号权限可以发挥作用。

操作步骤

  1. 使用主账号登录统一身份认证服务IAM控制台。
  2. 创建自定义权限策略。

    1. 在左侧导航栏中选择“权限管理 > 权限”,单击“创建自定义策略”
    2. 配置相关参数。
      图1 配置自定义权限策略
      表1 参数说明

      参数名称

      说明

      示例

      策略名称

      自定义名称。

      das-log-database

      策略配置方式

      支持可视化视图和JSON视图。

      可视化视图

      策略内容

      选择数据管理服务,根据需要添加相应的只读权限。

      此处以“das:connections:login”为例,添加了此权限的用户或用户组仅具有通过DAS服务登录数据库连接的功能。

      das:connections:login

    3. 单击确定,返回权限页面,可以查看到刚创建好的自定义权限策略。
      图2 查看自定义权限策略

  3. 创建用户组并授权2中的自定义权限策略。

    1. 在左侧导航栏选择用户组,单击“创建用户组”,填写用户组名称,完成用户组创建。
    2. 单击用户组操作列的“授权”,选择2中创建好的自定义策略。
      图3 授权
    3. 单击“下一步”,授权范围默认“所有资源”,继续单击“确定”

  4. 创建用户并添加到用户组。

    1. 在左侧导航栏选择用户,单击“创建用户”,配置用户基本信息。
      图4 配置用户基本信息
    2. 单击下一步,将当前用户添加到3中创建的用户组中。
      图5 添加用户到用户组
    3. 单击创建用户,即可创建新用户(即IAM子账号)。此时该用户只有DAS登录数据库连接的权限。

  5. 创建数据库只读账号。此处以RDS for MySQL为例。

    1. 登录云数据库RDS控制台。
    2. 在实例管理页面,单击目标实例名称,进入基本信息页面。
    3. 在左侧导航栏中选择“账号管理”,单击“创建账号”,创建一个只读权限的数据库账号。
      图6 创建数据库只读账号

      您也可以登录RDS for MySQL数据库通过命令行来创建只读账号,具体可参考如下命令:

      CREATE USER 'db_read_only'@'%' IDENTIFIED BY '**********';
      GRANT SELECT ON *.* TO 'db_read_only'@'%';
      FLUSH PRIVILEGES;

  6. 主账号通过DAS共享只读数据库功能给IAM子账号。

    1. 使用主账号登录数据管理服务控制台。
    2. 使用只读数据库账号新增一条登录信息。

      在左侧导航栏选择“开发工具”,在“由我创建的数据库实例登录”页面,单击“新增数据库实例登录”

      图7 新增数据库实例登录

      此处登录用户名使用5中创建好的数据库只读账号。

    3. 共享只读账号的数据库实例登录信息给IAM子账号。

      单击数据库实例登录信息列表中“共享用户数”列对应的数字。

      图8 共享用户

      选择共享截止时间,添加方式选择同步子账号,在待选用户中选择4中创建的IAM子账号,单击“确定”

      图9 添加共享用户

  7. 使用4中创建好的IAM子账号登录数据管理服务,验证只读权限。

    图10 验证只读权限

    使用IAM子账号登录到DAS服务后,选择“开发工具”,可以在他人共享给我的数据库实例登录页面,查看到由主账号共享给IAM子账号的数据库登录信息。在操作列可以看到只有登录数据库连接的权限。

相关文档