GitHub リポジトリのアクセス権について整理(組織レベル)

Git
この記事は約6分で読めます。
記事内に広告が含まれています。

本記事ではOrganization内のリポジトリのアクセス権(アクセス可)を中心にまとめます。

  • Enterpriseにも触れます。
  • ポリシーにも触れます。
Enterprise, Organization, Repository

自分のリポジトリに外部コラボレータ招待であれば、単純だけど、EnterpriseやOrganizationでは一体・・・?

個人アカウントのリポジトリは、

  • 所有者
  • コラボレータ(WRITE相当)

だけ。

というのがあるので書くよ!以下、目次です。

組織内のリポジトリのアクセス権

リポジトリのアクセス権の種類

通常は以下の5種類の権限が準備されています(強い順に並べています)。

  • Admin
  • Maintainer
  • Write
  • Triage
  • Read

権限毎に何が出来るかについては後半でも触れますが、GitHub公式サイトを見たほうが確実です。

Organizationのリポジトリロール - GitHub Docs
細かなロールを割り当て、ユーザーに必要な機能やタスクへのアクセスを付与することによって、Organization内の各リポジトリへのアクセスをカスタマイズできます。

上記は組織内の場合ですからね!
→ 個人の場合はAdmin相当である「所有者」とWrite相当である「コラボレータ」です!

○カスタムロール

EnterpriseプランであればOrganization単位で上記5種類以外のカスタムロールを定義することも可能です。AdminとMaintainerの間ぐらいの権限を定義したい、といったことも可能です。

リポジトリの権限を設定

組織(Organization)内の任意リポジトリにアクセス権を設定しよう。

Admin=リポジトリ管理者であって、メンバの招待&権限設定等が出来ます。

よって、リポジトリ管理者(Admin)に招待してもらって「Read以上」の権限を振ってもらえれば「アクセス可能」ということになります。

Privateリポジトリの場合です。
※Publicであれば、アクセス権の付与無しで参照可能ですもんね。

権限概要
Adminリポジトリの管理者(全設定及び招待が可能)
Maintainerリポジトリのサブ管理者(一部設定が可能)
Writeリポジトリの読み書きが出来る。
Triageリポジトリの参照が出来る。
※チケットの作成や編集、割付などは出来る。
Readリポジトリの参照が出来る。
※チケットの作成やコメントは可能です(割当等は出来ない)。
  • 権限は個人またはTeam単位に設定出来ます。
    ※個人とTeamで重複(特にTeamが強い場合)は、Mixed rolesと警告が出ます。
  • Triageはコードは触らないけどIssue等のチケットは積極的に管理したい人に向きます。
  • Publicリポジトリの場合、ログイン無しでもデフォルトで「Read」相当です。※ただし、ログインしていないとコメントは書けません。

ここまでがOrganization内におけるリポジトリの場合でした。

Enterprise/Organizationまで含めたリポジトリの権限設定

EnterpriseやOrganizationを利用すると、リポジトリに対するポリシー(アクセス権含む)を設定出来ます。

例えば

  • Organization所属者のリポジトリに対するデフォルトアクセス権
    → 該当Organizationに所属していれば、配下の全リポジトリにはRead権を与える…等。後からリポジトリ側のアクセス権設定でオーバーライド可能です。
  • 外部共同者の招待許容
    → Organization未所属の第3者をリポジトリに招待しない。これによってPrivateリポジトリへのアクセス権はOrganization Ownerのみが判断できるようになります。

です。

Organizationポリシで設定可能な「リポジトリのデフォルトアクセス権」は

  • No permission(未定義)
  • Read
  • Write
  • Admin

が可能です。

デフォルトアクセス権(Base Permissions)の設定。

続いて、Enterprise/Organization/Repositoryという階層を意識して、以下の表で整理してみます。

対象EnterpriseOrganizationRepository (Private)
デフォルトアクセス権定義可定義可
外部共同者の招待制限可制限可上位の制限がなければ勝手に招待可
重要なPrivateリポジトリなのに、リポジトリAdminが勝手に招待とかは絶対にやめたいところ・・・。

ポリシーの強さはEnterprise > Organization > Repositoryです。

Enterpriseで定義されていた場合、Organizationでは定義出来ません。
→ Enterpriseという上位設定をOrganizationはオーバーライドすることは出来ない。Enterpriseは強い!

※ただし、Enterpriseで未定義(No permissions)であればOrganizationに設定を委ねることが出来ます。柔軟ですね。

Organization所属後、明示的にリポジトリ招待しなくてもデフォルト(ベースロール)が既にある。
OrganizationとRepository権限例

以下を想定します。

  • Organizationのリポジトリ権限ポリシは「Write」とする。
  • Organization内の複数のリポジトリがあるとする。

→ Organizationの所属メンバは明示的に設定せずに複数リポジトリをWrite権限で扱えます。Admin等の上位権限が必要な場合のみ明示的にリポジトリ権限を設定すればOK。

(参考) Organizationロール

Organization所属時の基本ロールは「Owner」「Member」があります。

  • Owner:管理者であり全リポジトリのAdmin権限もあります。
  • Member:単なるメンバーです。

Organizationのカスタムロールによって、全リポジトリの参照許可、書込許可といった設定も出来ます。

長くなりそうなのでこの程度で(別記事で全体的な権限を整理予定)

(参考) 色々なポリシー

ポリシーはリポジトリのアクセス権だけではありません。EnterpriseやOrganizationレベルのポリシーには、次のような内容もあります。

  • リポジトリ可視性(Public/Internal/Private)の変更
  • リポジトリFork許可
  • リポジトリやIssue削除
  • ブランチのルールセット
  • Action, Copilot, Codespacesなどの許可
  • ・・・

こりゃ、全体のポリシーを俯瞰するのは大変だわ。

けど、上位層でのポリシー管理は重要だからね。企業ユースでは絶対必要。

まとめ

組織Organization内リポジトリのアクセス権についてご紹介しました。

組織内のリポジトリ単体にフォーカスした場合、リポジトリ管理者(Admin権限保有者)が任意ユーザやTeamを追加します。追加の際に、WriteやReadといったリポジトリ権限を設定します。

Publicリポジトリの場合は明示的な付与がなくてもRead権限があります。ただしコメントするためにはログインが必要です。

EnterpriseやOrganizationを利用する場合は、上位でポリシーを設定出来ます。これによって、Organizationに所属した段階で関連リポジトリにRead権を与えたり、Organization非所属の第3者の招待を不可能とするようなことが出来ます。

最後までご覧いただき、ありがとうございました!

コメント

Top
タイトルとURLをコピーしました