GitLab 13.2로 업데이트: 이메일 확인 문제

GitLab 13.0.1 보안 릴리즈에서는 사용자가 이메일 확인 프로세스를 우회할 수 있는 보안 문제에 대해 설명했습니다. 해당 공지에서는 모든 영향을 받는 설치를 최대한 빨리 최신 버전으로 업그레이드할 것을 강력히 권장했습니다.

자체 관리형 인스턴스에서 여러 이메일 주소를 가진 사용자가 코드를 커밋하고 로그인하는 데 문제가 발생할 수 있습니다. 자세한 정보는 다음 해결 및 종료된 보안 문제를 참조하십시오.

위험: 사용자가 확인이 필요한 이메일 수신

GitLab 13.2로 업데이트하는 과정에서 보안 문제의 조건을 충족하는 계정에 대해 백그라운드 마이그레이션이 실행됩니다. 해당 사용자는 _미확인_으로 표시됩니다.

미확인 사용자에게 초기 이메일이 보내져 문제에 대해 설명합니다. 그 후 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.

사용자가 이 메시지를 보게 되면, 관리자에 의해 차단되었음을 확인하세요. 영향을 받는 사용자가 이 메시지를 보게 되면, 코드를 커밋하기 전에 이메일 주소를 확인해야 합니다.

자체 관리형 GitLab 인스턴스의 관리자로서 알아야 할 내용은 무엇인가요?

다음 옵션이 사용자를 도울 수 있습니다:

  • 사용자가 수신한 이메일을 통해 이메일 주소를 확인할 수 있습니다.
  • 사용자는 https://gitlab.example.com/users/confirmation/new로 이동하여 이메일 주소를 직접 확인할 수 있습니다.

관리자로서, 관리 영역에서 사용자를 확인할 수도 있습니다.

관리자이지만 계정에 액세스할 수 없는 경우 어떻게 해야 하나요?

관리자이지만 이메일 주소를 확인할 수 없는 경우 Rails 콘솔 세션을 사용하여 GitLab 인스턴스에 로그인하십시오. 연결한 후 다음 명령을 실행하여 관리자 계정을 확인하세요:

admin = User.find_by_username "root" # 귀하의 관리자 사용자 이름으로 대체하십시오
admin.confirmed_at = Time.zone.now
admin.save!

자체 관리형 인스턴스의 모든 사용자를 강제로 확인하는 방법은 무엇인가요?

관리자이고 시스템의 모든 사용자를 강제로 확인하려는 경우 Rails 콘솔 세션을 사용하여 GitLab 인스턴스에 로그인하십시오. 연결한 후 다음 명령을 실행하여 모든 사용자 계정을 확인하세요:

User.where('LENGTH(confirmation_token) = 32').where(confirmed_at: nil).find_each { |u| u.confirmed_at = Time.now; u.save }

경고: 이 섹션에서 설명한 명령은 이메일 주소를 제대로 확인하지 않은 사용자를 활성화할 수 있습니다.

LDAP 사용자에 대해 어떻게 되나요?

LDAP 사용자는 다음 조건이 모두 충족되면 확인된 상태로 유지됩니다:

참고: 확인 타임스탬프(기본 vs. 보조)가 다릅니다.

사용자는 배경 마이그레이션이 확인되지 않도록 유지됩니다 만약 다음 조건 중 하나라도 해당되는 경우: