액세스 토큰 레이크 작업
- GitLab 17.2에서 도입되었습니다.
토큰 만료 날짜 분석
GitLab 16.0에서 백그라운드 마이그레이션 로 비만료 개인, 프로젝트 및 그룹 액세스 토큰에는 토큰 생성 후 1년 후에 만료 날짜가 설정되었습니다.
이 마이그레이션에 영향을 받은 토큰을 식별하려면 모든 액세스 토큰을 분석하고 상위 10개의 가장 흔한 만료 날짜를 표시하는 레이크 작업을 실행할 수 있습니다:
gitlab-rake gitlab:tokens:analyze
# 툴박스 팟 찾기
kubectl --namespace <namespace> get pods -lapp=toolbox
kubectl exec -it <toolbox-pod-name> -- sh -c 'cd /srv/gitlab && bin/rake gitlab:tokens:analyze'
sudo docker exec -it <container_name> /bin/bash
gitlab-rake gitlab:tokens:analyze
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:tokens:analyze
이 작업은 모든 액세스 토큰을 분석하고 만료 날짜별로 그룹화합니다. 왼쪽 열은 만료 날짜를 보여주고 오른쪽 열은 해당 만료 날짜를 가진 토큰 수를 보여줍니다. 예시 출력:
======= 개인/프로젝트/그룹 액세스 토큰 만료 마이그레이션 =======
시작일시: 2023-06-15 10:20:35 +0000
종료일시: 2023-06-15 10:23:01 +0000
===== 상위 10개의 개인/프로젝트/그룹 액세스 토큰 만료 날짜 =====
| 만료 날짜 | 개수 |
|----------------|-------|
| 2024-06-15 | 1565353 |
| 2017-12-31 | 2508 |
| 2018-01-01 | 1008 |
| 2016-12-31 | 833 |
| 2017-08-31 | 705 |
| 2017-06-30 | 596 |
| 2018-12-31 | 548 |
| 2017-05-31 | 523 |
| 2017-09-30 | 520 |
| 2017-07-31 | 494 |
========================================================================
이 예시에서 알 수 있듯이, 150만 개 이상의 액세스 토큰이 2024-06-15에 만료되며, 이는 2023-06-15에 마이그레이션이 실행된 후 1년 후입니다. 이는 대부분 이 마이그레이션에 의해 할당된 토큰임을 시사합니다. 그러나 다른 토큰이 동일한 날짜로 수동으로 생성되었는지에 대해 확실히 알 방법은 없습니다.
대규모로 만료 날짜 업데이트
전제 조건:
당신은:
- 관리자여야 합니다.
- 대화형 터미널을 사용해야 합니다.
대량으로 토큰의 만료 날짜를 연장하거나 제거하려면 다음 레이크 작업을 실행하세요:
-
도구를 실행하세요:
Linux 패키지 (Omnibus)gitlab-rake gitlab:tokens:edit
Helm 차트 (쿠버네티스)# 툴박스 팟 찾기 kubectl --namespace <namespace> get pods -lapp=toolbox kubectl exec -it <toolbox-pod-name> -- sh -c 'cd /srv/gitlab && bin/rake gitlab:tokens:edit'
Dockersudo docker exec -it <container_name> /bin/bash gitlab-rake gitlab:tokens:edit
소스에서 직접 컴파일 (소스)sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:tokens:edit
도구가 시작되면 토큰 만료 날짜 분석 단계에서의 출력과 추가적으로 만료 날짜 수정에 대한 프롬프트를 표시합니다.
======= 개인/프로젝트/그룹 액세스 토큰 만료 마이그레이션 ======= 시작일시: 2023-06-15 10:20:35 +0000 종료일시: 2023-06-15 10:23:01 +0000 ===== 상위 10개의 개인/프로젝트/그룹 액세스 토큰 만료 날짜 ===== | 만료 날짜 | 개수 | |----------------|-------| | 2024-05-14 | 1565353 | | 2017-12-31 | 2508 | | 2018-01-01 | 1008 | | 2016-12-31 | 833 | | 2017-08-31 | 705 | | 2017-06-30 | 596 | | 2018-12-31 | 548 | | 2017-05-31 | 523 | | 2017-09-30 | 520 | | 2017-07-31 | 494 | ======================================================================== 무엇을 하시겠습니까? (↑/↓ 화살표 또는 1-3 번을 눌러 이동하고 선택하려면 Enter를 누르세요) ‣ 1. 만료 날짜 연장 2. 만료 날짜 제거 3. 종료
만료 날짜 연장
특정 만료 날짜와 일치하는 모든 토큰의 만료 날짜를 연장하려면:
-
옵션 1,
만료 날짜 연장
을 선택하세요:무엇을 하시겠습니까? ‣ 1. 만료 날짜 연장 2. 만료 날짜 제거 3. 종료
-
도구에서는 목록에 표시된 만료 날짜 중 하나를 선택하라고 요청합니다. 예를 들어:
만료 날짜를 선택하세요 (↑/↓/←/→ 화살표를 눌러 이동하고 선택하려면 Enter를 누르세요) ‣ 2024-05-14 2017-12-31 2018-01-01 2016-12-31 2017-08-31 2017-06-30
키보드의 화살표 키를 사용하여 날짜를 선택하세요. 중단하려면 맨 아래까지 스크롤하고
--> 중단
을 선택하세요. 선택을 확인하려면 Enter를 누르세요:만료 날짜를 선택하세요 2017-06-30 2018-12-31 2017-05-31 2017-09-30 2017-07-31 ‣ --> 중단
날짜를 선택하면 도구는 새로운 만료 날짜를 입력하라고 요청합니다:
새로운 만료 날짜는 무엇입니까? (2025-05-14) 2024-05-14
기본값은 선택한 날짜로부터 1년 후입니다. 기본값을 사용하려면 Enter를 누르거나
YYYY-MM-DD
형식으로 수동으로 날짜를 입력하세요. -
유효한 날짜를 입력한 후, 도구는 한 번 더 확인을 요청합니다:
기존 만료 날짜: 2024-05-14 새로운 만료 날짜: 2025-05-14 주의: 이제 1565353개의 토큰을 업데이트합니다. 확실합니까? (y/N)
y
를 입력하면 도구는 선택한 만료 날짜를 가진 모든 토큰의 만료 날짜를 연장합니다.N
을 입력하면 도구는 업데이트 작업을 중단하고 원래의 분석 출력으로 돌아갑니다.
만료 날짜 제거
특정 만료 날짜와 일치하는 모든 토큰의 만료 날짜를 제거하려면:
-
만료 날짜 제거
옵션 2를 선택하세요:무엇을 하시겠습니까? 1. 만료 날짜 연장 ‣ 2. 만료 날짜 제거 3. 종료
-
도구에서는 테이블에서 만료 날짜를 선택하라는 메시지가 표시됩니다. 예:
만료 날짜 선택 (↑/↓/←/→ 화살표로 이동 및 선택하려면 Enter 키를 누르세요) ‣ 2024-05-14 2017-12-31 2018-01-01 2016-12-31 2017-08-31 2017-06-30
키보드의 화살표 키를 사용하여 날짜를 선택합니다. 취소하려면, 맨 아래까지 스크롤하여
--> 취소
를 선택하세요. 선택을 확인하려면 Enter를 누르세요:만료 날짜 선택 2017-06-30 2018-12-31 2017-05-31 2017-09-30 2017-07-31 ‣ --> 취소
-
날짜를 선택한 후, 도구에서 선택을 확인하라는 메시지가 나타납니다:
경고: 2024-05-14에 만료되는 토큰의 만료일이 제거됩니다. 이로 인해 1565353개의 토큰이 영향을 받습니다. 계속하시겠습니까? (y/N)
y
를 입력하면, 도구는 선택한 만료 날짜를 가진 모든 토큰의 만료 날짜를 제거합니다.N
을 입력하면, 도구는 업데이트 작업을 중단하고 처음 메뉴로 돌아갑니다.