温馨提示×

ubuntu gitlab 权限管理如何设置

小樊
37
2025-12-08 21:19:57
栏目: 智能运维

Ubuntu 上 GitLab 权限管理设置指南

一 角色与访问级别

  • 项目级标准角色与能力如下(由低到高):
    • Guest:可创建 Issue、发表评论,不能读写代码。
    • Reporter:可 克隆 代码,不能提交;适合 QA/PM
    • Developer:可克隆、开发、提交 push、创建 合并请求 MR
    • Maintainer:可创建项目、打 Tag、管理 保护分支、添加成员、编辑项目设置。
    • Owner:最高权限,可设置项目可见性、删除/迁移项目、管理组成员。
  • 组与子组:支持按组授予访问级别,成员对组内项目自动继承相应权限,便于统一治理与分层授权。

二 项目与分支的权限配置

  • 项目可见性(Settings → General → Visibility):
    • Private:仅成员可见(最安全,默认推荐)。
    • Internal:登录用户可见。
    • Public:匿名可访问(谨慎开放)。
  • 成员授权(Project → Members):
    • 直接添加用户/组,选择上述 角色;对外部协作者可用 Invite member by emailAccess Token
  • 保护分支(Project → Settings → Repository → Protected Branches):
    • main/master 等主干设为保护分支。
    • 常见策略:允许 Maintainer 直接 push/merge;允许 Developer + Maintainer 通过 MR 合并;禁止 Guest/Reporter 直接推送。
    • 可设置“合并前需代码所有者批准”“需流水线通过”等质量门禁。
  • 代码所有者(CODEOWNERS):
    • 在仓库根目录或子目录添加 .gitlab/CODEOWNERS,例如:
      /src/      @team/backend
      /docs/      @team/docs
      *.js       @team/frontend
      
    • 与保护分支、MR 审批流程联动,确保关键目录变更受指定团队审核。

三 组级与实例级权限治理

  • 组级治理(Group → Members):
    • 为组添加成员并统一授予 Reporter/Developer/Maintainer/Owner,组内项目自动继承;适合按业务线/团队划分权限边界。
    • 通过 Subgroups 实现层级与更细粒度授权(如公司/部门/子团队)。
  • 实例级可见性与注册(Admin Area → Settings → Visibility and access controls):
    • 控制 新项目/新组的默认可见性
    • 配置 用户注册新用户初始角色(如默认 Guest),防止未管控账号创建项目。
  • 合规与审计:
    • 启用 审计事件(Admin Area → Monitoring → Audit Events),追踪成员变更、权限调整、受保护分支与审批规则修改等关键操作。

四 系统与服务权限安全

  • 运行身份与目录权限:
    • 确保 GitLab 以专用系统用户 git:git 运行;数据目录 /var/opt/gitlab 属主与属组为 git:git,常用权限为 755(目录)、644(文件)。
    • 示例:
      sudo chown -R git:git /var/opt/gitlab
      sudo find /var/opt/gitlab -type d -exec chmod 755 {} \;
      sudo find /var/opt/gitlab -type f -exec chmod 644 {} \;
      
  • SSH 与访问控制:
    • 用户本地私钥权限应为 600(如 ~/.ssh/id_rsa),避免权限过宽导致 SSH 拒绝。
    • 防火墙放行 80/443/22(HTTP/HTTPS/SSH),例如 UFW:
      sudo ufw allow 80,443,22/tcp
      sudo ufw enable
      
  • 安全模块与代理:
    • 如启用 SELinux/AppArmor,需为 GitLab 配置相应策略或设为宽容模式以便排障(生产环境不建议长期关闭 SELinux)。
    • 反向代理(Nginx/Apache)需正确设置请求头(如 X-Real-IP/X-Forwarded-For/X-Forwarded-Proto),避免权限校验与重定向异常。

五 常用命令与快速排障

  • 常用运维命令:
    sudo gitlab-ctl reconfigure   # 使 /etc/gitlab/gitlab.rb 生效
    sudo gitlab-ctl status        # 查看服务状态
    sudo gitlab-ctl restart       # 重启服务
    sudo gitlab-ctl tail         # 查看所有日志
    sudo gitlab-ctl tail nginx/gitlab_access.log  # 查看 Nginx 访问日志
    
  • 快速排障思路:
    • 权限异常先看项目 MembersProtected Branches 配置是否正确。
    • 无法克隆/推送时,检查本地 SSH 密钥权限 600、服务器 22 端口与防火墙策略。
    • 登录或注册异常,检查 Admin Area → Visibility and access controls 的默认可见性与注册策略。

0