Skip to main content

시스템 개요

GitHub Enterprise Server의 시스템 내부, 기능 및 보안에 대해 자세히 알아봅니다.

GitHub Enterprise Server 정보

GitHub Enterprise Server은(는) GitHub 플랫폼의 자체 호스팅 버전입니다. GitHub는 GitHub Enterprise Server를 자체 포함 가상 어플라이언스로 배포합니다. 인스턴스는 가상 머신을 프로비저닝하고 어플라이언스를 설치한 후 사용자 지정 애플리케이션 스택을 사용하여 Linux 운영 체제를 실행합니다. 자세한 내용은 GitHub Enterprise Server 정보 을(를)항목을 참조하세요.

스토리지 아키텍처

GitHub Enterprise Server에는 두 개의 스토리지 볼륨이 필요합니다. 하나는 루트 파일 시스템 경로(/)에 탑재되고 다른 하나는 사용자 파일 시스템 경로(/data/user)에 탑재됩니다. 이 아키텍처는 실행 중인 소프트웨어 환경을 영구 애플리케이션 데이터와 분리하여 업그레이드, 롤백, 복구 절차를 간소화합니다.

루트 파일 시스템은 분산 머신 이미지에 포함됩니다. 여기에는 베이스 운영 체제 및 GitHub Enterprise Server 애플리케이션 환경이 포함되어 있습니다. 루트 파일 시스템은 임시로 처리되어야 합니다. 루트 파일 시스템의 모든 데이터는 향후 GitHub Enterprise Server 릴리스로 업그레이드할 때 바뀝니다.

루트 스토리지 볼륨은 동일한 크기의 두 파티션으로 분할됩니다. 파티션 중 하나가 루트 파일 시스템(/)으로 탑재됩니다. 다른 파티션은 필요한 경우 더 쉽게 롤백할 수 있도록 업그레이드 및 업그레이드 롤백 중에만 /mnt/upgrade로 탑재됩니다. 예를 들어, 200GB 루트 볼륨이 할당되면 루트 파일시스템에 100GB가 할당되고 업그레이드 및 롤백을 위해 100GB가 예약됩니다.

3.14 이상의 새 설치에서 루트 스토리지 볼륨은 4개의 파티션으로 분할됩니다. 두 개의 작은 파티션은 지원되는 부팅 모드(BIOS 및 UEFI)용이며, 다른 두 개의 동일한 큰 파티션은 GitHub Enterprise Server 기본 파티션과 업그레이드 및 롤백을 위한 것입니다.

루트 파일 시스템에는 다음 정보를 저장하는 파일이 포함되어 있습니다. 현재 이 목록은 완전한 목록이 아닙니다.

  • 사용자 지정 CA(인증 기관) 인증서(/usr/local/share/ca-certificates*)
  • 사용자 지정 네트워킹 구성
  • 사용자 지정 방화벽 구성
  • 복제본 상태

사용자 파일 시스템에는 다음 구성 및 데이터를 저장하는 파일이 포함되어 있습니다. 현재 이 목록은 완전한 목록이 아닙니다.

  • Git 리포지토리
  • 데이터베이스
  • 인덱스 검색
  • GitHub Pages 사이트에 게시된 콘텐츠
  • Git 대용량 파일 스토리지의 대용량 파일
  • 사전 수신 후크 환경

배포 토폴로지

기본적으로 GitHub Enterprise Server는 독립 실행형 인스턴스로 실행됩니다. 배포에 다른 토폴로지로 사용하여 GitHub Enterprise Server의 안정성과 성능을 높일 수 있습니다.

  • 시스템 또는 네트워크 오류의 영향을 완화하기 위해 수동 복제본 인스턴스를 배포할 수 있습니다. 주 인스턴스에 영향을 주는 중단 중에 복제본 인스턴스로 수동으로 장애 조치(failover)할 수 있습니다. 자세한 내용은 고가용성 구성 정보을(를) 참조하세요.
  • 여러 활성 복제본을 구성하여 주 인스턴스에서 지리적으로 멀리 떨어져 있는 개발자의 성능을 향상시킬 수 있습니다. 자세한 내용은 지역 복제 정보을(를) 참조하세요.
  • 수만 명의 개발자가 있는 일부 엔터프라이즈는 수직이 아닌 수평으로 스케일링되는 클러스터 구성을 활용할 수 있습니다. 자세한 내용은 클러스터링 정보을(를) 참조하세요.

데이터 보존 및 데이터 센터 중복도

Warning

프로덕션 환경에서 GitHub Enterprise Server를 사용하기 전에 백업 및 재해 복구 계획을 설정하는 것이 좋습니다.

GitHub Enterprise Server에는 GitHub Enterprise Server Backup Utilities를 사용한 온라인 및 증분 백업 지원이 포함되어 있습니다. 오프사이트 또는 지리적으로 분산된 스토리지를 위해 원격으로 보안 네트워크 링크(SSH 관리 포트)를 통해 증분 스냅샷을 생성할 수 있습니다. 기본 데이터 센터에서 재해가 발생한 경우 복구 시 네트워크를 통해 새로 프로비저닝된 인스턴스로 스냅샷을 복원할 수 있습니다.

네트워크 백업 외에도 인스턴스가 오프라인이거나 유지 관리 모드인 동안 사용자 스토리지 볼륨의 AWS(EBS) 및 VMware 디스크 스냅샷이 모두 지원됩니다. 서비스 수준 요구 사항으로 인해 정기적인 오프라인 유지 관리를 허용하는 경우 GitHub Enterprise Server Backup Utilities를 사용하는 네트워크 백업 대신 일반 볼륨 스냅샷을 저렴하고 복잡성이 낮은 대안으로 사용할 수 있습니다.

자세한 내용은 인스턴스에서 백업 구성을(를) 참조하세요.

보안

GitHub Enterprise Server는 인프라에서 실행되며 방화벽, 네트워크 정책, IAM, 모니터링, VPN과 같이 사용자가 정의하는 액세스 및 보안 제어에 의해 관리됩니다. GitHub Enterprise Server는 규정 준수가 적용되는 엔터프라이즈에서 사용하기 적합하며, 이를 통해 퍼블릭 클라우드의 소프트웨어 개발 플랫폼에서 발생하는 문제를 방지할 수 있습니다.

GitHub Enterprise Server에는 추가 보안 기능도 포함되어 있습니다.

운영 체제, 소프트웨어, 패치

GitHub Enterprise Server는 필수 애플리케이션과 서비스만 포함하여 사용자 지정 Linux 운영 체제를 실행합니다. GitHub는 표준 제품 릴리스 주기의 일부로 인스턴스의 핵심 운영 체제용 패치를 배포합니다. 패치는 GitHub Enterprise Server 애플리케이션의 기능, 안정성, 중요하지 않은 보안 문제를 해결합니다. GitHub는 정기적인 릴리스 주기 외에 필요에 따라 중요한 보안 패치도 제공합니다.

GitHub Enterprise Server은(는) 어플라이언스로 제공되며 일반적인 Ubuntu 배포에 비해 많은 운영 체제 패키지가 수정됩니다. 이러한 이유로 기본 운영 체제 수정(운영 체제 업그레이드 포함)은 지원하지 않으며, 이는 섹션 11.3 제외의 GitHub Enterprise Server 라이선스 및 지원 계약을 따릅니다.

현재 GitHub Enterprise Server의 기본 운영 체제는 Ubuntu 20(Focal Fossa).

정기적인 패치 업데이트는 GitHub Enterprise Server 릴리스 페이지에서 발표되며 릴리스 정보 페이지에서 자세한 정보를 제공합니다. 이러한 패치에는 일반적으로 엔지니어링 팀에서 테스트를 거쳐 품질을 승인한 업스트림 공급업체 및 프로젝트 보안 패치가 포함되어 있습니다. 업스트림 업데이트가 릴리스된 후 테스트되고 향후 GitHub Enterprise Server 패치 릴리스에 번들로 포함될 때까지 약간의 시간이 지연될 수 있습니다.

네트워크 보안

GitHub Enterprise Server의 내부 방화벽은 인스턴스의 서비스에 대한 네트워크 액세스를 제한합니다. 어플라이언스가 작동하는 데 필요한 서비스만 네트워크를 통해 사용할 수 있습니다. 자세한 내용은 네트워크 포트을(를) 참조하세요.

애플리케이션 보안

GitHub의 애플리케이션 보안 팀은 GitHub Enterprise Server를 포함하여 GitHub 제품에 대한 취약성 평가, 침투 테스트, 코드 검토에 대해 항상 집중합니다. 또한 GitHub는 외부 보안 회사와 계약을 맺어 GitHub 제품에 대한 특정 시점 보안 평가를 제공합니다.

외부 서비스 및 지원 액세스

GitHub Enterprise Server는 네트워크에서 외부 서비스로의 송신 액세스 없이 작동할 수 있습니다. 필요에 따라 메일 배달, 외부 모니터링, 로그 전달을 위해 외부 서비스와의 통합을 사용하도록 설정할 수 있습니다. 자세한 내용은 알림에 대한 메일 구성, 외부 모니터링 설정, 로그 전달을(를) 참조하세요.

문제 해결 데이터를 수동으로 수집하고 GitHub 지원으로 보낼 수 있습니다. 자세한 내용은 GitHub 지원에 데이터 제공을(를) 참조하세요.

암호화된 통신

GitHub는 회사 방화벽 뒤에서 실행되도록 GitHub Enterprise Server를 디자인합니다. 유선 통신을 보호하려면 TLS(전송 계층 보안)를 활성화하는 것이 좋습니다. GitHub Enterprise Server는 HTTPS 트래픽에 대해 2048비트 이상의 상용 TLS 인증서를 지원합니다. 자세한 내용은 TLS 구성을(를) 참조하세요.

기본적으로 인스턴스는 Git을 사용한 리포지토리 액세스와 관리 목적 모두에 대해 SSH(Secure Shell) 액세스를 제공합니다. 자세한 내용은 SSH 정보관리 셸(SSH)에 액세스을(를) 참조하세요.

GitHub Enterprise Server 인스턴스에 대해 SAML 인증을 구성하면 인스턴스와 SAML IdP 간에 암호화된 어설션을 사용할 수 있습니다. 자세한 내용은 엔터프라이즈 IAM에 SAML 사용을(를) 참조하세요.

사용자 및 액세스 권한

GitHub Enterprise Server는 세 가지 유형의 계정을 제공합니다.

  • admin Linux 사용자 계정은 직접 파일 시스템 및 데이터베이스 액세스를 포함하여 기본 운영 체제에 대한 액세스를 제어했습니다. 소수의 신뢰할 수 있는 관리자는 SSH를 통해 액세스할 수 있는 이 계정에 액세스할 수 있어야 합니다. 자세한 내용은 관리 셸(SSH)에 액세스을(를) 참조하세요.
  • 인스턴스 웹 애플리케이션의 사용자 계정은 자신의 데이터와 다른 사용자 또는 조직이 명시적으로 부여한 모든 데이터에 대한 전체 액세스 권한을 보유합니다.
  • 인스턴스 웹 애플리케이션의 사이트 관리자는 고급 웹 애플리케이션 및 인스턴스 설정, 사용자 및 조직 계정 설정 및 리포지토리 데이터를 관리할 수 있는 사용자 계정입니다.

GitHub Enterprise Server의 사용자 권한에 관한 자세한 내용은 GitHub의 액세스 권한을(를) 참조하세요.

인증

GitHub Enterprise Server는 네 가지 인증 방법을 제공합니다.

  • SSH 퍼블릭 키 인증은 Git을 사용한 리포지토리 액세스와 관리 셸 액세스를 모두 제공합니다. 자세한 내용은 SSH 정보관리 셸(SSH)에 액세스을(를) 참조하세요.
  • HTTP 쿠키를 사용한 사용자 이름 및 암호 인증은 선택적 2FA(2단계 인증)를 사용하여 웹 애플리케이션 액세스 및 세션 관리를 제공합니다. 자세한 내용은 기본 제공 인증 구성을(를) 참조하세요.
  • LDAP 서비스, SAML IdP(ID 공급자) 또는 기타 호환 서비스를 사용하는 외부 LDAP, SAML 또는 CAS 인증은 웹 애플리케이션에 대한 액세스를 제공합니다. 자세한 내용은 엔터프라이즈 IAM에 SAML 사용을(를) 참조하세요.
  • OAuth 및 personal access token은(는) 외부 클라이언트 및 서비스 모두에 대한 Git 리포지토리 데이터와 API에 대한 액세스를 제공합니다. 자세한 내용은 개인용 액세스 토큰 관리을(를) 참조하세요.

감사 및 액세스 로깅

GitHub Enterprise Server는 기존 운영 체제와 애플리케이션 로그를 모두 저장합니다. 또한 애플리케이션은 GitHub Enterprise Server가 영구적으로 저장하는 자세한 감사 및 보안 로그를 작성합니다. syslog-ng 프로토콜을 통해 두 가지 형식의 로그를 실시간으로 여러 대상에 전달할 수 있습니다. 자세한 내용은 엔터프라이즈의 감사 로그 정보로그 전달을(를) 참조하세요.

액세스 및 감사 로그에는 다음과 같은 정보가 포함됩니다.

액세스 로그

  • 브라우저 및 API 액세스 모두에 대한 전체 웹 서버 로그
  • Git, HTTPS, SSH 프로토콜을 통해 리포지토리 데이터에 액세스하기 위한 전체 로그
  • HTTPS 및 SSH를 통한 관리 액세스 로그

감사 로그

  • 사용자 로그인, 암호 재설정, 2FA 요청, 메일 설정 변경, 권한 있는 애플리케이션 및 API에 대한 변경
  • 사용자 계정 및 리포지토리 잠금 해제와 같은 사이트 관리자 작업
  • 리포지토리 푸시 이벤트, 액세스 권한 부여, 전송, 이름 바꾸기
  • 팀 만들기 및 소멸을 포함한 조직 멤버 자격 변경

GitHub Enterprise Server에 대한 오픈 소스 종속성

http(s)://HOSTNAME/site/credits에서 인스턴스 버전의 GitHub Enterprise Server 및 각 프로젝트의 라이선스에서 전체 종속성 목록을 볼 수 있습니다.

종속성 및 관련 메타데이터의 전체 목록이 있는 Tarball은 인스턴스에서 사용할 수 있습니다.

  • 모든 플랫폼에 공통적인 종속성의 경우 /usr/local/share/enterprise/dependencies-<GHE version>-base.tar.gz에 있습니다.
  • 플랫폼에 대한 특정 종속성의 경우 /usr/local/share/enterprise/dependencies-<GHE version>-<platform>.tar.gz에 있습니다.

종속성 및 메타데이터의 전체 목록과 함께 Tarball도 https://enterprise.github.com/releases/<version>/download.html에서 사용할 수 있습니다.

추가 참고 자료