인증 및 권한 부여 용어집
GitLab v19.2이 용어집은 GitLab의 인증, 권한 부여, 접근 제어와 관련된 용어를 정의합니다. 시스템 전반에서 사용자 ID를 확립하고 검증하는 외부 ID 공급자 및 프로토콜입니다. ID 공급자 (IdP) 사용자 ID를 관리하는 서비스(예: Okta 또는 OneLogin)입니다.
이 용어집은 GitLab의 인증, 권한 부여, 접근 제어와 관련된 용어를 정의합니다.
ID 및 페더레이션#
시스템 전반에서 사용자 ID를 확립하고 검증하는 외부 ID 공급자 및 프로토콜입니다. 이러한 용어는 GitLab이 기업 ID 관리 시스템과 통합하여 사용자 인증을 중앙화하는 방법을 설명합니다.
ID 공급자 (IdP) 사용자 ID를 관리하는 서비스(예: Okta 또는 OneLogin)입니다. 서비스 공급자 (SP) 외부 ID 공급자에게 인증을 위임하는 애플리케이션입니다. GitLab은 SAML 또는 OIDC 인증으로 구성된 경우 서비스 공급자 역할을 합니다. SSO (Single Sign-On) 사용자가 단일 자격 증명 세트로 여러 애플리케이션에 접근할 수 있는 인증 방법입니다. SSO를 사용하면 사용자는 ID 공급자를 통해 한 번 인증하고 자격 증명을 다시 입력하지 않고도 GitLab 및 다른 연결된 서비스에 접근할 수 있습니다. SAML Security Assertion Markup Language의 약자로, ID 공급자와 서비스 공급자 간에 인증 및 권한 부여 데이터를 교환하기 위한 XML 기반 프로토콜입니다. GitLab은 기업 SSO를 위한 SAML 인증을 지원합니다. LDAP Lightweight Directory Access Protocol의 약자로, 디렉터리 정보 서비스에 접근하고 유지 관리하기 위한 표준입니다. GitLab은 사용자를 인증하고 계정 정보를 동기화하기 위해 LDAP 서버와 통합합니다. SCIM System for Cross-domain Identity Management의 약자로, 사용자 프로비저닝 및 디프로비저닝을 자동화하기 위한 표준입니다. GitLab은 ID 공급자에서 사용자 수명 주기 이벤트를 동기화하기 위해 SCIM을 지원합니다. OIDC (OpenID Connect) ID 검증을 제공하는 OAuth 2.0 기반의 인증 레이어입니다. GitLab은 인증을 위해 OIDC를 지원하며 외부 애플리케이션을 위한 OIDC 공급자 역할도 합니다. OAuth 비밀번호를 공유하지 않고 사용자를 대신하여 GitLab 리소스에 접근하기 위한 권한 부여 프로토콜입니다. OAuth는 서드파티 통합 및 GitLab을 ID 공급자로 사용하는 것을 지원합니다. Assertion 이름이나 역할과 같은 사용자 ID에 관한 정보입니다. 클레임 또는 속성이라고도 합니다. Claim 인증 토큰에 포함된 사용자 ID 또는 속성에 관한 정보입니다. 클레임은 OAuth, OIDC, JWT 토큰에서 사용자명, 이메일 또는 그룹 멤버십과 같은 세부 정보를 전달하는 데 사용됩니다. 프로비저닝 (Provisioning) 사용자 계정 및 접근 권한을 생성하고 구성하는 자동화된 프로세스입니다. SCIM 또는 LDAP를 사용하여 외부 ID 시스템에서 GitLab으로 사용자를 동기화할 수 있습니다. Assertion 소비자 서비스 URL ID 공급자로 성공적으로 인증한 후 사용자가 리디렉션되는 GitLab의 엔드포인트입니다. 발급자 (Issuer) GitLab이 ID 공급자에게 자신을 식별하는 방법입니다. 의존 당사자 트러스트 식별자라고도 합니다. 인증서 지문 (Certificate fingerprint) 서버가 올바른 인증서로 통신에 서명하고 있는지 확인하여 SAML 통신이 안전한지 확인합니다. 인증서 썸프린트라고도 합니다.
인증#
GitLab에 대한 접근을 허용하기 전에 사용자 신원을 확인하는 방법 및 자격 증명입니다. 인증은 시스템에 대한 접근을 허용하기 전에 사용자가 누구인지 확인합니다. 인증 방법에는 비밀번호, 이중 인증, SSH 키, 개인 액세스 토큰, 외부 ID 공급자와의 통합이 포함됩니다.
패스키 (Passkey) 기기에 저장된 암호화 자격 증명을 사용하는 비밀번호 없는 인증 방법입니다. 패스키는 생체 인증 또는 기기 PIN을 사용하여 피싱 저항성이 있는 인증을 제공합니다. 이중 인증 (2FA) 비밀번호 이외의 두 번째 인증 방식을 제공하도록 요구하는 추가 보안 레이어입니다. GitLab은 인증 앱 및 복구 코드를 포함한 다양한 2FA 방법을 지원합니다. 세션 (Session) 사용자가 GitLab에 로그인한 후 유지되는 임시 인증 상태입니다. 세션은 만료되거나 종료될 때까지 요청 간에 지속됩니다. SSH 키 Git 리포지터리에 접근할 때 안전한 인증을 위해 사용되는 암호화 키입니다. SSH 키는 Git 작업에서 비밀번호 기반 인증의 안전한 대안을 제공합니다. 개인 액세스 토큰 (Personal access token) GitLab API를 사용하거나 HTTPS를 통한 Git 사용 시 비밀번호의 대안으로 인증에 사용하는 토큰입니다. 개인 액세스 토큰은 수행할 수 있는 작업을 제한하는 정의된 스코프를 가집니다. 그룹 액세스 토큰 (Group access token) 해당 그룹 및 모든 하위 그룹에서 자동화된 작업을 위해 특정 그룹으로 스코프가 지정된 토큰입니다. 그룹 액세스 토큰은 그룹 권한을 상속하며 API 접근 및 Git 작업을 지원합니다. 프로젝트 액세스 토큰 (Project access token) 해당 프로젝트에서 자동화된 작업을 위해 특정 프로젝트로 스코프가 지정된 토큰입니다. 프로젝트 액세스 토큰은 프로젝트별 접근이 필요한 CI/CD 파이프라인 및 통합에 일반적으로 사용됩니다. 배포 토큰 (Deploy token) 배포 자동화를 위한 제한된 스코프의 토큰입니다. 배포 토큰은 사용자 계정 없이 리포지터리 및 패키지 레지스트리에 대한 읽기 전용 또는 쓰기 접근을 제공합니다. JWT (JSON Web Token) 당사자 간에 정보를 안전하게 전송하기 위한 컴팩트한 토큰 형식입니다. GitLab은 CI/CD job 인증, OAuth 흐름, 서비스 간 통신에 JWT를 사용합니다. 가장 (Impersonation) 승인된 사용자가 다른 사용자로 일시적으로 행동할 수 있는 관리 기능입니다. 가장은 사용자별 문제를 해결하는 데 사용되기도 합니다.
사용자 및 계정 관리#
GitLab에서 다양한 접근 수준과 기능을 정의하는 계정 유형 및 사용자 범주입니다. 이러한 용어는 시스템과 상호 작용할 수 있는 다양한 종류의 계정을 설명합니다.
사용자 계정 (User account) GitLab에 접근하는 개인을 나타내는 개별 계정입니다. 사용자 계정은 다양한 그룹과 프로젝트에 걸쳐 다양한 역할을 할당받을 수 있습니다. 사용자 유형 (User types) 사용자 계정에 할당된 유형으로, 허용 가능한 작업 세트를 암시적으로 부여합니다. 유형에는 일반(Regular), 감사자(Auditor), 관리자(Administrator)가 있습니다. 유형은 역할 및 권한과는 다릅니다. 관리자 사용자 (Administrator users) 최고 수준의 시스템 접근 권한을 가진 사용자 유형입니다. 관리자 접근 권한이 있는 사용자는 인스턴스 전체 설정을 구성하고, 다른 사용자를 관리하며, 모든 그룹과 프로젝트에 걸쳐 관리 작업을 수행할 수 있습니다.
감사자 사용자#
모든 그룹, 프로젝트 및 관리 기능에 대해 읽기 전용 접근 권한을 가진 특수 사용자 유형입니다. 감사자 사용자는 변경을 할 수 없지만 컴플라이언스 및 보안 목적으로 콘텐츠를 볼 수 있습니다.
외부 사용자 (External users) 조직 외부로 지정된 사용자로, 내부 프로젝트와 그룹에 대한 접근이 제한됩니다. 외부 사용자는 직접 멤버십이 있는 프로젝트에만 접근할 수 있습니다. 서비스 계정 (Service accounts) 자동화된 작업을 수행하고, 데이터에 접근하거나, 예약된 프로세스를 실행하도록 설계된 비사람 사용자 계정입니다. 서비스 계정은 파이프라인 또는 서드파티 통합에 일반적으로 사용됩니다.
권한 부여 및 접근 제어#
인증된 사용자가 GitLab에서 수행할 수 있는 작업을 결정하는 프레임워크 및 프로세스입니다. 권한 부여는 사용자 ID, 역할, 리소스 소유권을 기반으로 권한을 평가합니다.
접근 제어 (Access control) 인증(사용자가 누구인지 확인)과 권한 부여(사용자가 할 수 있는 작업 결정)를 기반으로 리소스에 대한 접근을 제한하는 방법입니다. 권한 부여 (Authorization) 인증된 사용자가 GitLab에서 수행할 수 있는 작업을 결정하는 프로세스입니다. 권한 부여는 사용자에게 할당된 역할, 권한, 그룹 및 프로젝트에서의 멤버십을 기반으로 합니다. RBAC (역할 기반 접근 제어) 사용자에게 직접이 아닌 역할을 통해 권한이 할당되는 접근 제어 모델입니다. GitLab에서 사용자는 그룹 또는 프로젝트에서 할당된 역할에 따라 권한을 받습니다. 정책 (Policy) 주체가 리소스에서 수행할 수 있는 작업을 결정하는 권한 부여 규칙 세트입니다. GitLab은 선언적 정책 프레임워크를 사용하여 접근 제어 결정을 적용합니다.
권한 및 역할#
사용자가 리소스에서 수행할 수 있는 작업을 정의하는 구성 요소입니다. 권한은 역할로 결합되며, 역할은 사용자에게 할당되어 특정 기능을 부여합니다.
권한 (Permission)
이슈 생성, 코드 푸시, 프로젝트 설정 관리 등 사용자가 GitLab 리소스에서 수행할 수 있는 특정 작업입니다.
역할 (Roles)
사용자에게 할당되어 그룹과 프로젝트에서 수행할 수 있는 작업을 정의하는 하나 이상의 권한 세트입니다. 역할에는 기본 역할과 커스텀 역할이 모두 포함됩니다.
기본 역할 (Default roles)
모든 GitLab 인스턴스에서 사용 가능한 사전 정의된 역할입니다. 각 역할에는 특정 권한 세트가 포함됩니다. 다음 기본 역할을 사용할 수 있습니다:
Minimal Access, Guest, Planner, Reporter, Security Manager, Developer, Maintainer, Owner.
커스텀 역할 (Custom roles)
조직 요구에 맞게 GitLab 인스턴스에 대해 직접 생성하는 역할입니다. 각
커스텀 역할은 추가 권한으로 기본 역할을 확장합니다.
스코프 (Scopes)
특정 조직 수준에서 토큰 또는 OAuth 애플리케이션에 사용 가능한 권한입니다.
GitLab은 스코프를 사용하여 개인 액세스 토큰, 그룹 액세스 토큰, 프로젝트 액세스 토큰 및 OAuth 애플리케이션에 부여되는 접근을 결정합니다.
조직 구조#
리소스를 구성하고 접근을 제어하는 계층적 컨테이너 및 관계입니다. 이러한 구조는 그룹, 프로젝트, 네임스페이스를 통해 권한이 흐르는 방식을 결정합니다.
네임스페이스 (Namespace) 그룹과 프로젝트를 계층 구조로 구성하는 컨테이너입니다. 네임스페이스는 리소스 경로와 권한 상속을 결정합니다. 각 사용자는 개인 네임스페이스를 가지며, 그룹은 팀을 위한 공유 네임스페이스를 제공합니다. 그룹 (Group) 효율적인 조직과 권한 관리를 가능하게 하는 관련 프로젝트와 사용자의 모음입니다. 그룹은 하위 그룹을 포함할 수 있으며 상위 그룹에서 권한을 상속합니다. 멤버 (Member) 특정 그룹이나 프로젝트에 접근 권한이 부여된 사용자입니다. 멤버는 해당 리소스에서의 권한을 결정하는 역할을 할당받습니다. 멤버십 (Membership) 특정 그룹이나 프로젝트에서 사용자의 접근 권한을 정의하는 사용자와 리소스 간의 연결입니다. 사용자는 여러 그룹과 프로젝트에 걸쳐 다양한 멤버십과 역할을 가질 수 있습니다. 경계 (Boundaries) 권한과 정책이 적용될 수 있는 조직 수준:
-
인스턴스: 전체 GitLab 인스턴스에 적용됩니다.
-
그룹: 특정 그룹과 모든 하위 그룹 또는 프로젝트에 적용됩니다.
-
프로젝트: 단일 프로젝트에만 적용됩니다.
-
사용자: 특정 사용자가 또는 사용자를 대신하여 수행하는 작업에 적용됩니다.
상속 (Inheritance) 상위 그룹에서 하위 그룹과 프로젝트로 권한이 자동으로 흐르는 방식입니다. 상속은 상위 수준에서 부여된 권한을 아래의 모든 중첩 하위 그룹 및 프로젝트에 적용하여 접근 관리를 단순화합니다. 가시성 (Visibility) 콘텐츠를 보고 접근할 수 있는 사람을 제어하는 설정:
-
공개(Public): GitLab 계정이 없는 사용자를 포함하여 모든 사람이 볼 수 있습니다.
-
내부(Internal): 인증된 모든 GitLab 사용자가 볼 수 있습니다.
-
비공개(Private): 멤버만 접근할 수 있습니다.