사용자 관리 Rake 작업
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed
요약
GitLab은 사용자 관리를 위한 Rake 태스크를 제공합니다. 사용자를 모든 프로젝트에 개발자로 추가하려면 다음을 실행합니다. 모든 사용자를 모든 프로젝트에 추가하려면 다음을 실행합니다. 관리자는 maintainer로 추가되고 나머지 사용자는 모두 developer로 추가됩니다.
GitLab은 사용자 관리를 위한 Rake 태스크를 제공합니다. 관리자는 Admin 영역에서 사용자를 관리할 수도 있습니다.
사용자를 모든 프로젝트에 개발자로 추가#
사용자를 모든 프로젝트에 개발자로 추가하려면 다음을 실행합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:import:user_to_projects[username@domain.tld]
# installation from source
bundle exec rake gitlab:import:user_to_projects[username@domain.tld] RAILS_ENV=production
모든 사용자를 모든 프로젝트에 추가#
모든 사용자를 모든 프로젝트에 추가하려면 다음을 실행합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:import:all_users_to_all_projects
# installation from source
bundle exec rake gitlab:import:all_users_to_all_projects RAILS_ENV=production
관리자는 maintainer로 추가되고 나머지 사용자는 모두 developer로 추가됩니다.
사용자를 모든 그룹에 개발자로 추가#
사용자를 모든 그룹에 개발자로 추가하려면 다음을 실행합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:import:user_to_groups[username@domain.tld]
# installation from source
bundle exec rake gitlab:import:user_to_groups[username@domain.tld] RAILS_ENV=production
모든 사용자를 모든 그룹에 추가#
모든 사용자를 모든 그룹에 추가하려면 다음을 실행합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:import:all_users_to_all_groups
# installation from source
bundle exec rake gitlab:import:all_users_to_all_groups RAILS_ENV=production
관리자는 owner로 추가되므로 그룹에 다른 사용자를 추가할 수 있습니다.
특정 그룹의 모든 사용자를 project_limit:0 및 can_create_group: false로 업데이트#
특정 그룹의 모든 사용자를 project_limit: 0 및 can_create_group: false로 업데이트하려면 다음을 실행합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:user_management:disable_project_and_group_creation\[:group_id\]
# installation from source
bundle exec rake gitlab:user_management:disable_project_and_group_creation\[:group_id\] RAILS_ENV=production
이 태스크는 해당 그룹과 그 하위 그룹, 그리고 이 그룹 네임스페이스의 프로젝트에 속한 모든 사용자를 위 제한값으로 업데이트합니다.
청구 가능 사용자 수 제어#
관리자가 승인하기 전까지 신규 사용자를 차단된 상태로 두려면 이 설정을 활성화합니다.
기본값은 false입니다.
block_auto_created_users: false
모든 사용자에 대한 2단계 인증 비활성화#
이 태스크는 2단계 인증(2FA)을 사용 중인 모든 사용자의 2FA를 비활성화합니다. 예를 들어 GitLab
config/secrets.yml 파일이 유실되어 사용자가 로그인할 수 없을 때
유용합니다.
모든 사용자에 대해 2단계 인증을 비활성화하려면 다음을 실행합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:two_factor:disable_for_all_users
# installation from source
bundle exec rake gitlab:two_factor:disable_for_all_users RAILS_ENV=production
2단계 인증 암호화 키 교체#
GitLab은 2단계 인증(2FA)에 필요한 시크릿 데이터를 암호화된 데이터베이스 칼럼에
저장합니다. 이 데이터의 암호화 키는 otp_key_base라고 하며
config/secrets.yml에 저장됩니다.
이 파일이 유출되었지만 개별 2FA 시크릿은 유출되지 않았다면, 새 암호화 키로 해당 시크릿을 다시 암호화할 수 있습니다. 이 방법을 쓰면 모든 사용자에게 2FA 정보를 변경하도록 요구하지 않고도 유출된 키를 교체할 수 있습니다.
2단계 인증 암호화 키를 교체하는 방법은 다음과 같습니다.
-
config/secrets.yml파일에서 기존 키를 확인하되, 반드시production섹션을 대상으로 작업합니다. 확인할 줄은 다음과 같습니다.production: otp_key_base: fffffffffffffffffffffffffffffffffffffffffffffff -
새 시크릿을 생성합니다.
# omnibus-gitlab sudo gitlab-rake secret # installation from source bundle exec rake secret RAILS_ENV=production -
GitLab 서버를 중지하고, 기존 시크릿 파일을 백업한 다음, 데이터베이스를 업데이트합니다.
# omnibus-gitlab sudo gitlab-ctl stop sudo cp config/secrets.yml config/secrets.yml.bak sudo gitlab-rake gitlab:two_factor:rotate_key:apply filename=backup.csv old_key=<old key> new_key=<new key> # installation from source sudo /etc/init.d/gitlab stop cp config/secrets.yml config/secrets.yml.bak bundle exec rake gitlab:two_factor:rotate_key:apply filename=backup.csv old_key=<old key> new_key=<new key> RAILS_ENV=production<old key>값은config/secrets.yml에서 읽을 수 있습니다(<new key>는 앞 단계에서 생성했습니다). 사용자 2FA 시크릿의 암호화된 값은 지정한filename에 기록됩니다. 오류가 발생하면 이 파일로 롤백할 수 있습니다. -
config/secrets.yml에서otp_key_base를<new key>로 변경하고 재시작합니다. 이때도 반드시production섹션에서 작업합니다.# omnibus-gitlab sudo gitlab-ctl start # installation from source sudo /etc/init.d/gitlab start
문제가 발생하면(예: old_key 값을 잘못 사용한 경우)
config/secrets.yml 백업을 복원하고 변경 사항을 롤백할 수 있습니다.
# omnibus-gitlab
sudo gitlab-ctl stop
sudo gitlab-rake gitlab:two_factor:rotate_key:rollback filename=backup.csv
sudo cp config/secrets.yml.bak config/secrets.yml
sudo gitlab-ctl start
# installation from source
sudo /etc/init.d/gitlab start
bundle exec rake gitlab:two_factor:rotate_key:rollback filename=backup.csv RAILS_ENV=production
cp config/secrets.yml.bak config/secrets.yml
sudo /etc/init.d/gitlab start
GitLab Duo에 사용자 일괄 할당#
사용자 이름이 담긴 CSV 파일로 GitLab Duo에 사용자를 일괄 할당할 수 있습니다.
CSV 파일에는 username이라는 헤더가 있어야 하고, 그다음 각 행에 사용자 이름을 넣습니다.
username
user1
user2
user3
user4
GitLab Duo Pro#
GitLab Duo Pro의 사용자 일괄 할당에는 다음 Rake 태스크를 사용할 수 있습니다.
bundle exec rake duo_pro:bulk_user_assignment DUO_PRO_BULK_USER_FILE_PATH=path/to/your/file.csv
파일 경로에 대괄호를 사용하려면 이스케이프하거나 큰따옴표로 감쌉니다.
bundle exec rake duo_pro:bulk_user_assignment\['path/to/your/file.csv'\]
# or
bundle exec rake "duo_pro:bulk_user_assignment[path/to/your/file.csv]"
GitLab Duo Pro 및 Enterprise#
히스토리
- GitLab 18.0에서 도입되었습니다.
GitLab Self-Managed#
이 Rake 태스크는 구매한 애드온에 따라 인스턴스 수준에서 CSV 파일에 담긴 사용자 목록에 GitLab Duo Pro 또는 Enterprise 시트를 일괄 할당합니다.
GitLab Self-Managed 인스턴스에서 사용자를 일괄 할당하려면 다음을 실행합니다.
bundle exec rake gitlab_subscriptions:duo:bulk_user_assignment DUO_BULK_USER_FILE_PATH=path/to/your/file.csv
파일 경로에 대괄호를 사용하려면 이스케이프하거나 큰따옴표로 감쌉니다.
bundle exec rake gitlab_subscriptions:duo:bulk_user_assignment\['path/to/your/file.csv'\]
# or
bundle exec rake "gitlab_subscriptions:duo:bulk_user_assignment[path/to/your/file.csv]"
GitLab.com#
GitLab.com 관리자도 이 Rake 태스크로 해당 그룹이 구매한 애드온에 따라 GitLab.com 그룹에 GitLab Duo Pro 또는 Enterprise 시트를 일괄 할당할 수 있습니다.
GitLab.com 그룹에서 사용자를 일괄 할당하려면 다음을 실행합니다.
bundle exec rake gitlab_subscriptions:duo:bulk_user_assignment DUO_BULK_USER_FILE_PATH=path/to/your/file.csv NAMESPACE_ID=<namespace_id>
파일 경로에 대괄호를 사용하려면 이스케이프하거나 큰따옴표로 감쌉니다.
bundle exec rake gitlab_subscriptions:duo:bulk_user_assignment\['path/to/your/file.csv','<namespace_id>'\]
# or
bundle exec rake "gitlab_subscriptions:duo:bulk_user_assignment[path/to/your/file.csv,<namespace_id>]"
문제 해결#
사용자 일괄 할당 중 발생하는 오류#
사용자 일괄 할당 Rake 태스크를 사용할 때 다음과 같은 오류가 발생할 수 있습니다.
User is not found: 지정한 사용자를 찾을 수 없습니다. 입력한 사용자 이름이 기존 사용자와 일치하는지 확인합니다.ERROR_NO_SEATS_AVAILABLE: 사용자에게 할당할 시트가 남아 있지 않습니다. 현재 시트 할당 현황은 할당된 GitLab Duo 사용자 보기를 참고해 확인합니다.ERROR_INVALID_USER_MEMBERSHIP: 사용자가 비활성 상태이거나 봇 또는 고스트 계정이어서 할당 대상이 아닙니다. 사용자가 활성 상태인지, GitLab.com이라면 지정한 네임스페이스의 멤버인지 확인합니다.