Open5

GitHub Enterpriseガバナンス

yuriemoriyuriemori

GitHub Enterpriseでガバナンスのためにドキュメント化すべきもの

諸元:https://wellarchitected.github.com/library/governance/checklist/

Ensure teams are well-versed in the intent of branch rules and verify rules are in place.

  • ブランチ戦略

Ensure roles are clearly defined and documented.
Clearly define and document each role’s access rights and responsibilities.
Regularly review and update access rights documentation.

  • GitHubのロールと各ロールがどのような権利と責務を持っているか

Ensure incident response plans are documented and accessible.

  • インシデント発生時のレスポンス計画

Ensure governance policies are regularly reviewed and updated to adapt to new requirements.
Involve stakeholders in the policy update process, such as application owners and change managers.

  • ガバナンスのポリシー(ステークホルダーもガバナンスポリシーの更新にコミットできるようにする)

Ensure training materials are accessible and up-to-date.

  • トレーニングの資料

Document and address any discrepancies found during access reviews.

  • 意図しないアクセスのアクティビティ

Regularly review and update configuration management policies.

  • 構成管理のポリシー

Document and address any findings from compliance audits.

  • コンプライアンスの監視から発見されたもの

Review and configure GitHub Enterprise settings to align with organizational governance policies.
Ensure settings are documented and regularly reviewed.

  • エンタープライズの設定

Document and regularly review data residency policies.

  • データレジデンシーのポリシー

Ensure support and maintenance plans are documented and accessible.

  • サポートとメンテナンスのプラン

諸元:https://wellarchitected.github.com/library/governance/design-principles/

Document the decision-making processes for changes in the system.

  • 意思決定のプロセス

Outline a change management process for initiating, reviewing, and implementing changes within the platform.

  • プラットフォーム内で発生する変更の適用プロセス(コードのマージやGitHub Enterprise内の設定の変更)
yuriemoriyuriemori

その他、コミュニティの正常性のために作成が推奨されている既定のドキュメントの種類

諸元:https://docs.github.com/ja/enterprise-cloud@latest/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file

https://docs.github.com/ja/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

CODEOWNERの設定についての記載の諸元は以下の#13
https://wellarchitected.github.com/library/governance/scenarios-and-recommendations/governance-policies-best-practices/

ドキュメントの種類 概要 備考
CODE_OF_CONDUCT.md コミュニティでの関与の仕方の基準を定義
CONTRIBUTING.md ユーザーがプロジェクトに貢献する方法を伝える
ディスカッションのテンプレート コミュニティ メンバーがリポジトリで新しいディスカッションを開くときに使用できるテンプレート
FUNDING.yml リポジトリにスポンサー ボタンを表示し、オープン ソース プロジェクトの資金調達オプションの可視性を高める
GOVERNANCE.md プロジェクトの管理方法をユーザーに通知します。 たとえば、プロジェクト ロールと意思決定の方法について
イシューと pull request のテンプレートおよび config.yml プロジェクトの管理方法を定義(たとえば、プロジェクト ロールと意思決定の方法について)
SECURITY.md プロジェクトおよびファイルにハイパーリンクされている説明でのセキュリティ脆弱性を報告する方法の手順を定義
SUPPORT.md 特定のサポート リソースにユーザーを誘導するために、リポジトリのルート、docs または .github のフォルダーに SUPPORT ファイルを追加。
誰かがリポジトリに Issue を作成すると、その人はプロジェクトの SUPPORT ファイルへのリンクを見ることになる。
トレーニングリソースなどのリンクもここに追加
CODEOWNERS.md リポジトリ中のコードに対して責任を負う個人あるいは Team を指定
yuriemoriyuriemori

ガバナンス用repos

一般に、GitHub では、作成する Organization の数を最小限に抑えることが推奨されます。 Organization の数を減らすことで、コラボレーションとインナーソーシングがさらに促進され、効率が向上します。 実際、多くの企業には、次の理由から、単一の Organization が最適です。

※以上から、ガバナンス用のreposを管理するためのOrganizationは作成しない。

リポジトリ名 目的 格納するコンテンツ 可視性 備考
.github-private Organizationのガイドライン/全体向けのアナウンス/discussionsでのエンタープライズ設定に関するQA対応や要望の募集 Org全体のREADME、Discussions、開発者向けガイドライン Private(GitHubの仕様でprivateにしか設定できない。Enterprise全員が見る必要があるので全員を招待する) write権限を持つのはEnterprise Ownerと各Orgの管理者
その他はRead権限

変更はPull Request経由で適用
governance Enterpriseおよび各Orgのポリシー・設定管理 ガバナンス方針、セキュリティ・コンプライアンスポリシー、設定値管理 Internal write権限を持つのはEnterprise Ownerと各Orgの管理者
その他はRead権限

変更はPull Request経由で適用
yuriemoriyuriemori

作成するドキュメント一覧と配置場所

組織ガバナンス & 設定ポリシー

ドキュメント名 記載内容 ロケーション(格納repos) 備考
GOVERNANCE.md エンタープライズレベルのガバナンスポリシー(Enterpriseのルール、ユーザー管理方針、ポリシー策定プロセス) governance Enterprise全体のポリシーを管理
organization/ORGANIZATIONNAME-GOVERNANCE.md 各Organizationごとのポリシー(Org固有の設定方針) governance Orgごとにフォルダを作成して管理
SECURITY.md インシデント対応計画、セキュリティポリシー、報告フロー governance 企業のセキュリティポリシーを明文化
COMPLIANCE.md 社内で定められているコンプライアンス governance 規制や社内ポリシーに基づいた対策を記載
ACCESS_MANAGEMENT.md ロールと権限の管理、意図しないアクセスの監視ポリシー governance アクセス制御ポリシーを明確にする
CHANGE_MANAGEMENT.md プラットフォーム内の変更適用プロセス(コードのマージ、ガバナンスルール変更管理) governance PRベースでの変更管理フローを明確化
enterprise-settings/ Enterpriseレイヤーの設定値(codeのrulesetなどエクスポート/インポートできるものは設定内容をjson形式でエクスポートして保存) governance ※すべての設定項目を記載するのではなく、GOVERNANCE.mdに定められた方針を反映して明示的に設定した設定内容のみを記載
organization/organization-settings/ 各Organizationレイヤーの設定値(codeのrulesetなどエクスポート/インポートできるものは設定内容をjson形式でエクスポートして保存) governance
policies/data-residency.md データレジデンシーポリシー governance データの保存場所、転送ポリシーを定義
※2025/3時点、日本ではまだdata residencyはavailableではないので、使えるようになったらポリシーを定義
policies/security-audit.md GitHubの監査ログ・セキュリティイベントをどのように監視・分析するか governance

開発者向けガイドライン

ドキュメント名 記載内容 ロケーション(格納repos) 備考
CODE_OF_CONDUCT.md コミュニティ行動規範 .github-private
CONTRIBUTING.md 開発者向けのコントリビューションガイドライン(ブランチ戦略、コーディング規約、コードレビュー方針) .github-private 開発プロセスに関するルール
SUPPORT.md トレーニング資料やサポートリソースへのリンク .github-private ユーザー向けの学習コンテンツへのリンク
CODEOWNERS.md リポジトリごとのオーナー設定 ※各リポジトリで設定
.github/ISSUE_TEMPLATE/ Issueテンプレートの格納 .github-private
.github/PULL_REQUEST_TEMPLATE.md PRの標準テンプレート .github-private
.github/DISCUSSION_TEMPLATE.md GitHub Discussions用のテンプレート .github-private
ReadMe.md Organizationの説明と各ドキュメントの説明 .github-private OrganizationのページのReadMeとして表示される
yuriemoriyuriemori

元:https://wellarchitected.github.com/library/governance/recommendations/governance-policies-best-practices/

主要な設計戦略とチェックリスト(Key design strategies and checklist)

以下は、ガバナンス強化のために組織・エンタープライズレベルで実施すべき主要な設定とポリシーです:

  1. GitHub Actions の実行制限:特定のリポジトリに限定し、ユーザーやリポジトリ所有者が自由にワークフローを作成・実行できないようにする。組織レベルで設定します。

  2. 公式および Verified Creator アクションの使用推奨:GitHub 提供または認証済制作者のアクションのみを使用するよう、エンタープライズ全体で強制できます。

  3. デフォルトのワークフロートークン権限は読み取り専用に:権限の原則に基づき、読み書きではなく読み取り専用を推奨。デフォルトが読み書きなので、トークン漏洩時の被害を防ぐためです。

  4. プルリクエストの自動承認無効化:デフォルトで有効ですが、レビューなしでマージされてしまうリスクがあるため、無効化を推奨(エンタープライズまたは組織レベルで設定可能)。

  5. 不要な場合はフォーク機能を無効化:機密情報の漏洩防止のため、フォークを制限。

  6. リポジトリの可視性変更を制限:プライベート→パブリック変更などの操作を制限することで、情報の漏洩リスクを回避。

  7. 細かいスコープのパーソナルアクセストークンに承認フローを実装:組織リソースへアクセスする PAT に対して承認が必要な設定を導入し、アクセス状況を監査可能にします。

  8. 外部コラボレーター招待を制限するポリシーの作成:デフォルトは「ポリシーなし」ですが、招待者を限定する中央管理を推奨します。

  9. パブリックリポジトリ作成を防止するエンタープライズポリシーの設定:意図しない公開を防ぎます。

  10. Webhook の署名を必須化:受信側で送信元の正当性を確認するために、Webhook に秘密鍵(secret)を設定してください。

  11. Webhook は常に SSL 経由で設定:通信のセキュリティを確保します。

  12. リポジトリ Ruleset の活用:プルリクエストへのレビュー、必須チェック、保護ブランチなどを細かくポリシーとして設定。

  13. CODEOWNERS の設定:不正な変更を防止するため、.github/CODEOWNERS ファイルでリポジトリのオーナーやレビュー責任者を指定。

  14. コミット署名の義務化:署名コミットを使うことで、供給チェーン攻撃や不正コミットの防止に役立ちます。

  15. Ruleset のバイパス禁止:例外でのバイパスを許可しない設定によって、ポリシーの一貫性と信頼性を維持します。

  16. ランナーグループの用途制限:全リポジトリではなく特定の用途に限定し、不必要なリソース実行やリスクを軽減します。

  17. Push Protection のバイパス制限:書き込み権限者による保護ルール回避を制限し、重要なブロックの回避を防ぎます。

  18. 監査ログのストリーミング:プラットフォーム利用状況をモニタリングするために、監査ログを継続的にストリーミングし、分析します。