◀ 用語一覧
NO.30.8

⚖️ Governance

更新: 2026.09.11

一言で

ガバナンスは 誰が何をできるか を決めること。

まず orgteamポリシーruleset で形にする。

ルールは上から下へ流れる。repo も Copilot も同じ。

Organization の 3 モデル 📖 Docs 🏢 リコー事例

まず org をいくつ作るか。モデルごとに、全社員が最初から何を見られるかが変わる。

▸ モデルをクリック

1 · 単一 org

Single organization

すべてを 1 つの org に置き、team と repo の権限で分ける。既定では招待された repo しか見えないOrg base permission = None)。閉じたままではサイロ化するため、全社員 team を共有 repo に既定で追加して可視性を確保する。

2 · Red / Green / SB

Red-green-sandbox

org を 3 つ持つ。🟢 Green は既定の置き場で、repo の約 9 割。全社員が最初から読めて push もできるため InnerSource が回る(base permission = Write)。🔴 Red は機密用で、招待された人しか中が見えないbase permission = None)。🟡 Sandbox は実験場。個人 repo を禁止するならその受け皿になる(base permission = Write)。

3 · Portfolio

Portfolio company

最上位の事業部(CEO の 1 つ下)ごとに 1 org。組織変更は事業部の中で起きるので影響が出ない。org は enterprise 間を移動でき、M&A に強い。

🏢 事例 — リコー

部門ごとに org を作る運用で 100 以上の org に分裂し、コードが見つからなくなった。全社員が入れる共有 org を 1 つ開いて InnerSource の置き場にし、enterprise の設定とポリシーも Markdown で同じ org に公開した。

アクセスの付け方 📖 Docs

次はアクセス。IdP → team → repo の順で、個人に直接付けない。

flowchart LR
  IDP["🪪 IdP (Okta)<br/>唯一の情報源"]
  ENT["🏛️ Enterprise Team 📖<br/>Admin · 全 org"]
  ORG["🏢 Org Team 📖<br/>この org · 組織図ベース"]
  REPO["📦 Repository"]
  IDP -->|SCIM| ENT
  IDP -->|SCIM| ORG
  ORG -->|Write など| REPO
  ENT -->|Admin| REPO

  classDef idp fill:#1a0a2e,stroke:#ffb000,color:#ffb000,stroke-width:2px
  classDef ent fill:#2a0a0a,stroke:#ff5555,color:#ff5555,stroke-width:2px
  classDef org fill:#0a0e27,stroke:#00f0ff,color:#00f0ff,stroke-width:2px
  classDef repo fill:#0a1a14,stroke:#9bbc0f,color:#9bbc0f,stroke-width:2px
  class IDP idp
  class ENT ent
  class ORG org
  class REPO repo

  click ENT href "https://docs.github.com/en/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams" "Enterprise teams のドキュメント" _blank
  click ORG href "https://docs.github.com/en/organizations/organizing-members-into-teams/about-teams" "Organization teams のドキュメント" _blank

Policies

人は入った。次は何をしてよいか。org と enterprise で決め、repo では決めない。

  • 🏛️ Enterprise — SSO / SCIM、使える機能、全 org の基準
  • 🏢 Org — メンバー権限、repo 作成、2FA、Copilot と Actions
  • 📦 Repo — ポリシーは持たず継承するだけ。repo で足せるのは ruleset。
  • 🔁 ルールはに流れる。org は厳しくできるが、緩められない。

🎯 ガードレールは上から。repo ごとに設定しない。 Org policies ↗ · Enterprise policies ↗

管理者ロール 📖 Docs

ポリシーは決まった。次は、その設定を誰が触れるか。repo のロールとは別の話。

  • 🏛️ Enterprise Owner — 全設定とポリシー。ただし org の設定と中身は既定で見えない
  • 🏢 Org Owner — その org の全権。絞る。ただし 2 名を下回らない
  • 🛡️ Security Manager — 全 repo の Read とアラート管理。セキュリティ班に Owner は要らない
  • 🧩 カスタム組織ロール — 「監査ログの閲覧だけ」など、必要な権限だけを束ねる(GHEC)

🎯 Owner は肩書きではなく鍵。配る前に、足りる小さいロールを探す。 Org roles ↗ · Custom org roles ↗

リポジトリ権限ロール

ここからは repo の中。誰が何をするか。ロールは積み上げ式。

ロール下のロールに足されるもの
👀 Read閲覧、clone、issue 作成
🔺 Triageissue と PR の管理 — label、担当、close
✍️ Writepush と merge
🛠️ Maintain破壊的でない repo 設定
👑 Admin全権 — アクセス、公開範囲、削除

🧩 合うものがなければ、org レベルでカスタムリポジトリロールを作る。 Custom roles ↗

Rulesets 📖 Docs

ポリシーが「できること」、ロールが「誰が」。ruleset はコードに何を求めるか

  • 🛡️ branch protection の後継 — レビュー必須、必須チェック、署名、force push 禁止をひとまとめに
  • 🏛️ ENT / ORG / REPO で定義 — 上位で決めれば、配下の repo すべてに効く
  • 🔁 重ねて効く — 複数当たれば最も厳しいものが勝つ。下位で緩められない
  • 🧪 Evaluate モード — 強制せずに影響だけ測る。既存 repo にはここから入れる

🎯 bypass は既定で付けない。付けた ruleset は強制ではなく「お願い」。 Org rulesets ↗

12 のアンチパターン

構造は以上。次はそれを壊すもの。01、02、11 は後から直しにくい。

▸ 数字をクリック — 何が起きるか、どう直すか

01team ごとに org

01team やプロジェクトごとに org を作る

❌ 結果協業が分断され、管理が倍増し、innersource が機能しない。

✅ 代わりに1 つの org の中で team と repo 権限で線を引く。

02org = 組織図

02org を管理階層にそのまま合わせる

❌ 結果組織変更のたびに GitHub 側の作り直しが発生する。

✅ 代わりに合わせるなら最上位で動かない事業部だけ。合わせなくてもよい。

03base が Admin

03base permission を Admin にする

❌ 結果全メンバーが全 repo に破壊的な操作をできる。

✅ 代わりにbase は Read か Write。昇格は team 経由。

04Actions 全許可

04審査なしで「すべての actions を許可」

❌ 結果未検証のサードパーティ action がビルドへの侵入経路になる。

✅ 代わりに許可リストを持ち、action は commit SHA で固定する。

05支出上限なし

05spending limit を無制限のまま使う

❌ 結果請求書払いは既定が無制限なので、超過に気づけない。

✅ 代わりに上限を明示し、cost center で追跡する。

06手動で招待

06ユーザー管理を手動招待だけで回す

❌ 結果退職者のアクセスが残る。剥がす仕組みがないため。

✅ 代わりにIdP からの SCIM による付与と剥奪。

07API ポーリング

07webhook を使わず API をポーリングする

❌ 結果rate limit を消費し、得るものなく負荷だけ増える。

✅ 代わりにイベント駆動の webhook

08監査ログの保持

08監査ログの保持期間を放置する

❌ 結果既定の保持は短く、必要なときに証跡が残っていない。

✅ 代わりに監査ログのストリーミングかエクスポートを設定する。

09org ごとに app

09全社共通の app を org ごとに入れる

❌ 結果管理が倍増し、承認が散らばり、設定がずれていく。

✅ 代わりにenterprise レベルで GitHub App を導入する。

10何でも Owner

10カスタムロールで足りるのに Owner を配る

❌ 結果Enterprise / Org Owner は実際の必要範囲より広すぎる。

✅ 代わりに用途を 1 つに絞ったカスタムロール

11後からモデル変更

11運用開始後にユーザーモデルを変える

❌ 結果Standard ↔ EMU は設定変更ではなく移行作業。

✅ 代わりにenterprise を作る時点で決める。

12退職処理なし

12オフボーディングの経路がない

❌ 結果休眠アカウントがアクセスとライセンスを持ち続ける。

✅ 代わりにUnaffiliated users ポリシーと SCIM での剥奪。

SELECT A NUMBER ▸

18 項目のガードレール 📖 Docs

設定する値と、設定する場所。時間がなければ 03、15、18。

▸ 数字をクリック · ENT / ORG / REPO = 設定する場所

01Actions の範囲

01Actions execution scopeORG

⚙️ 設定全 repo ではなく特定の repo に限定する。

02使える actions

02Allowed actionsENT

⚙️ 設定GitHub 製と Verified Creator のみ。

03workflow token

03Default workflow tokenENT / ORG

⚙️ 設定read-only。既定は read/write。

💡 理由token が漏れると Actions 経由で書き込まれる。

04PR 自動承認

04PR auto-approvalENT / ORG

⚙️ 設定無効。既定は有効。

💡 理由コードレビューを迂回して merge できてしまう。

05fork

05Repository forkingENT / ORG

⚙️ 設定必要が明確な repo 以外はオフ

06公開範囲の変更

06Repository visibility changeENT / ORG

⚙️ 設定公開範囲を変えられるを絞る。

07Fine-grained PAT

07Fine-grained PATsENT / ORG

⚙️ 設定承認フローを必須にする。

💡 理由誰がどの権限で何に触れるかを審査できる。

08外部コラボ

08Outside collaboratorsENT

⚙️ 設定Owner のみ。既定は「No policy」で誰でも招待できる。

09public repo

09Creating public repositoriesENT

⚙️ 設定OSS を別途統制しないなら禁止

10webhook secret

10Webhook secretORG / REPO

⚙️ 設定必ず設定。受信側で署名を検証できる。

11webhook SSL

11Webhook transportORG / REPO

⚙️ 設定すべてのエンドポイントで SSL

12ruleset

12Repository rulesetsENT / ORG / REPO

⚙️ 設定レビュー、チェック、ブランチ保護は ruleset で行う。

13CODEOWNERS

13CODEOWNERSREPO

⚙️ 設定.github/ に置き、パスごとに責任者を明示する。

14コミット署名

14Commit signingREPO

⚙️ 設定可能な範囲で必須にする。

💡 理由commit injection を防ぐ。Copilot cloud agent の commit は署名済み。

15ruleset bypass

15Bypassing rulesetsREPO

⚙️ 設定許可しない。bypass 付きの ruleset は「お願い」でしかない。

16runner group

16Runner groupsENT / ORG

⚙️ 設定各グループを限られた repo に割り当てる。

💡 理由全 repo に開いたグループは self-hosted runner を晒す。

17push protection

17Push protection bypassORG

⚙️ 設定指定のロールと team に限定。既定では write 権限者なら回避できる。

18監査ログ配信

18Audit log streamingENT

⚙️ 設定SIEM やオブジェクトストレージへ設定する

💡 理由最も忘れられがちで、不正検知には最も効く。

SELECT A NUMBER ▸

Copilot managed settings(NEW)

Copilot クライアントも同じ。copilot/managed-settings.json がローカル設定を上書きする。優先順位は MDM → server-managed → file → user全キー ↗

▸ + でキーの内容 · 日付は changelog

model2026-07-01

auto model selection を既定にし、手動でモデルを選ばせない。

permissions.*2026-06-17

bypass / YOLO モードを禁止し、危険な操作を承認制にする。

enabledPlugins · marketplaces2026-08-26

動かすプラグインと配布元を承認する。autoUpdate にも対応。

allowedMcpServers · deniedMcpServers2026-08-06

URL / コマンドで MCP を許可制に。fail-closed で、リスト外は動かない。

telemetry2026-07-08

自社のコレクタへ OpenTelemetry で送る。

teams/ + team-mappings.json2026-08-03

共通の基準に加え、上書き可のキーだけ team ごとに変える。

.github-private & source org

置き場所は自分が持つ 1 つの repo。Enterprise → AI controls → Agents で指定する。

.github-private/
├── agents/                    # enterprise 全体に公開
├── .github/agents/            # 検証用ステージング
└── copilot/
    ├── managed-settings.json  # 基準となる設定
    ├── team-mappings.json     # file → enterprise team
    └── teams/*.json           # team ごとの上書き
  • 🏢 選べるのは org だけ。repo 名と copilot/ のパスは固定。
  • 🔒 repo アクセスの有無に関係なくプラン全員に効く。internal にして copilot/** を CODEOWNERS で守る。

★ 使いどころ

5 つの層、ルールは 1 つ。上から設定する。

範囲
🏢 ポリシーorg → enterprise2FA、公開範囲、機能の可否
🔑 管理ロールorg → enterpriseOwner、Security manager、カスタム
👤 権限ロールリポジトリRead / Write / Admin
🛡️ rulesetブランチとタグレビュー必須、必須チェック、署名
🤖 managed settingsCopilot クライアント既定モデル、bypass 禁止、プラグイン

🎯 上から決める。repo ごとでは回らない。