그룹 액세스 토큰 API
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
이 API를 사용하여 그룹 액세스 토큰을 다룹니다. 지정한 그룹의 모든 그룹 액세스 토큰을 조회합니다. last_used_ips 속성은 이 토큰으로 인증한 고유 IP 주소를 최대 5개까지 조회합니다. 지정한 그룹 액세스 토큰의 상세 정보를 조회합니다.
이 API를 사용하여 그룹 액세스 토큰을 다룹니다. 자세한 내용은 그룹 액세스 토큰을 참고합니다.
모든 그룹 액세스 토큰 조회#
히스토리
state속성이 GitLab 17.2에서 도입되었습니다.last_used_ips속성이 GitLab 19.2에서expose_last_used_ips_for_access_tokens기능 플래그와 함께 도입되었습니다. 기본값은 비활성화입니다.last_used_ips속성이 GitLab 19.4에서 일반 공급되었습니다. 기능 플래그expose_last_used_ips_for_access_tokens는 제거되었습니다.
지정한 그룹의 모든 그룹 액세스 토큰을 조회합니다.
GET /groups/:id/access_tokens
GET /groups/:id/access_tokens?state=inactive
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
created_after |
datetime (ISO 8601) | 아니요 | 지정하면 해당 시각 이후에 생성된 토큰을 반환합니다. |
created_before |
datetime (ISO 8601) | 아니요 | 지정하면 해당 시각 이전에 생성된 토큰을 반환합니다. |
expires_after |
date (ISO 8601) | 아니요 | 지정하면 해당 시각 이후에 만료되는 토큰을 반환합니다. |
expires_before |
date (ISO 8601) | 아니요 | 지정하면 해당 시각 이전에 만료되는 토큰을 반환합니다. |
last_used_after |
datetime (ISO 8601) | 아니요 | 지정하면 해당 시각 이후에 마지막으로 사용된 토큰을 반환합니다. |
last_used_before |
datetime (ISO 8601) | 아니요 | 지정하면 해당 시각 이전에 마지막으로 사용된 토큰을 반환합니다. |
revoked |
boolean | 아니요 | true 이면 취소된 토큰만 반환합니다. |
search |
string | 아니요 | 지정하면 이름에 해당 값이 포함된 토큰을 반환합니다. |
sort |
string | 아니요 | 지정하면 해당 값을 기준으로 결과를 정렬합니다. 가능한 값: created_asc, created_desc, expires_asc, expires_desc, last_used_asc, last_used_desc, name_asc, name_desc. |
state |
string | 아니요 | 지정하면 해당 상태의 토큰을 반환합니다. 가능한 값: active, inactive. |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/<group_id>/access_tokens"
[
{
"user_id" : 141,
"scopes" : [
"api"
],
"name" : "token",
"expires_at" : "2021-01-31",
"id" : 42,
"active" : true,
"created_at" : "2021-01-20T22:11:48.151Z",
"description": "Test Token description",
"revoked" : false,
"last_used_at": null,
"last_used_ips": [],
"access_level": 40
},
{
"user_id" : 141,
"scopes" : [
"read_api"
],
"name" : "token-2",
"expires_at" : "2021-01-31",
"id" : 43,
"active" : false,
"created_at" : "2021-01-21T12:12:38.123Z",
"description": "Test Token description",
"revoked" : true,
"last_used_at": "2021-02-13T10:34:57.178Z",
"last_used_ips": ["192.0.2.10"],
"access_level": 40
}
]
last_used_ips 속성은 이 토큰으로 인증한 고유 IP 주소를 최대 5개까지 조회합니다.
한도에 도달하면 가장 오래된 IP 주소가 제거됩니다. 이 목록은 토큰마다 1분에 한 번
갱신됩니다.
그룹 액세스 토큰 상세 조회#
지정한 그룹 액세스 토큰의 상세 정보를 조회합니다.
GET /groups/:id/access_tokens/:token_id
| 속성 | 유형 | required | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
token_id |
integer or string | 예 | ID 입니다. |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/<group_id>/access_tokens/<token_id>"
{
"user_id" : 141,
"scopes" : [
"api"
],
"name" : "token",
"expires_at" : "2021-01-31",
"id" : 42,
"active" : true,
"created_at" : "2021-01-20T22:11:48.151Z",
"description": "Test Token description",
"revoked" : false,
"access_level": 40,
"last_used_at": null,
"last_used_ips": []
}
그룹 액세스 토큰 생성#
지정한 그룹에 그룹 액세스 토큰을 생성합니다.
사전 요구 사항:
- 그룹에 대한 Owner 권한이 있어야 합니다.
POST /groups/:id/access_tokens
| 속성 | 유형 | required | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
name |
String | 예 | 토큰의 이름입니다. |
description |
string | 아니요 | 그룹 액세스 토큰의 설명입니다. 최대 255자입니다. |
scopes |
Array[String] |
예 | 토큰에 사용할 수 있는 스코프 목록입니다. |
access_level |
Integer | 아니요 | 토큰의 권한입니다. 가능한 값: 10(Guest), 15(Planner), 20(Reporter), 25(Security Manager), 30(Developer), 40(Maintainer), 50(Owner). 기본값: 40. |
expires_at |
date | 아니요 | 액세스 토큰의 만료일이며 ISO 형식(YYYY-MM-DD)으로 지정합니다. 지정하지 않고 토큰에 만료일이 필요하면 기본값은 허용되는 최대 수명 한도입니다. 필요하지 않으면 토큰에는 만료일이 없습니다. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type:application/json" \
--data '{ "name":"test_token", "scopes":["api", "read_repository"], "expires_at":"2021-01-31", "access_level": 30 }' \
--url "https://gitlab.example.com/api/v4/groups/<group_id>/access_tokens"
{
"scopes" : [
"api",
"read_repository"
],
"active" : true,
"name" : "test",
"revoked" : false,
"created_at" : "2021-01-21T19:35:37.921Z",
"description": "Test Token description",
"user_id" : 166,
"id" : 58,
"expires_at" : "2021-01-31",
"token" : "D4y...Wzr",
"access_level": 30
}
그룹 액세스 토큰 회전#
지정한 그룹 액세스 토큰을 회전합니다. 이전 토큰은 즉시 취소되고 새 토큰이 생성됩니다. 일반적으로 이 엔드포인트는 개인 액세스 토큰으로 인증하여 특정 그룹 액세스 토큰을 회전합니다. 그룹 액세스 토큰이 자기 자신을 회전하도록 할 수도 있습니다. 자세한 내용은 자체 회전을 참고합니다.
이전에 취소된 토큰을 이 엔드포인트로 회전하려고 하면, 같은 토큰 계열의 활성 토큰이 모두 취소됩니다. 자세한 내용은 자동 재사용 탐지를 참고합니다.
사전 요구 사항:
- 다른 그룹 액세스 토큰을 회전하려면
api스코프를 가진 개인 액세스 토큰이 있어야 합니다. - 그룹 액세스 토큰을 자체 회전하려면 해당 토큰에
api또는self_rotate스코프가 있어야 합니다.
POST /groups/:id/access_tokens/:token_id/rotate
| 속성 | 유형 | required | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
token_id |
integer or string | 예 | 그룹 액세스 토큰의 ID 또는 self 키워드입니다. |
expires_at |
date | 아니요 | 액세스 토큰의 만료일이며 ISO 형식(YYYY-MM-DD)으로 지정합니다. 토큰에 만료일이 필요하면 기본값은 1주일입니다. 필요하지 않으면 토큰에는 만료일이 없습니다. |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/<group_id>/access_tokens/<token_id>/rotate"
응답 예시:
{
"id": 42,
"name": "Rotated Token",
"revoked": false,
"created_at": "2023-08-01T15:00:00.000Z",
"description": "Test group access token",
"scopes": ["api"],
"user_id": 1337,
"last_used_at": null,
"last_used_ips": [],
"active": true,
"expires_at": "2023-08-15",
"access_level": 30,
"token": "s3cr3t"
}
성공하면 200: OK를 반환합니다.
그 밖에 가능한 응답은 다음과 같습니다.
- 회전에 실패하면
400: Bad Request입니다. - 다음 조건 중 하나라도 해당하면
401: Unauthorized입니다.- 토큰이 존재하지 않습니다.
- 토큰이 만료되었습니다.
- 토큰이 취소되었습니다.
- 지정한 토큰에 접근할 수 없습니다.
- 그룹 액세스 토큰으로 다른 그룹 액세스 토큰을 회전하려고 합니다. 이 경우 자체 회전을 참고합니다.
- 토큰이 자기 자신을 회전할 수 없으면
403: Forbidden입니다. - 사용자가 관리자이지만 토큰이 존재하지 않으면
404: Not Found입니다. - 토큰이 액세스 토큰이 아니면
405: Method Not Allowed입니다.
자체 회전#
특정 그룹 액세스 토큰을 회전하는 대신, 요청 인증에 사용한 그룹 액세스 토큰 자체를 회전할 수 있습니다. 그룹 액세스 토큰을 자체 회전하려면 다음 조건을 충족해야 합니다.
api또는self_rotate스코프를 가진 그룹 액세스 토큰을 회전합니다.- 요청 URL에
self키워드를 사용합니다.
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_group_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/<group_id>/access_tokens/self/rotate"
그룹 액세스 토큰 취소#
지정한 그룹 액세스 토큰을 취소합니다.
DELETE /groups/:id/access_tokens/:token_id
| 속성 | 유형 | required | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 그룹의 ID 또는 URL 인코딩된 경로입니다. |
token_id |
integer | 예 | 그룹 액세스 토큰의 ID 입니다. |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/<group_id>/access_tokens/<token_id>"
성공하면 204 No content를 반환합니다.
그 밖에 가능한 응답은 다음과 같습니다.
- 취소에 실패하면
400: Bad Request입니다. - 액세스 토큰이 존재하지 않으면
404: Not Found입니다.