토큰 취소 API

토큰 취소 API는 GitLab과 상호 작용하여 GitLab Secret Detection에 의해 감지된 API 토큰 및 기타 시크릿을 받아들이고 취소하는 외부 배포 HTTP API입니다. Secret Detection 후 처리 및 취소 흐름을 이해하려면 고수준 아키텍처를 참조하세요.

GitLab.com은 내부 유지 관리 Secret Revocation Service (팀 멤버 전용)를 자체의 Token Revocation API로 사용합니다. GitLab Self-Managed의 경우, 고유한 API를 만들고 GitLab을 구성할 수 있습니다.

자체 관리용 토큰 취소 API 구현

폐기 능력을 사용하려는 GitLab Self-Managed 인스턴스는 다음을 수행해야 합니다:

  • 고유한 토큰 취소 API를 구현하고 배포합니다.
  • GitLab 인스턴스를 토큰 취소 API를 사용하도록 구성합니다.

귀하의 서비스는 다음을 해야 합니다:

  • 아래의 API 사양과 일치시킵니다.
  • 두 가지 엔드포인트를 제공합니다:
    • 폐기 가능한 토큰 유형 가져오기
    • 유출된 토큰 폐기하기
  • 속도 제한되고 멱등성을 가져야 합니다.

문서화된 엔드포인트로의 요청은 Authorization 헤더로 전달된 API 토큰을 사용하여 인증됩니다. 있을 경우, 요청 및 응답 본문은 application/json 콘텐츠 유형을 가져야 합니다.

모든 엔드포인트는 다음과 같은 응답을 반환할 수 있습니다:

  • 401 Unauthorized
  • 405 Method Not Allowed
  • 500 Internal Server Error

GET /v1/revocable_token_types

revoke_tokens 엔드포인트에서 사용할 수 있는 유효한 type 값을 반환합니다.

참고: 이러한 값은 the secrets analyzer’sprimary identifierprimary_identifier.typeprimary_identifier.value을 연결하는 것으로 the secrets analyzer’sprimary identifierprimary_identifier.typeprimary_identifier.value을 연결하는 것에 대한 결과입니다. 예를 들어, 값 gitleaks_rule_id_gitlab_personal_access_token은 다음 검색 식별자와 일치합니다:

{"type": "gitleaks_rule_id", "name": "Gitleaks rule ID GitLab Personal Access Token", "value": "GitLab Personal Access Token"}
상태 코드 설명
200 응답 본문에 유효한 토큰 type 값이 포함됩니다.

예시 응답 본문:

{
    "types": ["gitleaks_rule_id_gitlab_personal_access_token"]
}

POST /v1/revoke_tokens

적절한 제공 업체에 의해 폐기될 토큰 목록을 받아들입니다. 귀하의 서비스는 각 제공 업체와의 통신을 통해 토큰을 폐기할 책임이 있습니다.

상태 코드 설명
204 제출된 모든 토큰이 최종적으로 폐기를 받아 들여졌습니다.
400 요청 본문이 잘못되었거나 제출된 토큰 유형 중 하나가 지원되지 않습니다. 요청은 재시도되어서는 안 됩니다.
429 제공 업체가 너무 많은 요청을 받았습니다. 요청은 나중에 다시 시도해야 합니다.

예시 요청 본문 (token 값에 공간 문자 추가하여 시크릿 탐지 경고를 방지함):

[{
    "type": "gitleaks_rule_id_gitlab_personal_access_token",
    "token": "glpat - 8GMtG8Mf4EnMJzmAWDU",
    "location": "https://example.com/some-repo/blob/abcdefghijklmnop/compromisedfile1.java"
},
{
    "type": "gitleaks_rule_id_gitlab_personal_access_token",
    "token": "glpat - tG84EGK33nMLLDE70zU",
    "location": "https://example.com/some-repo/blob/abcdefghijklmnop/compromisedfile2.java"
}]

GitLab을 토큰 취소 API와 상호 작용하도록 구성

GitLab 인스턴스에서 다음 데이터베이스 설정을 구성해야 합니다:

설정 타입 설명
secret_detection_token_revocation_enabled 부울 자동 토큰 취소가 활성화되었는지 여부
secret_detection_token_revocation_url 문자열 토큰 취소 API의 /v1/revoke_tokens 엔드포인트에 대한 완전한 URL
secret_detection_revocation_token_types_url 문자열 토큰 취소 API의 /v1/revocable_token_types 엔드포인트에 대한 완전한 URL
secret_detection_token_revocation_token 문자열 토큰 취소 API로의 요청을 인증하기 위한 사전 공유 토큰

예를 들어, 이러한 값을 Rails 콘솔에서 구성하려면:

::Gitlab::CurrentSettings.update!(secret_detection_token_revocation_token: 'MYSECRETTOKEN')
::Gitlab::CurrentSettings.update!(secret_detection_token_revocation_url: 'https://gitlab.example.com/revocation_service/v1/revoke_tokens')
::Gitlab::CurrentSettings.update!(secret_detection_revocation_token_types_url: 'https://gitlab.example.com/revocation_service/v1/revocable_token_types')
::Gitlab::CurrentSettings.update!(secret_detection_token_revocation_enabled: true)

이러한 값을 구성한 후에는 고수준 아키텍처 다이어그램에 따라 Token Revocation API가 호출됩니다.