- 위험: 사용자가 확인이 필요한 이메일을 받음
- 확인 이메일이 만료되는가요?
- 영향을 받는 사용자 디렉터리 생성
- 사용자가 차단되었을 때 어떻게 보이나요?
- Self-managed GitLab 인스턴스의 관리자로서 알아야 할 내용은 무엇인가요?
- 관리자이며 잠겼을 때 어떻게 해야 하나요?
- Self-managed 인스턴스의 모든 사용자를 강제로 확인하는 방법은 무엇인가요?
- LDAP 사용자는 어떻게 되나요?
GitLab 13.2로 업데이트: 이메일 확인 문제
GitLab 13.0.1 보안 릴리스에서는 사용자가 이메일 확인 프로세스를 우회할 수 있는 보안 문제에 대해 설명했습니다. 해당 공지에서는 영향을 받는 모든 설치를 최대한 빨리 최신 버전으로 업그레이드할 것을 강력히 권장했습니다.
Self-managed 인스턴스에서 여러 이메일 주소를 가진 사용자는 코드를 커밋하고 로그인할 수없을 수 있습니다. 자세한 내용은 다음에 해결된 및 종료된 보안 문제를 참조하십시오.
위험: 사용자가 확인이 필요한 이메일을 받음
GitLab 13.2로의 업데이트 프로세스 중에 보안 문제의 조건을 충족하는 계정에 대해 배경 마이그레이션이 실행됩니다. 이러한 사용자는 _미확인(unconfirmed)_으로 표시됩니다.
미확인 사용자에게 초기 이메일이 발송되어 문제에 대해 설명합니다. 그 후 5분 이내에 사용자에게 문제의 이메일 주소를 다시 확인하는 링크가 포함된 두 번째 이메일이 발송됩니다.
확인 이메일이 만료되는가요?
이 재확인 이메일의 링크는 기본적으로 하루 후에 만료됩니다. 만료된 링크를 선택한 사용자에게는 새로운 재확인 이메일을 요청하라는 메시지가 표시됩니다. 어떤 사용자든 http://gitlab.example.com/users/confirmation/new
에서 새로운 재확인 이메일을 요청할 수 있습니다.
영향을 받는 사용자 디렉터리 생성
다양한 방법을 사용하여 업그레이드 전후에 해당 디렉터리을 생성할 수 있습니다.
GitLab 13.2로의 업그레이드 전
다음 코드를 사용하여 다음 조건을 충족하는 사용자를 검색합니다.
- 현재 확인된 상태인 사용자.
- 동일한
confirmed_at
시간을 포함하는 사용자. - 부가적 이메일 주소도 포함하는 사용자.
emails_and_users_that_will_be_unconfirmed = Email.joins(:user).merge(User.active).where('emails.confirmed_at IS NOT NULL').where('emails.confirmed_at = users.confirmed_at').where('emails.email <> users.email')
GitLab 13.2로의 업그레이드 후
다음 코드를 사용하여 다음 조건을 충족하는 사용자를 검색합니다.
- 현재 확인되지 않은 사용자.
- 업그레이드 날짜 이후에도 아직 확인이 필요한 사용자.
User.where(confirmed_at: nil).where('LENGTH(confirmation_token) = 32')
사용자가 차단되었을 때 어떻게 보이나요?
사용자는 “계속하기 전에 이메일 주소를 확인해야합니다”라는 메시지를 받을 수 있습니다. 이 메시지는 사용자가 로그인을 시도할 때 404 또는 422 오류 코드를 포함할 수 있습니다.
영향을 받는 사용자가 Git 리포지터리에 코드를 커밋하면 다음 메시지가 표시될 수 있습니다.
Your account has been blocked. Fatal: Could not read from remote repository
# 또는
Your primary email address is not confirmed.
사용자들에게 해당 메시지가 표시되면, 코드를 커밋하기 전에 이메일 주소를 확인해야 합니다.
Self-managed GitLab 인스턴스의 관리자로서 알아야 할 내용은 무엇인가요?
사용자를 돕기 위한 다음 옵션이 있습니다:
- 받은 이메일을 통해 주소를 확인할 수 있습니다.
-
https://gitlab.example.com/users/confirmation/new
로 이동하여 해당 이메일 주소를 확인할 수 있습니다.
관리자로서 관리자 영역에서 사용자를 확인할 수도 있습니다.
관리자이며 잠겼을 때 어떻게 해야 하나요?
관리자이고 이메일 주소를 확인할 수 없는 경우 Rails 콘솔 세션으로 GitLab 인스턴스에 로그인합니다. 연결된 후 다음 명령을 실행하여 관리자 계정을 확인합니다.
admin = User.find_by_username "root" # 관리자 사용자명으로 대체
admin.confirmed_at = Time.zone.now
admin.save!
Self-managed 인스턴스의 모든 사용자를 강제로 확인하는 방법은 무엇인가요?
관리자이고 시스템의 모든 사용자를 강제로 확인하려면 Rails 콘솔 세션으로 GitLab 인스턴스에 로그인합니다. 연결된 후 다음 명령을 실행하여 모든 사용자 계정을 확인합니다.
User.where('LENGTH(confirmation_token) = 32').where(confirmed_at: nil).find_each { |u| u.confirmed_at = Time.now; u.save }
LDAP 사용자는 어떻게 되나요?
LDAP 사용자는 다음 조건을 모두 충족하는 경우 확인된 상태를 유지합니다:
- “가입 시 사용자 이메일 확인” 옵션이 거짓으로 설정되어 있어야 합니다.
- 첫 번째 로그인은 사용자 LDAP 자격 증명을 기반으로 합니다.
- 사용자가 부가적 이메일 주소를 추가하고 확인한 경우이어야 합니다.
다음 조건 중 하나라도 해당되면 배경 마이그레이션에 의해 사용자는 확인되지 않은 상태로 유지됩니다:
- GitLab를 통해 계정을 생성합니다.
- 기본 이메일 주소를 바꾸고(confirm_token 길이 확인), 확인한 경우입니다.
- 도래된 보안 문제로 인해 동일한
confirmed_at
타임스탬프를 가진 두 이메일 주소가 있는 경우입니다. - LDAP가 도입되었으며 사용자의 주 이메일 주소가 LDAP에 일치하는 경우입니다.