GitHub Enterprise Server の概要
GitHub Enterprise Server は、GitHub プラットフォームのセルフホステッド バージョンです。
GitHub は、自己完結型の仮想アプライアンスとして GitHub Enterprise Server を配布します。 仮想マシンをプロビジョニングしてアプライアンスをインストールすると、インスタンスはカスタム アプリケーション スタックを使って Linux オペレーティング システムを実行します。 詳細については、 [AUTOTITLE を](/admin/overview/about-github-enterprise-server)参照してください。
ストレージ アーキテクチャ
GitHub Enterprise Server には 2 つのストレージ ボリュームが必要です。1 つは _ルート ファイルシステム_ パス (`/`) にマウントされ、もう 1 つは _ユーザー ファイルシステム_ パス (`/data/user`) にマウントされます。 このアーキテクチャは、動作するソフトウェアの環境を永続的なアプリケーションデータから分離することによって、アップグレード、ロールバック、リカバリの手続きをシンプルにします。
ルートファイルシステムは、配布されているマシンイメージに含まれています。 これには、基本オペレーティング システムと GitHub Enterprise Server アプリケーション環境が含まれています。 ルートファイルシステムは、一過性のものとして扱われなければなりません。 ルート ファイルシステム上のすべてのデータは、将来の GitHub Enterprise Server リリースにアップグレードするときに置き換えられます。
ルート ストレージ ボリュームは、同じサイズの 2 つのパーティションに分割されます。 パーティションの 1 つがルート ファイルシステム (/) としてマウントされます。 もう 1 つのパーティションは、必要に応じて簡単にロールバックできるように、アップグレードとアップグレードのロールバック中にのみ /mnt/upgrade としてマウントされます。 たとえば、400 GB のルート ボリュームが割り当てられている場合は、ルート ファイルシステムに 200 GB が割り当てられ、アップグレードとロールバックのために 200 GB が予約されます。
3.14 以降の新規インストールでは、ルート ストレージ ボリュームは 4 つのパーティションに分割されます。 2 つの小さなパーティションはサポートされているブート モード (BIOS と UEFI) 用であり、他の 2 つの同じサイズのパーティションは GitHub Enterprise Server プライマリ用であり、アップグレードとロールバック用です。
ルート ファイルシステムには、次の情報を格納するファイルが含まれています。 このリストは全てを網羅しているわけではありません。
- カスタムの証明機関 (CA) 証明書 (
/usr/local/share/ca-certificates*) - カスタムのネットワーク設定
- カスタムのファイアウォール設定
- レプリケーションの状態
ユーザー ファイルシステムには、次の構成とデータを格納するファイルが含まれています。 このリストは全てを網羅しているわけではありません。
- Git リポジトリ
- データベース
- インデックスの検索
- GitHub Pages サイトで公開されたコンテンツ
- Git 大容量ファイルストレージからの大きなファイル
- pre-receive フック環境
展開トポロジ
既定では、 GitHub Enterprise Server はスタンドアロン インスタンスとして実行されます。 デプロイに別のトポロジを使用することで、 GitHub Enterprise Server の信頼性とパフォーマンスを向上させることができます。
- システムまたはネットワークの障害の影響を軽減するために、パッシブ レプリカ インスタンスをデプロイできます。 プライマリ インスタンスに影響する障害が発生した場合は、レプリカ インスタンスに手動でフェールオーバーできます。 詳しくは、「高可用性構成について」をご覧ください。
- 複数のアクティブ レプリカを構成して、プライマリ インスタンスから地理的に離れている開発者のパフォーマンスを向上させることができます。 詳しくは、「Geo-replicationについて」をご覧ください。
- 数万人の開発者がいる一部の企業は、垂直方向ではなく水平方向にスケーリングするクラスター構成の恩恵を受ける場合があります。 詳しくは、「クラスタリングについて」をご覧ください。
データのリテンションとデータセンターの冗長性
警告
運用環境で GitHub Enterprise Server を使用する前に、バックアップとディザスター リカバリー計画を設定することを強くお勧めします。
GitHub Enterprise Server には、 GitHub Enterprise Server Backup Utilitiesを使用したオンラインバックアップと増分バックアップのサポートが含まれています。 インクリメンタルスナップショットは、オフサイトや地理的に離れたストレージのために長距離を経てセキュアなネットワークリンク(SSH管理ポート)経由で取ることができます。 スナップショットは、プライマリ データセンターにおける災害時の復旧において、新たにプロビジョニングされたインスタンスにネットワーク経由で復元できます。
ネットワーク バックアップに加えて、インスタンスがオフラインになっているかメンテナンス モードになっている間の、ユーザー ストレージ ボリュームの AWS (EBS) や VMware のディスク スナップショットがサポートされています。 通常のボリューム スナップショットは、サービス レベルの要件で定期的なオフライン メンテナンスが可能な場合、 GitHub Enterprise Server Backup Utilities を使用したネットワーク バックアップの代わりに、低コストで複雑さの少ないスナップショットとして使用できます。
詳しくは、「Backup Utilities を使用したインスタンスのバックアップの構成」をご覧ください。
セキュリティ
GitHub Enterprise Server は、ユーザーのインフラストラクチャ上で実行され、ファイアウォール、ネットワーク ポリシー、IAM、監視、VPN など、ユーザーが定義するアクセスとセキュリティの制御によって管理されます。 GitHub Enterprise Server は、規制コンプライアンスの対象となる Enterprise で使うのに適しており、パブリック クラウドのソフトウェア開発プラットフォームから発生する問題を回避するのに役立ちます。
GitHub Enterprise Server には、追加のセキュリティ機能も含まれています。
- オペレーティング システム、ソフトウェア、パッチ
- ネットワークのセキュリティ
- アプリケーションのセキュリティ
- 外部サービスおよびサポートへのアクセス
- 暗号化通信
- ユーザーおよびアクセス権限
- 認証
- 監査およびアクセスのログ取得
オペレーティング システム、ソフトウェア、パッチ
GitHub Enterprise Server は、必要なアプリケーションとサービスのみを使用してカスタマイズされた Linux オペレーティング システムを実行します。
GitHub は、標準の製品リリース サイクルの一環として、インスタンスのコア オペレーティング システムのパッチを配布します。 パッチは、 GitHub Enterprise Serverの機能、安定性、および重要でないセキュリティの問題に対処します。
GitHub では、通常のリリース サイクル以外で必要に応じて重要なセキュリティ パッチも提供されます。
GitHub Enterprise Server はアプライアンスとして提供され、オペレーティング システム パッケージの多くは通常の Ubuntu ディストリビューションと比較して変更されます。 この理由 (オペレーティング システムのアップグレードを含む) の基になるオペレーティング システムの変更はサポートされていません。これは、セクション 11.3 の除外に基づき、 [GitHub Enterprise Server ライセンスとサポート契約に](https://enterprise.github.com/license)準拠しています。
現在、 GitHub Enterprise Server の基本オペレーティング システムは Ubuntu 20 (Focal Fossa) です。 Ubuntu 20 (Focal Fossa) は 2025 年 5 月までで標準サポートは終了しますが、延長セキュリティ メンテナンスを利用して 2025 年以降もセキュリティ サポートを受けることができます。
定期的なパッチ更新プログラムは GitHub Enterprise Serverリリース ページでリリースされ、 リリース ノート ページには詳細が表示されます。 これらのパッチには、通常、エンジニアリング チームによってテストと、品質の承認が行われた後に、アップストリーム ベンダーとプロジェクトのセキュリティ パッチが含まれます。 アップストリーム更新プログラムがリリースされたときから、今後の GitHub Enterprise Server パッチ リリースでテストおよびバンドルされるまでに、若干の遅延が発生する可能性があります。
ネットワークのセキュリティ
GitHub Enterprise Serverの内部ファイアウォールは、インスタンスのサービスへのネットワーク アクセスを制限します。 アプライアンスが機能するために必要なサービスだけが、ネットワークを通じて利用できます。 詳しくは、「[AUTOTITLE](/admin/configuration/configuring-network-settings/network-ports)」をご覧ください。
アプリケーションのセキュリティ
GitHubのアプリケーション セキュリティ チームは、GitHubを含むGitHub Enterprise Server製品の脆弱性評価、侵入テスト、コード レビューに常に焦点を当てています。
GitHub また、外部のセキュリティ企業と契約し、 GitHub 製品のポイントインタイムセキュリティ評価を提供しています。
外部サービスおよびサポートへのアクセス
GitHub Enterprise Server は、ネットワークから外部サービスへのエグレス アクセスなしで動作できます。 また、メール配信、外部モニタリング、およびログ転送のため、外部サービスとのインテグレーションを有効にすることも可能です。 詳細については、「[AUTOTITLE](/admin/configuration/configuring-your-enterprise/configuring-email-for-notifications)」、「[AUTOTITLE](/admin/enterprise-management/monitoring-your-appliance/setting-up-external-monitoring)」、「[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity/log-forwarding)」を参照してください。
トラブルシューティング データを手動で収集し、 GitHub のサポートに送信できます。 詳しくは、「GitHub サポートにデータを提供する」をご覧ください。
暗号化通信
GitHub は、企業のファイアウォールの背後で実行するように設計されています。 回線を介した通信を保護するため、Transport Layer Security (TLS) を有効化するようお勧めします。
GitHub Enterprise Server では、HTTPS トラフィック用の 2048 ビット以上の商用 TLS 証明書がサポートされています。 詳しくは、「[AUTOTITLE](/admin/configuration/configuring-network-settings/configuring-tls)」をご覧ください。
既定では、Git によるリポジトリへのアクセスと管理の両方の目的で、インスタンスによって Secure Shell (SSH) アクセスも提供されます。 詳細については、「SSH について」および「管理シェル (SSH) にアクセスする」を参照してください。
お使いの GitHub Enterprise Server インスタンスの SAML 認証を構成する場合は、インスタンスと SAML IdP の間で暗号化されたアサーションを有効にすることができます。 詳しくは、「[AUTOTITLE](/admin/identity-and-access-management/using-saml-for-enterprise-iam#enabling-encrypted-assertions)」をご覧ください。
ユーザーおよびアクセス権限
GitHub Enterprise Server には、3 種類のアカウントが用意されています。
-
adminLinux ユーザー アカウントは、ファイルシステムやデータベースへの直接的なアクセスを含め、基になるオペレーティング システムに対して制御されたアクセスを行うことができます。 このアカウントには、少数の信頼できる管理者がアクセスできるようにすべきで、SSH を介してアクセスできます。 詳しくは、「管理シェル (SSH) にアクセスする」をご覧ください。 -
インスタンスの Web アプリケーション内のユーザー アカウントは、自らのデータと、他のユーザーや Organization が明示的に許可したあらゆるデータへのフル アクセスができます。
-
インスタンスの Web アプリケーション内のサイト管理者は、高レベルの Web アプリケーションおよびインスタンスの設定、ユーザーおよび Organization のアカウント設定、リポジトリ データを管理できるユーザー アカウントです。
GitHub Enterprise Serverのユーザーアクセス許可の詳細については、「[AUTOTITLE](/get-started/learning-about-github/access-permissions-on-github)」を参照してください。
認証
GitHub Enterprise Server には、4 つの認証方法が用意されています。
- SSH 公開鍵認証は、Git によるリポジトリへのアクセスと、管理シェルアクセスの両方を提供します。 詳細については、「SSH について」および「管理シェル (SSH) にアクセスする」を参照してください。
- HTTP クッキーを用いたユーザ名とパスワードによる認証では、ウェブアプリケーションのアクセスおよびセッションの管理、そして任意で 2 要素認証 (2FA) を提供します。 詳しくは、「ビルトイン認証の設定」をご覧ください。
- LDAP サービス、SAML アイデンティティプロバイダ (IdP)、またはその他互換性のあるサービスを用いた外部 LDAP、SAML、および CAS 認証は、ウェブアプリケーションへのアクセスを提供します。 詳しくは、「Enterprise IAM での SAML の使用」をご覧ください。
- OAuth と personal access token は、外部クライアントとサービスの両方に Git リポジトリ データと API へのアクセスを提供します。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。
監査およびアクセスのログ取得
GitHub Enterprise Server には、従来のオペレーティング システムとアプリケーション ログの両方が格納されます。 また、アプリケーションは詳細な監査ログとセキュリティ ログを書き込みます。このログ GitHub Enterprise Server 永続的に格納されます。
`syslog-ng` プロトコルを介して、両方の種類のログをリアルタイムで複数の宛先に転送できます。 詳細については、「[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise)」および「[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/exploring-user-activity/log-forwarding)」を参照してください。
アクセスログと監査ログには、以下のような情報が含まれています。
アクセス ログ
- ブラウザと API アクセスの両方の、ウェブサーバーの完全なログ
- Git、HTTPS、および SSH プロトコルを介した、リポジトリデータへのアクセスの完全なログ
- HTTPS および SSH を介した、管理アクセスのログ
監査ログ
- ユーザのログイン、パスワードのリセット、2 要素認証のリクエスト、メール設定の変更、ならびに許可されたアプリケーションおよび API への変更
- ユーザアカウントやリポジトリのアンロックなどの、サイト管理者のアクション
- リポジトリのプッシュイベント、アクセス許可、移譲、および名前の変更
- 組織のメンバー変更には、チームの作成および破棄が含まれています。
オープンソースに依存するコンポーネント GitHub Enterprise Server
インスタンスのバージョンの GitHub Enterprise Serverと各プロジェクトのライセンスの依存関係の完全な一覧は、 http(s)://HOSTNAME/site/creditsで確認できます。
インスタンス上で、依存関係と関連メタデータの完全な一覧を含んだ 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 で入手できます。