사용자 계정 삭제

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리, GitLab Dedicated

사용자는 GitLab 인스턴스에서 삭제할 수 있습니다.

  • 사용자 본인이.
  • 관리자가.
note
사용자를 삭제하면 해당 사용자 네임스페이스의 모든 프로젝트가 삭제됩니다.

본인 계정 삭제

  • 사용자가 본인 계정을 삭제하는 시간과 사용자 레코드가 삭제되는 시간 간격은 GitLab 16.0부터 도입된 delay_delete_own_user라는 플래그로 유지되고 있습니다. GitLab.com의 기본 설정값은 사용자가 계정을 삭제한 후 7일이 소요됩니다.
자체 관리형 GitLab의 경우, 기본적으로 이 기능을 사용할 수 없습니다. 관리자는 delay_delete_own_user라는 플래그를 활성화하여 사용할 수 있습니다. GitLab.com에서는 이 기능을 사용할 수 있습니다. GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.

GitLab.com에서 본인 계정을 삭제한 후 계정이 삭제되기까지 7일이 소요됩니다.

  • 해당 사용자는 차단됩니다.
  • 동일한 사용자명으로 새 계정을 만들 수 없습니다.

    note
    7일이 지난 후에는 누구나 해당 이전 사용자명으로 새 사용자 계정을 만들 수 있습니다. 따라서 7일이 지난 후에도 해당 사용자명으로 새 계정을 만들 수 있다고 가정해서는 안 됩니다. 왜냐하면 이미 사용 중일 수 있기 때문입니다.

    해당 이메일 주소를 계정에서 제거한 후, 동일한 이메일 주소로 새 계정을 생성할 수 있습니다.

다음은 1시간 내에 삭제됩니다.

  • 이슈, 코멘트, 노트, 병합 요청 또는 코드 스니펫이 없는 계정.
  • 유료 네임스페이스의 계정.

사용자로서 본인 계정을 삭제하려면:

  1. 왼쪽 사이드바에서 아바타를 선택합니다.
  2. 프로필 편집을 선택합니다.
  3. 왼쪽 사이드바에서 계정을 선택합니다.
  4. 계정 삭제를 선택합니다.

자신의 계정을 삭제할 수 없는 경우, 개인 데이터 요청을 제출하여 GitLab에서 계정 및 데이터를 제거해 달라고 요청하세요.

동일한 이메일 주소로 새 계정 생성

GitLab.com에서 본인 계정을 삭제하기 전과 계정이 삭제되기까지의 시간 동안, 동일한 이메일 주소 또는 사용자명으로는 새 계정을 만들 수 없습니다.

동일한 이메일 주소로 새 계정을 만들려면, 계정을 삭제하기 전에:

  1. 계정에 보조 이메일 주소를 추가합니다.
  2. 기본 이메일을 이 새로운 보조 이메일 주소로 변경합니다.
  3. 이제 보조 이메일 주소가 된 이메일 주소를 제거합니다.
  4. 본인 계정을 삭제합니다.

이제 이전 기본 이메일 주소와 동일한 이메일 주소로 새 계정을 만들 수 있습니다.

사용자 및 사용자 기여 삭제

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

관리자로서 사용자 계정을 삭제하려면:

  1. 왼쪽 사이드바에서 관리자를 선택합니다.
  2. 개요 > 사용자를 선택합니다.
  3. 사용자를 선택합니다.
  4. 계정 탭에서 다음을 선택합니다:
    • 사용자만 삭제하지만 관련 기록을 유지합니다. 해당 사용자가 그룹의 유일한 소유자인 경우 이 옵션을 사용할 수 없습니다.
    • 사용자와 기여 삭제를 선택하여 사용자와 관련된 기록을 삭제합니다. 이 옵션은 사용자가 그룹의 유일한 직접 소유자인 모든 그룹(및 해당 그룹 내 프로젝트)을 제거합니다. 상속된 소유권은 적용되지 않습니다.
caution
사용자 및 기여 삭제 옵션 사용 시 의도와는 다른 데이터가 제거될 수 있습니다. 추가 세부 정보는 관련 기록에서 확인하세요.

관련 기록

사용자를 삭제할 때, 다음 중 하나를 선택할 수 있습니다:

  • 사용자를 삭제하지만 기여는 시스템 전체적인 “Ghost User”로 이동:
    • @ghost는 삭제된 모든 사용자의 기여를 포함하는 컨테이너 역할을 합니다.
    • 사용자의 프로필 및 개인 프로젝트가 삭제됩니다.
  • 사용자 및 해당 기여를 삭제하며 다음을 포함합니다:

두 경우 모두, 커밋은 사용자 정보를 유지하므로 Git 저장소 내의 데이터 무결성이 유지됩니다.

사용자를 삭제하는 대신 사용자를 차단하는 것도 대안입니다.

사용자가 남용 보고서 또는 스팸 로그에서 삭제되면 해당 관련 기록은 항상 제거됩니다.

삭제된 관련 레코드 옵션은 API관리자 영역에서 요청할 수 있습니다.

caution
사용자 승인은 사용자 ID와 관련이 있습니다. 다른 사용자 기여는 사용자 ID와 관련이 없습니다. 따라서 사용자와 그들의 기여를 “Ghost User”로 이동시키면 승인 기여는 누락되거나 잘못된 사용자 ID를 참조합니다. 사용자를 삭제하는 대신 차단, 금지, 또는 비활성화하는 것을 고려하세요.

Self-managed 인스턴스에서 루트 계정 삭제

Offering: Self-managed
caution
루트 계정은 시스템에서 가장 특권을 가진 계정입니다. 루트 계정을 삭제하면 인스턴스 관리자 영역에 다른 관리자가 없는 경우에는 인스턴스에 대한 액세스 권한을 상실할 수 있습니다.

UI 또는 GitLab 레일즈 콘솔을 사용하여 루트 계정을 삭제할 수 있습니다.

루트 계정을 삭제하기 전에:

  1. 루트 계정에 대해 프로젝트 또는 개인 액세스 토큰을 생성하고 작업 흐름에서 사용한 경우, 루트 계정의 필요한 권한이나 소유권을 새 관리자에게 이전하세요.
  2. Self-managed 인스턴스를 백업하세요.
  3. 루트 계정을 비활성화하거나 차단하는 것을 고려하세요.

UI 사용

전제 조건:

  • Self-managed 인스턴스의 관리자여야 합니다.

루트 계정을 삭제하려면:

  1. Admin 영역에서 관리자 액세스를 가진 새 사용자를 만듭니다. 이는 루트 계정을 삭제하는 데 관련된 위험을 완화하며 인스턴스에 대한 관리자 액세스를 유지할 수 있도록 합니다.
  2. 루트 계정을 삭제하세요.

GitLab 레일즈 콘솔 사용

caution
데이터를 변경하는 명령은 올바르게 실행되지 않거나 적절한 조건이 충족되지 않은 경우에 손상을 일으킬 수 있습니다. 항상 테스트 환경에서 명령을 실행하고 복원할 수 있는 백업 인스턴스를 준비하세요.

전제 조건:

  • GitLab 레일즈 콘솔에 액세스해야 합니다.

레일즈 콘솔에서 루트 계정을 삭제하려면:

  1. 이미 있는 다른 사용자에게 관리자 액세스 권한을 부여하세요:

    user = User.find(username: 'Username') # 또는 이메일로 찾으려면 User.find_by(email: 'email@example.com')를 사용합니다
    user.admin = true
    user.save!
    

    이는 루트 계정을 삭제하는 데 관련된 위험을 완화하며 인스턴스에 대한 관리자 액세스를 유지할 수 있도록 합니다.

  2. 루트 계정을 삭제하려면 다음 중 하나를 수행합니다:

    • 루트 계정 차단:

      # 현재 관리자 사용자여아 함
      current_user = User.find(username: 'Username')
      
      # 차단하려는 루트 사용자
      user = User.find(username: 'Username')
      
      ::Users::BlockService.new(current_user).execute(user)
      
    • 루트 사용자 비활성화:

      # 현재 관리자 사용자여아 함
      current_user = User.find(username: 'Username')
      
      # 비활성화하려는 루트 사용자
      user = User.find(username: 'Username')
      
      ::Users::DeactivateService.new(current_user, skip_authorization: true).execute(user)
      

문제 해결

사용자 삭제 시 PostgreSQL 널 값 오류 발생

알려진 문제로 사용자가 삭제되지 않고 다음 오류가 생성됩니다.

ERROR: null value in column "user_id" violates not-null constraint

이 오류는 PostgreSQL 로그관리자 영역의 백그라운드 작업 뷰재시도(Reatries) 섹션에서 확인할 수 있습니다.

삭제된 사용자가 반복 기능을 사용한 경우(예: 이슈를 반복에 추가) 이슈에서 문서화된 해결책을 사용하여 사용자를 삭제해야 합니다.