管理群组 SSH 证书
- Tier: 专业版, 旗舰版
- Offering: JihuLab.com
您可以使用 SSH 证书控制和管理对项目和群组的 Git 访问。
SSH 证书是加密签名的文档,用于验证用户的身份和权限。它们由受信任的证书颁发机构 (CA) 签发,包含用户身份、有效期和权限等信息。
SSH 证书认证的好处有:
- 集中访问控制:您可以通过中央 CA 管理访问,而不是每个用户自己管理的 SSH 密钥。
- 增强的安全性:SSH 证书比传统的 SSH 密钥更安全。
- 时间限制访问:您可以设置证书在特定时间后过期。
- 简化的凭证管理:组织可以维护一个批准的 SSH 证书凭证列表以供存储库访问。
- 独立于用户管理的凭证:访问由群组管理的证书控制,而不是用户个人的公用 SSH 密钥。
SSH 证书和 SSH 密钥
下表比较了 SSH 证书和 SSH 密钥:
| 功能 | SSH 证书 | SSH 密钥 |
|---|---|---|
| 访问控制 | 通过群组管理的 CA 集中管理。 | 分布在各个用户账户。 |
| 过期 | 内置过期机制。 | 无内置过期机制。 |
| 凭证管理 | 由群组所有者管理。 | 由个人用户管理。 |
| 设置复杂性 | 初始设置较为复杂。 | 初始设置较简单。 |
认证流程
下图说明了在极狐GitLab 中 SSH 证书认证的工作原理,从请求证书到访问存储库:
Rendering chart...
认证过程会在允许存储库访问之前验证用户是否拥有有效的 SSH 证书。
添加 CA 证书到顶级群组
History
- 引入于极狐GitLab 16.4,使用名为 ssh_certificates_rest_endpoints 的功能标志。默认禁用。
- 在极狐GitLab 16.9 中为 JihuLab.com 启用。
- 在极狐GitLab 17.7 中 GA。功能标志 ssh_certificates_rest_endpoints 被移除。
先决条件:
- 您必须拥有该群组的所有者角色。
- 该群组必须是顶级群组,而不是子群组。
要将 CA 证书添加到群组:
-
生成一个 SSH 密钥对,用作证书颁发机构文件:
plaintextssh-keygen -f CA -
使用群组 SSH 证书 API 将公钥添加到顶级群组,以授予对该群组及其子群组项目的访问权限。
为用户签发 CA 证书
先决条件:
- 您必须拥有该群组的所有者角色。
- 用户证书只能用于访问顶级群组及其子群组中的项目。
- 必须指定用户的用户名或主要电子邮件(user 或 user@example.com)以将极狐GitLab 用户与用户证书关联。
- 用户必须是 企业用户。
要为用户签发证书,请使用您先前创建的密钥对中的私钥:
shellssh-keygen -s CA -I user@example.com -V +1d user-key.pub
(user-key.pub) 密钥是用户用于 SSH 认证的 SSH 密钥对中的公钥。SSH 密钥对由用户生成或由群组所有者基础设施与 SSH 证书一起提供。
过期日期 (+1d) 确定 SSH 证书可以用于访问群组项目的时间长度。
用户证书只能用于访问顶级群组中的项目。
强制使用 SSH 证书
History
- 引入于极狐GitLab 16.7,使用名为 enforce_ssh_certificates_via_settings 的功能标志。默认禁用。
- 在极狐GitLab 16.9 中为 JihuLab.com 启用。
- 在极狐GitLab 17.7 中 GA。功能标志 enforce_ssh_certificates_via_settings 被移除。
您可以强制使用 SSH 证书,并限制用户使用 SSH 密钥和访问令牌进行认证。
当强制使用 SSH 证书时:
- 仅影响个人用户账户。
- 不适用于服务账户、部署密钥和其他类型的内部账户。
- 只有群组所有者添加的 SSH 证书用于认证存储库访问。
强制使用 SSH 证书会禁用常规用户的 HTTPS 访问。
先决条件:
- 您必须拥有该群组的所有者角色。
要强制使用 SSH 证书:
- 在左侧边栏中,选择 搜索或前往 并找到您的群组。
- 选择 设置 > 常规。
- 展开 权限和群组功能 部分。
- 选中 强制使用 SSH 证书 复选框。
- 选择 保存更改。