액세스 토큰 Rake 작업

Tier: Free, Premium, Ultimate Offering: Self-managed

토큰 만료 날짜 분석

GitLab 16.0에서 배경 마이그레이션이 모든 만료되지 않는 개인, 프로젝트 및 그룹 액세스 토큰에 대해 생성된 후 1년으로 설정된 만료 날짜를 부여했습니다.

이 마이그레이션에 영향을 받을 수 있는 토큰을 식별하기 위해 모든 액세스 토큰을 분석하고 가장 일반적인 만료 날짜 상위 10개를 표시하는 Rake 작업을 실행할 수 있습니다:

리눅스 패키지 (Omnibus)
   gitlab-rake gitlab:tokens:analyze  
Helm 차트 (Kubernetes)
   # 툴박스 팟 찾기  
   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  
소스에서 컴파일 (Self-compiled)
   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   |  
========================================================================  

이 예시에서는 1.5백만 개 이상의 액세스 토큰이 2024-06-15의 만료 날짜를 가지며, 이는 마이그레이션이 2023-06-15에 실행된 후 1년입니다.
이로 인해 이러한 토큰의 대부분이 마이그레이션에 의해 지정되었음을 나타냅니다. 그러나 다른 토큰이 동일한 날짜로 수동으로 생성되었는지 여부는 확실히 알 수 없습니다.

대량으로 만료 날짜 업데이트

사전 요구 사항:

당신은:

  • 관리자인 경우.
  • 대화형 터미널을 가지고 있어야 합니다.

다음 Rake 작업을 실행하여 토큰의 만료 날짜를 대량으로 연장하거나 제거하세요:

  1. 도구 실행:

    리눅스 패키지 (Omnibus)
    gitlab-rake gitlab:tokens:edit  
    
    Helm 차트 (Kubernetes)
    # 툴박스 팟 찾기  
    kubectl --namespace <namespace> get pods -lapp=toolbox  
    kubectl exec -it <toolbox-pod-name> -- sh -c 'cd /srv/gitlab && bin/rake gitlab:tokens:edit'  
    
    도커
    sudo docker exec -it <container_name> /bin/bash  
    gitlab-rake gitlab:tokens:edit  
    
    소스에서 컴파일 (Self-compiled)
    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, Extend expiration date를 선택합니다:

    무엇을 하시겠습니까?
    ‣ 1. 만료 날짜 연장
      2. 만료 날짜 제거
      3. 종료
    
  2. 도구는 나열된 만료 날짜 중 하나를 선택하라고 요청합니다. 예를 들어:

    만료 날짜를 선택하세요 (↑/↓/←/→ 화살표 키로 이동하고 Enter를 눌러 선택)
    ‣ 2024-05-14
      2017-12-31
      2018-01-01
      2016-12-31
      2017-08-31
      2017-06-30
    

    키보드의 화살표 키를 사용하여 날짜를 선택합니다. 중단하려면, 아래로 스크롤하여 --> Abort를 선택합니다. 선택을 확인하려면 Enter를 누릅니다:

    만료 날짜를 선택하세요
      2017-06-30
      2018-12-31
      2017-05-31
      2017-09-30
      2017-07-31
    ‣ --> Abort
    

    날짜를 선택하면 도구가 새로운 만료 날짜를 묻습니다:

    새 만료 날짜는 얼마로 하시겠습니까? (2025-05-14) 2024-05-14
    

    기본값은 선택한 날짜로부터 1년 후입니다. 기본값을 사용하려면 Enter를 누르거나 YYYY-MM-DD 형식으로 날짜를 수동으로 입력합니다.

  3. 유효한 날짜를 입력한 후, 도구가 확인을 한 번 더 요청합니다:

    이전 만료 날짜: 2024-05-14
    새 만료 날짜: 2025-05-14
    경고: 이제 1565353개의 토큰이 업데이트됩니다. 확실합니까? (y/N)
    

    y를 입력하면 도구는 선택된 만료 날짜가 있는 모든 토큰의 만료 날짜를 연장합니다.

    N을 입력하면 도구는 업데이트 작업을 중단하고 원래의 분석 출력으로 돌아갑니다.

만료 날짜 제거

주어진 만료 날짜와 일치하는 모든 토큰의 만료 날짜를 제거하려면:

  1. 옵션 2, Remove expiration date를 선택합니다:

    무엇을 하시겠습니까?
      1. 만료 날짜 연장
    ‣ 2. 만료 날짜 제거
      3. 종료
    
  2. 도구는 테이블에서 만료 날짜를 선택하라고 요청합니다. 예를 들어:

    만료 날짜를 선택하세요 (↑/↓/←/→ 화살표 키로 이동하고 Enter를 눌러 선택)
    ‣ 2024-05-14
      2017-12-31
      2018-01-01
      2016-12-31
      2017-08-31
      2017-06-30
    

    키보드의 화살표 키를 사용하여 날짜를 선택합니다. 중단하려면, 아래로 스크롤하여 --> Abort를 선택합니다. 선택을 확인하려면 Enter를 누릅니다:

    만료 날짜를 선택하세요
      2017-06-30
      2018-12-31
      2017-05-31
      2017-09-30
      2017-07-31
    ‣ --> Abort
    
  3. 날짜를 선택한 후, 도구가 선택을 확인하라고 요청합니다:

    경고: 이는 2024-05-14에 만료되는 토큰의 만료를 제거합니다.
    이는 1565353개의 토큰에 영향을 미칠 것입니다. 확실합니까? (y/N)
    

    y를 입력하면 도구는 선택된 만료 날짜가 있는 모든 토큰의 만료 날짜를 제거합니다.

    N을 입력하면 도구는 업데이트 작업을 중단하고 첫 번째 메뉴로 돌아갑니다.