InfoGrab Docs

GitLab UI에서 서명된 커밋

요약

이 기능의 가용성은 기능 플래그로 제어됩니다. GitLab 사용자 인터페이스를 사용하여 커밋을 생성하면, 커밋은 직접 푸시되지 않습니다. 이러한 커밋에 서명하기 위해 GitLab은 인스턴스에 구성된 전역 키를 사용합니다.

히스토리
  • GitLab 16.3에서 gitaly_gpg_signing이라는 플래그와 함께 서명된 GitLab UI 커밋에 대한 Verified 배지 표시가 도입됨. 기본적으로 비활성화됨.
  • GitLab 16.3에서 rotated_signing_keys 옵션에 지정된 여러 키를 사용한 서명 검증이 도입됨.
  • GitLab 17.0에서 GitLab Self-Managed 및 GitLab Dedicated에서 gitaly_gpg_signing 기능 플래그가 기본적으로 활성화됨.
Feature flag

이 기능의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 기록을 참조하세요. 이 기능은 테스트용으로 사용 가능하지만 프로덕션 사용에는 준비되지 않았습니다.

GitLab 사용자 인터페이스를 사용하여 커밋을 생성하면, 커밋은 직접 푸시되지 않습니다. 대신, 커밋은 사용자를 대신하여 생성됩니다.

이러한 커밋에 서명하기 위해 GitLab은 인스턴스에 구성된 전역 키를 사용합니다. GitLab은 사용자의 개인 키에 액세스할 수 없기 때문에, 생성된 커밋은 사용자 계정과 연결된 키로 서명할 수 없습니다.

예를 들어, 사용자 A가 사용자 B가 작성한 제안을 적용하면 커밋에는 다음이 포함됩니다:

Author: User A <a@example.com>
Committer: GitLab <noreply@gitlab.com>

Co-authored-by: User B <b@example.com>

사전 요구 사항#

GitLab UI 커밋에 커밋 서명을 사용하기 전에 구성해야 합니다.

그룹 또는 프로젝트에 대한 웹 기반 커밋 서명 켜기#

히스토리

그룹의 모든 프로젝트 또는 개별 프로젝트에 대해 웹 기반 커밋 서명을 켤 수 있습니다.

웹 기반 커밋 서명이 켜지면 GitLab UI(웹 편집기, Web IDE 및 머지 리퀘스트)를 통해 만들어진 모든 커밋이 인스턴스에 구성된 서명 키로 자동으로 서명됩니다.

그룹의 경우#

사전 요구 사항:

  • 그룹에 대한 Owner 권한이 있어야 합니다.

그룹의 모든 프로젝트에 대해 웹 기반 커밋 서명을 켜려면:

  1. 상단 바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. Settings > Repository를 선택합니다.
  3. General을 펼칩니다.
  4. Sign web-based commits 체크박스를 선택합니다.

그룹의 프로젝트는 이 설정을 상속합니다.

프로젝트의 경우#

사전 요구 사항:

  • 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.
Note

프로젝트는 이미 웹 기반 커밋 서명이 켜져 있는 그룹에 속해서는 안 됩니다. 그룹 설정이 켜져 있으면 프로젝트 체크박스를 사용할 수 없습니다.

프로젝트에 대해 웹 기반 커밋 서명을 켜려면:

  1. 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Settings > Repository를 선택합니다.
  3. General을 펼칩니다.
  4. Sign web-based commits 체크박스를 선택합니다.

커밋의 커미터 필드#

Git에서 커밋에는 작성자와 커미터가 모두 있습니다. 웹 커밋의 경우 Committer 필드를 구성할 수 있습니다. 이 필드를 업데이트하려면 GitLab UI 커밋에 대한 커밋 서명 구성을 참조하세요.

GitLab은 커밋을 생성하는 사용자로 Committer 필드를 설정하는 데 의존하는 여러 보안 기능을 제공합니다. 예를 들면:

커밋이 인스턴스에 의해 서명되면 GitLab은 해당 기능들에 Author 필드를 사용합니다.

REST API를 사용하여 생성된 커밋#

REST API를 사용하여 생성된 커밋도 웹 기반 커밋으로 간주됩니다. REST API 엔드포인트를 사용하여 커밋의 author_nameauthor_email 필드를 설정할 수 있으며, 이를 통해 다른 사용자를 대신하여 커밋을 만들 수 있습니다.

커밋 서명이 활성화되면 API 요청을 보내는 사용자와 다른 author_nameauthor_email을 가진 REST API를 사용하여 만든 커밋은 거부됩니다.

문제 해결#

리베이스 후 웹 커밋이 서명되지 않게 됨#

브랜치의 이전에 서명된 커밋은 다음 경우 서명되지 않게 됩니다:

  • GitLab UI에서 만들어진 커밋에 대해 커밋 서명이 구성됩니다.
  • GitLab UI에서 머지 리퀘스트가 리베이스됩니다.

이전 커밋이 수정되어 대상 브랜치 위에 추가되기 때문에 발생합니다. GitLab은 이러한 커밋에 서명할 수 없습니다.

이 문제를 해결하려면 로컬에서 브랜치를 리베이스하고 변경 사항을 GitLab에 다시 푸시합니다.

GitLab UI에서 서명된 커밋

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 기능의 가용성은 기능 플래그로 제어됩니다. GitLab 사용자 인터페이스를 사용하여 커밋을 생성하면, 커밋은 직접 푸시되지 않습니다. 이러한 커밋에 서명하기 위해 GitLab은 인스턴스에 구성된 전역 키를 사용합니다.

히스토리
  • GitLab 16.3에서 gitaly_gpg_signing이라는 플래그와 함께 서명된 GitLab UI 커밋에 대한 Verified 배지 표시가 도입됨. 기본적으로 비활성화됨.
  • GitLab 16.3에서 rotated_signing_keys 옵션에 지정된 여러 키를 사용한 서명 검증이 도입됨.
  • GitLab 17.0에서 GitLab Self-Managed 및 GitLab Dedicated에서 gitaly_gpg_signing 기능 플래그가 기본적으로 활성화됨.
Feature flag

이 기능의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 기록을 참조하세요. 이 기능은 테스트용으로 사용 가능하지만 프로덕션 사용에는 준비되지 않았습니다.

GitLab 사용자 인터페이스를 사용하여 커밋을 생성하면, 커밋은 직접 푸시되지 않습니다. 대신, 커밋은 사용자를 대신하여 생성됩니다.

이러한 커밋에 서명하기 위해 GitLab은 인스턴스에 구성된 전역 키를 사용합니다. GitLab은 사용자의 개인 키에 액세스할 수 없기 때문에, 생성된 커밋은 사용자 계정과 연결된 키로 서명할 수 없습니다.

예를 들어, 사용자 A가 사용자 B가 작성한 제안을 적용하면 커밋에는 다음이 포함됩니다:

Author: User A <a@example.com>
Committer: GitLab <noreply@gitlab.com>

Co-authored-by: User B <b@example.com>

사전 요구 사항#

GitLab UI 커밋에 커밋 서명을 사용하기 전에 구성해야 합니다.

그룹 또는 프로젝트에 대한 웹 기반 커밋 서명 켜기#

히스토리

그룹의 모든 프로젝트 또는 개별 프로젝트에 대해 웹 기반 커밋 서명을 켤 수 있습니다.

웹 기반 커밋 서명이 켜지면 GitLab UI(웹 편집기, Web IDE 및 머지 리퀘스트)를 통해 만들어진 모든 커밋이 인스턴스에 구성된 서명 키로 자동으로 서명됩니다.

그룹의 경우#

사전 요구 사항:

  • 그룹에 대한 Owner 권한이 있어야 합니다.

그룹의 모든 프로젝트에 대해 웹 기반 커밋 서명을 켜려면:

  1. 상단 바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. Settings > Repository를 선택합니다.
  3. General을 펼칩니다.
  4. Sign web-based commits 체크박스를 선택합니다.

그룹의 프로젝트는 이 설정을 상속합니다.

프로젝트의 경우#

사전 요구 사항:

  • 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.
Note

프로젝트는 이미 웹 기반 커밋 서명이 켜져 있는 그룹에 속해서는 안 됩니다. 그룹 설정이 켜져 있으면 프로젝트 체크박스를 사용할 수 없습니다.

프로젝트에 대해 웹 기반 커밋 서명을 켜려면:

  1. 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Settings > Repository를 선택합니다.
  3. General을 펼칩니다.
  4. Sign web-based commits 체크박스를 선택합니다.

커밋의 커미터 필드#

Git에서 커밋에는 작성자와 커미터가 모두 있습니다. 웹 커밋의 경우 Committer 필드를 구성할 수 있습니다. 이 필드를 업데이트하려면 GitLab UI 커밋에 대한 커밋 서명 구성을 참조하세요.

GitLab은 커밋을 생성하는 사용자로 Committer 필드를 설정하는 데 의존하는 여러 보안 기능을 제공합니다. 예를 들면:

커밋이 인스턴스에 의해 서명되면 GitLab은 해당 기능들에 Author 필드를 사용합니다.

REST API를 사용하여 생성된 커밋#

REST API를 사용하여 생성된 커밋도 웹 기반 커밋으로 간주됩니다. REST API 엔드포인트를 사용하여 커밋의 author_nameauthor_email 필드를 설정할 수 있으며, 이를 통해 다른 사용자를 대신하여 커밋을 만들 수 있습니다.

커밋 서명이 활성화되면 API 요청을 보내는 사용자와 다른 author_nameauthor_email을 가진 REST API를 사용하여 만든 커밋은 거부됩니다.

문제 해결#

리베이스 후 웹 커밋이 서명되지 않게 됨#

브랜치의 이전에 서명된 커밋은 다음 경우 서명되지 않게 됩니다:

  • GitLab UI에서 만들어진 커밋에 대해 커밋 서명이 구성됩니다.
  • GitLab UI에서 머지 리퀘스트가 리베이스됩니다.

이전 커밋이 수정되어 대상 브랜치 위에 추가되기 때문에 발생합니다. GitLab은 이러한 커밋에 서명할 수 없습니다.

이 문제를 해결하려면 로컬에서 브랜치를 리베이스하고 변경 사항을 GitLab에 다시 푸시합니다.