Personal access tokens
原文:https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
- Creating a personal access token
- Limiting scopes of a personal access token
- Programmatically creating a personal access token
- Programmatically revoking a personal access token
Personal access tokens
版本历史
- 在 GitLab 8.8 中引入 .
- 在 GitLab 12.6 中添加了有关令牌过期的通知 .
- 在GitLab Ultimate 12.6 中添加了令牌生存期限制 .
If you’re unable to use OAuth2, you can use a personal access token to authenticate with the GitLab API.
您还可以将个人访问令牌与 Git 一起使用,以通过 HTTP 或 SSH 进行身份验证. 启用两因素身份验证(2FA)时,需要个人访问令牌. 在这两种情况下,都可以使用令牌代替密码进行身份验证.
个人访问令牌在您定义的日期 UTC 午夜到期.
- GitLab 每天在世界标准时间 01:00 AM 进行检查,以识别将在 7 天内到期的个人访问令牌. 这些令牌的所有者通过电子邮件通知.
- 在 GitLab Ultimate 中,管理员可以限制个人访问令牌的寿命 .
- 在 GitLab Ultimate 中,管理员可以切换个人访问令牌到期的执行 .
有关如何使用个人访问令牌向 API 进行身份验证的示例,请参见API 文档中的以下部分.
GitLab 还提供了模拟令牌 ,这些令牌是管理员通过 API 创建的. 它们非常适合作为特定用户的自动身份验证.
Creating a personal access token
您可以在 GitLab 个人资料中创建任意数量的个人访问令牌.
- 登录到 GitLab.
- 点击右上角的头像,然后选择设置 .
- 在” 用户设置”菜单上,选择” 访问令牌” .
- 选择令牌的名称和可选的到期日期.
- 选择所需的范围 .
- 单击创建个人访问令牌按钮.
- 将个人访问令牌保存在安全的地方. 离开或刷新页面后,将无法再次访问它.
Revoking a personal access token
您可以随时单击” 活动个人访问令牌”区域下的相应” 撤消”按钮来撤消任何个人访问令牌.
Token activity
您可以从” 个人访问令牌”页面查看上次使用令牌的时间 . 令牌使用情况的更新每 24 小时固定一次. 对API 资源和GraphQL API 的请求将更新令牌的用法.
Limiting scopes of a personal access token
可以使用一个或多个范围创建个人访问令牌,这些范围允许给定令牌可以执行各种操作. 下表描述了可用范围.
Scope | 引入 | Description |
---|---|---|
read_user |
GitLab 8.15 | 允许访问/users 下的只读端点. 本质上,允许用户 API中的任何GET 请求. |
api |
GitLab 8.15 | 授予对 API 的完全读写访问权限,包括所有组和项目,容器注册表和程序包注册表. |
read_api |
GitLab 12.10 | 授予对 API 的读取权限,包括所有组和项目,容器注册表和程序包注册表. |
read_registry |
GitLab 9.3 | 如果项目是私有的并且需要授权,则允许读取(拉出) 容器注册表图像. |
sudo |
GitLab 10.2 | 允许以系统中的任何用户身份执行 API 操作(如果经过身份验证的用户是管理员). |
read_repository |
GitLab 10.7 | 允许通过git clone 对存储库进行只读访问(拉). |
write_repository |
GitLab 11.11 | 允许通过git clone 对存储库进行读写访问(拉,推). 启用 2FA 时,通过 HTTP 访问 Git 存储库是必需的. |
Programmatically creating a personal access token
您可以以编程方式创建预定的个人访问令牌,以用于自动化或测试. 您将需要足够的访问权限才能为 GitLab 实例运行Rails 控制台会话 .
要使用用户名automation-bot
创建属于用户的令牌,请在 Rails 控制台( sudo gitlab-rails console
)中运行以下sudo gitlab-rails console
:
user = User.find_by_username('automation-bot')
token = user.personal_access_tokens.create(scopes: [:read_user, :read_repository], name: 'Automation token')
token.set_token('token-string-here123')
token.save!
使用GitLab Rails Runner可以将其简化为单行 shell 命令:
sudo gitlab-rails runner "token = User.find_by_username('automation-bot').personal_access_tokens.create(scopes: [:read_user, :read_repository], name: 'Automation token'); token.set_token('token-string-here123'); token.save!"
注意:令牌字符串的长度必须为 20 个字符,否则将不会被识别为个人访问令牌.
有效范围的列表及其作用可以在源代码中找到.
Programmatically revoking a personal access token
您可以通过编程方式撤消个人访问令牌. 您将需要足够的访问权限才能为 GitLab 实例运行Rails 控制台会话 .
要撤销已知令牌token-string-here123
,请在 Rails 控制台( sudo gitlab-rails console
)中运行以下sudo gitlab-rails console
:
token = PersonalAccessToken.find_by_token('token-string-here123')
token.revoke!
可以使用GitLab Rails Runner将其简化为单行 shell 命令:
sudo gitlab-rails runner "PersonalAccessToken.find_by_token('token-string-here123').revoke!"