GitLab / security

3 개의 포스트

How to set up GitLab SAML SSO with Google Workspace (새 탭에서 열림)

Google Workspace와 GitLab.com(SaaS)을 SAML SSO로 연동하면 중앙 집중식 사용자 인증과 자동 계정 생성이 가능해져 보안성과 관리 효율성을 크게 높일 수 있습니다. 특히 구글 워크스페이스의 그룹 정보를 GitLab 역할과 동기화함으로써, 복잡한 권한 관리를 자동화하고 구성원의 변경 사항을 실시간으로 접근 제어에 반영할 수 있는 보안 환경을 구축하게 됩니다. ### SSO 연동의 아키텍처와 기대 효과 * **인증 흐름:** 사용자가 GitLab SSO URL로 접속하면 구글 워크스페이스로 리다이렉트되어 인증을 거치며, 성공 시 SAML 응답을 통해 GitLab에 최종 로그인됩니다. * **자동 프로비저닝:** 구글에 계정이 있는 사용자가 처음 로그인할 때 GitLab 계정이 자동으로 생성되어 수동 관리의 번거로움이 사라집니다. * **동적 권한 관리:** 로그인할 때마다 구글 그룹 멤버십 정보를 확인하여 GitLab 내 그룹 권한을 최신 상태로 업데이트합니다. * **중앙 집중식 보안:** 구글 워크스페이스의 보안 정책(2단계 인증 등)을 GitLab 접근에도 동일하게 적용하여 보안 수준을 강화할 수 있습니다. ### GitLab 설정 정보 수집 및 준비 사항 * **설정 위치:** SAML SSO 설정은 반드시 GitLab의 최상위 그룹(Top-level group)에서 수행해야 하며, Premium 또는 Ultimate 티어 구독이 필요합니다. * **필수 URL 정보:** GitLab 설정 페이지(Settings > SAML SSO)에서 ACS URL(Assertion Consumer Service), Identifier(Entity ID), GitLab SSO URL을 미리 복사하여 보관합니다. * **권한 요구사항:** 구글 워크스페이스의 슈퍼 관리자 권한과 GitLab 그룹의 Owner 권한이 필요합니다. ### Google Workspace 커스텀 SAML 앱 구성 * **앱 생성:** 구글 관리 콘솔의 '웹 및 모바일 앱' 메뉴에서 커스텀 SAML 앱을 추가하고 GitLab 로고와 이름을 설정합니다. * **IDP 정보 확보:** 구글 측의 SSO URL을 복사하고 IDP 인증서(.pem)를 다운로드합니다. GitLab 등록을 위해 이 인증서는 향후 SHA-1 지문(Fingerprint) 형식으로 변환해야 합니다. * **서비스 제공업체(SP) 세부 정보:** 앞서 GitLab에서 복사한 ACS URL과 Entity ID를 구글 설정 화면에 정확히 입력합니다. * **앱 활성화:** 설정을 마친 후 '사용자 액세스' 설정에서 전체 조직 또는 특정 조직 단위(OU)에 대해 앱 사용을 활성화해야 합니다. ### 속성 매핑 및 그룹 동기화 핵심 설정 * **사용자 속성 연결:** 사용자의 이메일, 성, 이름을 GitLab 속성(email, first_name, last_name)에 각각 매핑하여 정보가 정확히 전달되도록 합니다. * **그룹 동기화 설정:** 구글 그룹 정보를 GitLab으로 전달하기 위해 앱 속성 이름을 반드시 소문자 `groups`로 지정해야 합니다. 이는 GitLab이 권한 동기화를 위해 인식하는 예약어입니다. * **그룹 선택:** 동기화할 구글 워크스페이스 그룹을 최대 75개까지 선택할 수 있으며, 이를 통해 엔지니어링, 보안팀 등 조직 구조에 맞는 권한 할당이 가능해집니다. 효율적인 사용자 관리를 위해 SSO 연동 후에는 반드시 그룹 동기화 기능을 활성화하여 관리 부하를 줄이는 것을 권장합니다. 특히 퇴사자 발생 시 구글 워크스페이스 계정만 정지하면 GitLab 접근 권한도 즉시 차단되므로, 보안 사고 방지를 위한 강력한 오프보딩 프로세스를 구축할 수 있습니다.

Passkeys now available for passwordless sign-in and 2FA on GitLab (새 탭에서 열림)

GitLab이 계정 보안 강화와 사용자 편의성 증대를 위해 패스키(Passkeys) 지원을 공식적으로 시작했습니다. 이제 사용자들은 지문, 얼굴 인식 또는 PIN을 사용하여 비밀번호 없이 로그인하거나, 피싱 방지 기능이 탑재된 강력한 이중 인증(2FA) 수단으로 패스키를 활용할 수 있습니다. 이번 업데이트는 보안 환경을 개선하고 다중 인증(MFA) 사용률을 높이려는 GitLab의 '보안 설계(Secure by Design)' 서약 이행의 일환입니다. **패스키의 기술적 원리와 보안성** * 패스키는 WebAuthn 기술과 공개키 암호화(Public-key cryptography) 방식을 기반으로 작동합니다. * 개인키(Private Key)는 사용자의 기기에 안전하게 보관되어 절대 외부로 유출되지 않으며, GitLab 서버에는 공개키(Public Key)만 저장됩니다. * 이러한 구조 덕분에 설령 GitLab 서버가 침해당하더라도 공격자가 사용자의 계정에 접근할 수 있는 유효한 인증 정보를 탈취하는 것이 근본적으로 불가능합니다. **광범위한 호환성 및 설정 방법** * 데스크톱 브라우저(Chrome, Firefox, Safari, Edge)는 물론 모바일 기기(iOS 16+, Android 9+), FIDO2 하드웨어 보안 키를 모두 지원합니다. * 사용자는 자신의 프로필 설정 내 'Account > Manage authentication' 메뉴에서 패스키를 간단히 등록할 수 있습니다. * 여러 기기에서 편리하게 접속할 수 있도록 계정 하나에 다수의 패스키를 등록하여 사용하는 것이 가능합니다. **보안 설계(Secure by Design) 서약 준수** * GitLab은 CISA(미국 사이버보안 및 인프라 보안국)의 'Secure by Design' 서약에 동참하여 제품 전반의 보안 수준을 높이고 있습니다. * 패스키는 해당 서약의 핵심 목표 중 하나인 다중 인증(MFA) 채택률 확대를 달성하기 위한 핵심 요소입니다. * 기존에 2FA를 활성화한 사용자의 경우 패스키를 등록하면 해당 방식이 기본 인증 수단으로 자동 설정되어 더욱 매끄러운 로그인 경험을 제공합니다. 보안 사고의 상당수가 피싱을 통한 계정 탈취에서 시작되는 만큼, GitLab 사용자는 보안 수준을 높이기 위해 기존의 일회용 비밀번호(OTP) 방식을 대체하거나 보완할 수 있는 패스키를 적극적으로 등록해 사용할 것을 권장합니다.

A complete guide to GitLab Container Scanning (새 탭에서 열림)

GitLab은 컨테이너 라이프사이클 전반에서 발생할 수 있는 보안 위협에 대응하기 위해 파이프라인 기반 스캐닝부터 레지스트리 모니터링까지 다섯 가지 핵심 스캐닝 방식을 제공합니다. 이를 통해 개발자는 취약점을 조기에 발견하는 '시프트 레프트(Shift-left)' 보안을 실현하고, 프로덕션 환경에 배포된 이미지의 안전성을 지속적으로 확보할 수 있습니다. 결과적으로 GitLab의 컨테이너 스캐닝은 단순한 도구를 넘어 소프트웨어 구성 분석(SCA)의 필수 요소로서 통합적인 보안 관리 워크플로우를 구축하도록 돕습니다. ### 파이프라인 기반 컨테이너 스캐닝 * **기능 및 목적**: CI/CD 파이프라인 실행 단계에서 컨테이너 이미지를 검사하여 취약점이 포함된 이미지가 배포되는 것을 사전에 차단합니다. * **기술적 특징**: 오픈 소스 보안 스캐너인 Trivy를 활용하며, Free부터 Ultimate 티어까지 폭넓게 사용할 수 있습니다. * **설정 방법**: 프로젝트의 보안 구성 메뉴에서 머지 요청(MR)을 통해 자동 설정하거나, `.gitlab-ci.yml` 파일에 `Jobs/Container-Scanning.gitlab-ci.yml` 템플릿을 직접 추가하여 활성화합니다. * **사용자 정의**: `CS_IMAGE` 변수를 통해 특정 이미지를 지정하거나, `CS_SEVERITY_THRESHOLD` 변수를 사용해 'High' 또는 'Critical' 등 특정 수준 이상의 취약점만 필터링하여 리포팅하도록 설정할 수 있습니다. ### 취약점 가시성 및 관리 통합 * **머지 요청(MR) 위젯**: 스캔 결과가 MR 페이지 내 보안 위젯에 즉시 노출되어, 개발자가 코드를 병합하기 전에 영향받는 패키지와 해결 가이드를 확인할 수 있습니다. * **중앙 집중식 취약점 보고서**: 보안 팀은 'Vulnerability Report'를 통해 프로젝트 전체의 취약점을 통합 관리하며, 상태 관리(탐지됨, 확인됨, 해결됨 등) 및 담당자 할당이 가능합니다. * **의존성 목록(SBOM)**: 컨테이너 내부의 모든 운영체제 패키지와 애플리케이션 라이브러리를 카탈로그화하여 제공합니다. 이를 통해 소프트웨어 자재 명세서(SBOM)를 관리하고 공급망 보안을 강화할 수 있습니다. ### 레지스트리용 컨테이너 스캐닝 * **자동 모니터링**: GitLab 컨테이너 레지스트리에 푸시된 `latest` 태그 이미지를 대상으로 보안 정책 봇이 자동 스캔을 트리거합니다. * **지속적 취약점 탐지**: Ultimate 티어에서 제공되는 이 기능은 수동 파이프라인 실행 없이도 최신 취약점 데이터베이스(Advisories)를 바탕으로 이미지를 지속적으로 감시합니다. * **활성화 조건**: 프로젝트에 최소 하나 이상의 커밋이 있어야 하며, 컨테이너 레지스트리 알림 기능이 구성된 상태에서 '보안 구성' 메뉴의 토글 스위치를 통해 활성화할 수 있습니다. ### 성공적인 컨테이너 보안을 위한 제언 효과적인 보안 운영을 위해 먼저 **파이프라인 기반 스캐닝**을 도입하여 개발 초기 단계에서 취약점을 걸러내는 환경을 조성하는 것이 중요합니다. 이후 서비스 규모가 커지면 **레지스트리용 스캐닝**을 병행하여 배포된 이후에 새롭게 발견되는 제로데이 취약점 등에 실시간으로 대응하는 다층 방어 전략을 권장합니다.