Post

[Trouble Shooting] GitLab CI/CD에서 Group Token 권한 문제!

✏️ Edit
[Trouble Shooting] GitLab CI/CD에서 Group Token 권한 문제!

개발을 하다 보면 같은 그룹 내에서 CICD를 통해 레포지토리를 클론 받고, 커밋하고, 푸시해야 하는 경우가 있습니다. 이를 위해 GitLab CI/CD에서 Group Token을 활용하려 했으나, 예상치 못한 권한 문제를 겪었습니다. 이 문제를 해결한 과정을 공유합니다.

작업 개요

  • CI/CD 파이프라인을 통해 같은 그룹 내에 있는 repository를 clone 후 commit, push하는 작업

수행한 작업

  1. Group Token 생성
  • Role: developer
  • Scope: api , read_repository , write_repository

    배포 대상 레파지토리에 protected_branch로 배포하지 않을 목적이기에 developer로 Role을 정했습니다.

  1. CI/CD 환경변수 등록
  • 생성한 group_token 을 배포 진행 프로젝트의 GitLab CI/CD 변수로 등록
  1. CI/CD 스크립트에서 환경 변수 활용

    CICD script

    1
    2
    3
    4
    5
    6
    
      git clone https://oauth2:${GROUP_ACCESS_TOKEN}@git.bwg.co.kr/gitlab/product/pf/pf-api-docs.git # <- 여기서 오류 발생
      cd pf-api-docs
      git add .
      git commit -m "[Automation Commit] Deployed Javadoc to Markdown conversion for product-api"
      git push https://oauth2:${GROUP_ACCESS_TOKEN}@git.bwg.co.kr/gitlab/product/pf/pf-api-docs.git
      echo "Pushed changes to pf-api-docs repository successfully."
    

문제 상황

CI/CD에서 group_token 을 통해 git clone을 사용하려고 했으나, 권한이 없다는 오류 발생

저는 흔히 발생하는 아래의 상황을 체크했음에도 문제가 없었습니다.

  • CICD 변수명 혹은 변수값을 잘못 작성하였나? -> 아니다!
  • group_token에 권한이 부족한가? -> 아니다! read_repo, write_repo 모두 있다! 그리고 developer 권한은 pull&commit&push 모두 가능하다!

그래서 일단 혹시 모르니 echo를 통해 등록된 토큰 환경 변수를 출력해보았습니다.

원인 분석

  • CI/CD 실행 로그에서 group_token 이 정상적으로 출력되지 않음 😑(echo 출력값이 없음)
  • 찾아보니 GitLab CI/CD의 환경 변수 설정에서, 기본적으로 변수가 Protected Branch에서만 사용 가능하도록 설정되어 있었음
  • 하지만 나는 CI/CD 테스트를 위해 별도의 브랜치에서 작업을 진행했음
  • 즉, Protected Branch가 아닌 브랜치에서는 token을 읽어올 수 없었음

해결 방법

Image

  • GitLab CI/CD 변수 설정에서 protected_branch 제한을 제거
  • 이후 다시 실행하니 정상적으로 token을 활용할 수 있었음

정리

GitLab CI/CD에서 Protected Branch에서만 접근 가능하도록 변수가 설정되어 있을 수 있습니다. 따라서, CI/CD에서 특정 브랜치에서 실행할 때 token이 정상적으로 읽히지 않는다면, 환경 변수 설정을 확인하고 Protected Branch 제한을 해제하는 것이 해결책이 될 수 있습니다.

이와 같은 CI/CD 관련 이슈를 해결할 때는 다음과 같은 점을 고려해야 합니다.

  1. CI/CD 환경 변수 설정을 확인
  2. 로그를 출력하여 변수 값이 정상적으로 읽히는지 확인
  3. GitLab의 기본 보안 정책을 숙지하고 필요한 경우 설정 변경

비슷한 문제를 겪고 있는 분들에게 도움이 되길 바랍니다!