Rancher RBAC 为 NeuVector 实现权限管理

概述

NeuVector 5.4 开始支持与 Rancher RBAC 进行集成,可以通过 Rancher 的 Role Templates 为用户配置不同的 NeuVector 权限。

也就是说,用户通过 Rancher SSO 跳转到 NeuVector UI 后,NeuVector 会根据该用户在 Rancher 中绑定的 Role,映射成对应的 NeuVector 权限。

本文主要记录如何通过 Rancher RBAC 为 NeuVector 配置 Readonly 权限。

前提

  • Rancher 已经部署 NeuVector
  • 用户可以通过 Rancher UI 中的 NeuVector 图标跳转到 NeuVector UI
  • NeuVector 所在的命名空间已归属到某个 Project

配置 NeuVector Project

如果通过 Rancher Apps 安装 NeuVector 后,cattle-neuvector-system 命名空间没有归属到任何 Project,需要先创建一个 Project,然后将该命名空间移动到这个 Project 中。

在集群中进入 Projects/Namespaces,新建一个 Project,例如 NeuVector

创建完成后,将 cattle-neuvector-system 命名空间移动到 NeuVector Project 下。

这里需要注意,如果 cattle-neuvector-system 没有归属到 Project,那么后续在 Project Membership 中就无法选择 NeuVector 所在的 Project,也就无法绑定 services/proxy 权限。

配置 Cluster Role

首先在 Rancher UI 中进入 Users & Authentication -> Role Templates -> Cluster,新建一个 Role。

这里配置 NeuVector 的只读权限,也就是 get 权限,参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
rules:
- apiGroups:
- read-only.neuvector.api.io
resources:
- '*'
verbs:
- get
- apiGroups:
- neuvector.com
resources:
- '*'
verbs:
- get

配置 Project/Namespaces Role

同时还需要在 Users & Authentication -> Role Templates -> Project/Namespaces 下新建一个 Role。

这个 Role 主要用于允许用户通过 Rancher 访问 NeuVector UI,对应的是 services/proxy 权限,参考如下:

1
2
3
4
5
6
7
8
9
rules:
- apiGroups:
- ''
resources:
- services/proxy
verbs:
- create
- get
- patch

这里是必要权限,如果没有配置该 Project/Namespaces Role,用户无法通过 Rancher 的 NeuVector 图标正常跳转到 NeuVector UI。

这里需要注意,services/proxy 权限建议只绑定到 NeuVector 专用 Project,不要绑定到包含其他业务命名空间的 Project,否则可能会给用户带来额外的 service proxy 访问权限。

绑定用户权限

Role 创建完成后,进入对应集群,打开 Cluster and Project Members

分别在下面两个位置为用户绑定上面创建的 Role:

  1. Cluster Membership 中,为用户绑定前面创建的 NeuVector Cluster Role。
  2. Project Membership 中,选择 NeuVector 所在的 Project,为用户绑定前面创建的 Project/Namespaces Role。

这里需要注意,Project Membership 一定要选择 NeuVector 所在的 Project,否则用户虽然有 Cluster 级别的 NeuVector 权限,但是无法正常通过 Rancher UI 代理访问 NeuVector。

验证

使用普通用户重新登录 Rancher。

进入对应集群后,点击 NeuVector 图标跳转到 NeuVector UI。

可以看到,用户已经可以正常进入 NeuVector,并且权限为 Readonly。

尝试进入 NeuVector 中的配置页面或者策略修改页面,Readonly 用户只能查看,不能进行修改操作。

参考链接

参考:https://open-docs.neuvector.com/integration/rancher_sso_rbac/

参考:https://github.com/horantj/rancher-nv-rbac