Skip to main content

数据源级别权限管控

本文演示在专属集群中启用数据源级别权限管控后,用户在缺乏目标数据源权限的情况下,将无法对相关任务进行操作。

背景信息

NineData 专属集群的复制任务在启动以后,用户可以通过运维中心任务管理对任务进行调度管理。在多用户场景下,可能会出现越权操作误操作的风险,影响生产业务从而导致严重后果。

为此,NineData 将数据源级别权限运维中心任务管理进行联动,确保用户只有在具备目标数据源权限的情况下,才能对相关任务进行运维操作。该机制确保了:

  • 任务可见性:用户仍然可以获知任务存在及其基本信息。

  • 操作隔离性:只有具备数据源权限的用户,才能真正干预任务的运行。

功能说明

在 NineData 专属集群中,数据源权限不仅决定用户是否能够访问某个数据源,还会直接决定其在运维中心任务管理中的操作范围:

用户权限情况任务可见任务详情查看修改任务流程和属性启停操作登录终端
无目标数据源权限✅ 允许✅ 允许❌ 禁止❌ 禁止❌ 禁止
有目标数据源权限✅ 允许✅ 允许✅ 允许✅ 允许✅ 允许

场景设定

  • 复制任务:管理员用户(admin)预先创建好 MySQL A > MySQL B,MySQL C > MySQL D 两条复制链路。

    image-20250911175540085

    image-20250911175736829

  • 用户:创建两个不同用户,分别对他们授予不同的数据源权限,然后登录这两个用户分别对有权限和无权限的运维任务进行操作。

    用户角色名授权数据源
    user_arole_mysql_a-bMySQL A, MySQL B
    user_brole_mysql_c-dMySQL C, MySQL D

    最终效果是:user_a 无法操作 MySQL C、D 的相关运维任务,而 user_b 无法操作 MySQL A、B 的相关运维任务。

步骤一:创建角色并配置数据源权限

  1. 用系统管理员账号登录 NineData 控制台。

  2. 在左侧导航栏,单击账户管理 > 角色管理

  3. 单击新建角色,创建两个角色:

    image-20250912150100781

    • role_mysql_a-b
    • role_mysql_c-d
  4. 单击目标角色,然后单击数据源权限页签,并单击添加数据源权限,分别为新建的两个角色添加不同数据源的权限:

    image-20250912151717350

    • role_mysql_a-b:授权访问 MySQL AMySQL B,并授权的权限(包含)。

      image-20250912151856969

      image-20250912152547562

      image-20250912154817013

    • role_mysql_c-d:授权访问 MySQL CMySQL D,其他同 role_mysql_a-b

      image-20250912155004467

步骤二:创建用户并绑定角色

  1. 用系统管理员账号登录 NineData 控制台。

  2. 在左侧导航栏,单击账户管理 > 用户管理

  3. 单击右上角 邀请用户,然后创建两个用户并分别绑定步骤一中创建的角色。单击确定,系统将生成用户登录信息。

    image-20250912155201125

    • user_a:绑定 role_mysql_a-b
    • user_b:绑定 role_mysql_c-d

步骤二:使用 user_a 或 user_b 查看运维任务并尝试操作

  1. 使用步骤一中新建的任意账号登录 NineData 控制台,本示例登录了 user_a。

  2. 在左侧导航栏单击 > ,在页面,可以看到管理员(admin)创建的两个复制任务,其中 rp-dcpvjufzhzcj 是 user_a 拥有数据源权限的任务。

    image-20250911181257917

  3. 单击有权限的任务 ID,进入详情页,可以查看详情并且可以对该任务进行各项操作。

    image-20250911181527689

  4. 返回任务列表页,单击无权限的任务 ID,进入详情页,可以查看详情但无法对该任务进行任何操作,操作会提示无权限。

    image-20250911182400883