在搭建好团队或联盟专属的 GitLab 代码托管平台后,管理员通常会面临一个两难的抉择:开启自由注册,系统极易被自动化脚本盯上,沦为黑客挖矿(CI/CD 滥用)或托管违规内容的温床;开启管理员手动审批,随着联盟成员或社区用户的增多,管理员又会陷入永无止境的“审核疲劳”中。
那么,有没有一种既能免去管理员手动审核,又能有效拦截恶意批量注册的完美方案呢?
答案是肯定的。我们可以利用 GitLab 内置的“强制邮箱验证 + 域名白名单”功能,结合国内主流邮箱强制绑定手机号的实名特性,构建一套安全的自助准入体系。
一、 核心防御思路
我们的核心策略是:用服务商的实名认证,替我们做身份把关。
- 拒绝一次性/匿名邮箱:只允许指定的、在国内必须绑定手机号才能注册的公共邮箱(如 QQ、网易、阿里云等)进行注册。
- 拥抱企业与高校:通过通配符配置,无缝放行我们联盟内部的企业域名,以及国内所有高校的
.edu.cn邮箱。 - 强制激活验证:用户注册后必须点击邮件中的激活链接才能登录,确保邮箱真实可用。
⚠️ 实施前提(极其重要):
在进行以下配置前,请务必确保你的 GitLab 服务器已经正确配置了 SMTP 发信服务。如果系统无法发送激活邮件,新用户将永远卡在验证环节无法登录!
二、 详细配置流程
请使用拥有管理员权限(root)的账号登录 GitLab 网页端,按照以下步骤进行操作:
1. 关闭人工审核并开启强制验证
- 依次点击左侧边栏底部的 Admin Area(扳手图标) -> Settings(设置) -> General(通用)。
- 找到 Sign-up restrictions(注册限制)板块,点击右侧的 Expand(展开)。
- 关闭审批:找到并取消勾选
Require admin approval for new sign-ups(需要管理员批准新注册)。 - 开启强验证:勾选
Send confirmation email on sign-up(注册时发送确认邮件),确保用户必须验证邮箱所有权。
2. 填写允许注册的域名白名单
在同一个设置板块向下滚动,找到核心配置区:Whitelisted domains for sign-ups(允许注册的邮箱域名白名单)。
这里有一个非常关键的技巧:合理使用通配符 *.。如果不加通配符只写 edu.cn,系统只会允许后缀刚好为 @edu.cn 的邮箱,从而错误地拦截掉 @pku.edu.cn 这种带有子域名的真实高校邮箱。
你可以直接复制以下经过全面梳理的列表,粘贴到配置框中(每行一个):
# 联盟核心企业域名(支持子域名扩展)
weforn.cn
*.weforn.cn
# 覆盖国内所有高校及科研院所
*.edu.cn
# 国内主流实名制公共邮箱(已强制绑定手机)
qq.com
foxmail.com
163.com
126.com
yeah.net
aliyun.com
dingtalk.com
139.com
189.cn
wo.cn
sina.com
sina.cn
sohu.com
tom.com
# 开发者常用高优邮箱
outlook.com3. 限制新用户的默认权限(安全加固)
虽然我们限制了注册邮箱,但为了进一步防范潜在的资源滥用,强烈建议对新注册的“白板用户”进行基础权限限制。
在同一个 Sign-up restrictions 页面中寻找以下设置:
- 找到 Default projects limit(默认项目数量限制),将默认的
100000改为较小的值(例如5或者干脆设为0)。 - 取消勾选
Default to 'Can create groups'(默认可创建群组)。
(这样设置后,新用户注册进来默认只能浏览公开/内部代码或提交 Issue。当联盟成员需要实际创建项目时,再由管理员按需提升额度,最大程度保障服务器存储和算力安全。)
三、 保存并生效
确认上述所有设置无误后,滑动到页面最下方,点击 Save changes(保存更改)。
配置立即生效!现在,你的 GitLab 已经拥有了一套优雅且安全的自助注册体系。联盟内的开发者们无论使用高校邮箱、企业邮箱还是常用的实名个人邮箱,都能流畅地完成注册并参与到代码协作中来,而那些企图用“十分钟邮箱”搞破坏的恶意脚本,则会被系统直接拒之门外。
版权属于:soarli
本文链接:https://blog.soarli.top/archives/983.html
转载时须注明出处及本声明。