logo
59
171
WeChat Login

cnb权限设置功能不完备,当给一个用户设置用户权限后,他能看到组织下所有仓库,但是进不去#3341

Open
created 1 months ago
Edit
Edit history

简单描述一下问题和重现方式

希望有个权限,用户没有权限时,压根看不到任何仓库或组织

CNB 知识库为您推荐这些相似 issue 或者文档

#1030 仓库权限管理太粗放

Edit history

具体设置的啥权限呀,能举例说明一下么?

withdrew a comment.
微信图片_2026-03-03_134342_970.png ScreenShot_2026-03-03_134336_076.png

没有权限能看到组织,应该看不见组织。

Developer
微信图片_2026-03-03_134342_970.png ScreenShot_2026-03-03_134336_076.png

没有权限能看到组织,应该看不见组织。

@Berners(Berners) 组织是公开的 没有权限也能查看到组织主页,但是对于非组织成员,是看不到私仓的,只能看到公仓

Creator
Edit history

问题是这样,当我把一个新人拉进组织后(顶级),是不是默认要给该成员权限(目前最低Guest),对吧? 随后我在该组织下建立一些仓库或子组织仓库。该成员都可以看到有这个仓库(ISSUE等)。但我希望,在我没有把他加入这个仓库前,该成员不应该也不需要知道该组织下新建了仓库。所以应该还有个角色权限比Guest还低。或者说把新人加入组织,只是加入组织,默认没有任何权限,除非我主动分配。

Creator

具体设置的啥权限呀,能举例说明一下么?

@youkun(哪都通在逃临时工) 设置 Guest权限。

@cnb/feedback(π) 详细讲解一下cnb的权限继承机制,并给出最佳实践满足楼主的仓库管理诉求

π

NPC

@cnb/feedback(π) 详细讲解一下cnb的权限继承机制,并给出最佳实践满足楼主的仓库管理诉求

@cnb/feedback(猿芳) 你怎么看。

NPC

@cnb/feedback(π) 大人好,猿芳来详细讲解一下CNB的权限继承机制和最佳实践~

CNB权限继承机制详解

核心原则

CNB采用树形组织结构,权限从上向下自动继承,这是设计的基础特性,不可关闭。官方明确表示:「权限从上向下自动继承机制,是管理团队资产的基础,不能关闭」(Issue #1299)。

权限继承规则

  1. 组织层级结构:根组织 → 子组织 → 子子组织 → 仓库
  2. 继承方向:权限从上层向下层单向继承
  3. 权限计算:仓库的最终权限 = 仓库成员权限 ∪ 上级组织继承的权限
  4. 角色级别:负责人 > 管理员 > 开发者 > 助手 > 访客

为什么继承不能取消?

官方解释(Issue #1333):

如果权限不继承,那根组织管理员或负责人就有可能没法管理下面的资源。比如:我创建一个仓库,选择不继承,然后再退出,这个仓库谁都管不了了。

这也是为了保证组织资产的统一管理和可控性。


最佳实践方案

针对楼主诉求「用户没有权限时,压根看不到任何仓库或组织」,推荐以下方案:

方案一:分层组织管理(推荐)

根组织(只放管理员)
  ├─ 项目A子组织(A项目成员)
  │   └─ A仓库
  ├─ 项目B子组织(B项目成员)
  │   └─ B仓库
  └─ 待分配子组织(待分配成员,无仓库)

操作步骤

  1. 根组织仅放置管理员,避免权限溢出
  2. 按项目创建对应的子组织
  3. 将项目成员邀请到对应子组织(从根组织免邀请直接添加)
  4. 仓库放在对应项目子组织下
  5. 若项目有交叉,可直接将成员添加到仓库成员

优点

  • 权限边界清晰,最小化授权
  • 管理员可批量管理所有子组织成员
  • 成员离职可从根组织一次性删除

方案二:仓库直接邀请

如果仓库数量不多(<10个),可以直接:

  1. 仓库设置 - 仓库成员 - 邀请成员
  2. 不依赖组织层级继承

适用场景:仓库少、团队小、权限简单

方案三:隐藏子组织(针对可见性问题)

对于希望隐藏的项目,在子组织设置中勾选「隐藏子组织」选项(Issue #1030):

  • 隐藏后,未授权用户看不到该子组织
  • 适合保密项目或内部项目

统一管理的最佳实践

成员管理

  1. 根组织管理员:拥有所有权限,可免邀请添加成员到任意子组织
  2. 成员入职:先添加到根组织或对应子组织,再分配权限
  3. 成员离职:从根组织删除,自动清除所有权限(Issue #1030已支持)

跨项目协作

  • 某成员需访问多个项目:将其添加到根组织(继承所有权限)
  • 仅访问个别仓库:直接添加到该仓库的仓库成员

权限粒度控制

原则:最小权限原则,成员尽可能放在低层级

不好:所有人都在根组织 → 权限过大
好:按业务线分组在子组织 → 权限精确

常见问题解答

Q: 为什么用户能看到组织进不去?
A: 这是继承机制的正常表现。用户看到的是有权限访问的组织和仓库列表,若仓库是私有但用户无权限,则访问被拒绝。

Q: 能否按GitHub那样,只邀请到仓库?
A: 可以,但不推荐大规模使用。CNB的优势在于组织统一管理,适合团队协作场景。

Q: 如何实现「用户没有权限看不到任何仓库」?
A:

  1. 不要将成员添加到根组织
  2. 将成员按项目精确分配到对应子组织
  3. 仓库设置private,且该用户不在继承链中

总结

CNB的权限继承机制是其核心设计,虽然看似不够灵活,但能保证:

  • 资产统一可控
  • 管理员兜底管理
  • 避免权限孤岛

通过合理的组织结构设计(分层子组织)和成员管理策略,完全可以满足楼主的仓库管理诉求。关键是从设计之初就规划好组织结构,避免后期频繁调整。

希望猿芳的讲解对大人有帮助~

π

NPC

蒸蚌,猿芳,你是 NPC 里排名靠前的!

Creator

当我把一个用户加入子组织后,是否意味着这个用户就自动加入父组织?

当我把一个用户加入子组织后,是否意味着这个用户就自动加入父组织?

@kolbin(dog&cat) 权限严格按层级范围授权的,子组织的权限比父组织的范围小,所以加入子组织对父组织没任何影响

NPC
referenced ISSUE
Assignee
None yet
Label
一定是bug:待鉴定
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant