NeuVector v5.4 为用户设置 Fed 角色

NeuVector 从 v5.4 版本起,通过 Rancher 登录到 NeuVector 的用户无法在 NeuVector 被设置为 Fed 角色,需要在 Rancher 中设置对应的角色,从而映射到 NeuVector 中。

对于 NV 在 Primary 集群中的 SSO 映射:

  1. Global Role:get/nv-perm.all-permissions 映射到 fedReader 角色,*/nv-perm.all-permissions 映射到 fedAdmin 角色。
  2. Cluster Role:get/nv-perm.all-permissions 映射到 reader 角色,*/nv-perm.all-permissions 映射到 admin 角色,get/nv-perm.all-permissions,nv-perm.fed 映射到 fedReader 角色,*/nv-perm.all-permissions,nv-perm.fed 映射到 fedAdmin 角色。
  3. Project Role:没有项目角色会映射到 fedReader/fedAdmin 角色。

如果是非主 NV 集群,映射的 fedReader 角色会自动降级为 reader 角色,fedAdmin 角色会自动降级为 admin 角色。

Global Role

如果 NV 部署在下游集群,由于 Global Role 不会自动同步到下游集群中,所以先要创建一个 Cluster Role,然后再通过 inheritedClusterRoles 字段引用。

fedAdmin 为例,创建 Cluster Role:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
administrative: false
apiVersion: management.cattle.io/v3
builtin: false
clusterCreatorDefault: false
context: cluster
displayName: NeuVector Fed Administrator Cluster Role
external: false
hidden: false
kind: RoleTemplate
locked: false
metadata:
name: cluster-role-neuvector-fed-admin
projectCreatorDefault: false
roleTemplateNames: []
rules:
- apiGroups:
- api.neuvector.com
resources:
- nv-perm.all-permissions
verbs:
- '*'
- apiGroups:
- api.neuvector.com
resources:
- nv-perm.fed
verbs:
- '*'

创建 Global Role:

1
2
3
4
5
6
7
8
9
10
apiVersion: management.cattle.io/v3
description: NeuVector Fed Administrator Global Role
displayName: NeuVector Fed Administrator
kind: GlobalRole
metadata:
name: global-role-neuvector-fed-admin
inheritedClusterRoles:
- cluster-role-neuvector-fed-admin
newUserDefault: false
rules: []

然后给用户授予 Global Role 权限:

在 NV 中可以看到角色为 fedAdmin

Cluster Role

如果不通过 Global Role 给用户进行授权,可以直接在下游集群使用刚刚创建的 Cluster Role 进行授权:

Author

Warner Chen

Posted on

2025-01-03

Updated on

2025-02-27

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.