

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# GitLab 访问令牌
<a name="mes-partner-GitLabAccessToken"></a>

## 秘密值字段
<a name="w2aac27c11c23b3"></a>

以下是密钥管理器密钥中必须包含的字段：

```
{
  "token": "{{GitLab access token value}}",
  "tokenId": "{{numeric token ID}}",
  "gitlabUrl": "{{GitLab instance URL}}",
  "projectId": "{{project ID (optional)}}",
  "groupId": "{{group ID (optional)}}"
}
```

token  
 GitLab 访问令牌值（以... 开头`glpat-`）。这是被旋转的字段。

代币ID  
数字代币 ID。使用新代币的 ID 更新每次轮换。

GitLabURL  
您的 GitLab 实例 URL（例如`https://gitlab.com`）。必须使用 HTTPS。

projectId  
（可选）数字项目 ID。仅提供项目访问令牌。

groupId  
（可选）数字群组 ID。仅提供群组访问令牌。

## 机密元数据字段
<a name="w2aac27c11c23b5"></a>

以下是 GitLab 访问令牌的元数据字段：

```
{
  "adminSecretArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:{{GitLabAdmin}}",
  "daysToExpiry": "{{30 (optional)}}"
}
```

管理员 SecretArn  
（可选）类型的机密的亚马逊资源名称 (ARN) GitLabAccessToken ，该密钥包含用于轮换此密钥的 API 范围 GitLab 访问令牌。如果省略，则令牌会自行旋转（要求`api`或`self_rotate`范围）。对于项目令牌，管理员令牌需要在项目中扮演维护者角色。对于群组令牌，它需要群组的所有者角色。

天 ToExpiry  
（可选）距离新令牌到期的天数（1—365）。映射到 rotate API GitLab 中的`expires_at`字段。如果省略，则新令牌继承实例的默认到期时间。

## 使用流程
<a name="w2aac27c11c23b7"></a>

这种轮换支持单机密（自轮换）和双机密（管理员辅助）架构。令牌范围由可选`projectId`和`groupId`字段确定。如果两个字段都不存在，则该令牌是个人访问令牌。如果存在，`projectId`则该令牌是项目访问令牌。如果存在，`groupId`则该令牌是群组访问令牌。

使用[CreateSecret](https://docs.amazonaws.cn/secretsmanager/latest/apireference/API_CreateSecret.html)通话创建您的秘密。将密钥值设置为上述字段，并将密钥类型设置为 GitLabAccessToken。要配置轮换，请使用[RotateSecret](https://docs.amazonaws.cn/secretsmanager/latest/apireference/API_RotateSecret.html)呼叫。提供一个角色 ARN，向该服务授予轮换密钥所需的权限。有关权限策略的示例，请参阅[安全和权限](mes-security.md)。

使用管理员辅助轮换时，管理员密钥也是类型的。`GitLabAccessToken`您必须明确提供轮换角色对管理员密钥的访问权限。为此，您可以直接在角色策略中添加一个范围为管理员密钥 ARN 的语句。

在轮换期间，驱动程序会验证当前令牌是否处于活动状态。然后，它调用 GitLab rotate 端点，该端点以原子方式创建新令牌并撤消旧令牌。Secrets Manager 将新的代币值和 ID 存储为 AWSPENDING，通过 GitLab API 对其进行验证，并将其推广到 AWSCURRENT。使用 Secrets Manager 缓存库的应用程序会在下次刷新时自动获取新令牌。