GitHub の Organization と権限のしくみ

完了

前のユニットでは、ユーザーが GitHub に対して本人認証できるさまざまな方法を確認しました。 このユニットでは、各階層レベルの権限について学習します。

  • リポジトリの権限
  • チームの権限
  • 組織の権限
  • エンタープライズの権限

リポジトリ権限レベル

権限を割り当てることで、特定のリポジトリへのアクセスをカスタマイズできます。 次の 5 つのリポジトリレベルの権限があります。

  • Read - プロジェクトの表示またはディスカッションを行う、コードを書かないコントリビューターにお勧めします。 このレベルは、リポジトリ内のコンテンツを表示する必要があるものの、実際には投稿や変更を行う必要がないすべてのユーザーに適しています。
  • Triage - イシューや pull request を積極的に管理する必要があるが、Write アクセス権は不要なコントリビューターにお勧めします。 このレベルは、イシューの追跡の管理は行っても変更はしない、一部のプロジェクト マネージャーに適している場合があります。
  • Write - プロジェクトに積極的にプッシュするコントリビューターにお勧めします。 書き込みは、ほとんどの開発者にとって標準的な権限です。
  • Maintain - リポジトリを管理する必要はあっても、機密性または破壊的なアクションへのアクセス権は不要なプロジェクト マネージャーにお勧めします。
  • Admin - セキュリティの管理やリポジトリの削除など、機密および破壊的なアクションを含む、プロジェクトへのフル アクセス権が必要な方にお勧めします。 このようなユーザーは、リポジトリの所有者と管理者です。

組織のメンバー、外部のコラボレーター、およびチームに、組織によって所有されるリポジトリへのさまざまなレベルのアクセス権を付与できます。 権限レベルごとに、リポジトリのコンテンツと設定へのアクセス権が段階的に増加します。 プロジェクト内の各ユーザーまたはチームのロールに最適なレベルを選び、プロジェクトへのアクセス権を必要以上に付与しないようにします。

適切なアクセス許可でリポジトリを作成したら、それをテンプレートにすることができます。このようにすると、そのリポジトリにアクセスできるすべてのユーザーが、既定のブランチと同じディレクトリ構造とファイルを持つ新しいリポジトリを生成できます。 テンプレートを作成するには、次のようにします。

  1. GitHub.com で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] を選びます。 [設定] タブが表示されない場合は、ドロップダウン メニューを開いて、[設定] を選びます。

    Screenshot showing where to locate the settings button in your GitHub repository.

  3. [テンプレート リポジトリ] を選びます。

Team の権限レベル

チームにより、リポジトリ権限を複数の関連ユーザーに一度に割り当てる簡単な方法が提供されます。 また、子チームのメンバーは親チームの権限設定を継承し、会社の本当の構造に基づいて権限をカスケードする簡単な方法を提供します。

チーム レベルには次の 2 つのレベルの権限があります。

アクセス許可レベル 説明
メンバー チーム メンバーには組織メンバーと同じ機能セットがあります
メンテナ チーム メンテナは、チーム メンバーができるすべてのことに加えて、次のことを実行できます。
- チームの名前、説明、および表示を変更する
- チームに親および子チームを変更するように要求する
- チームのプロファイル画像を設定する
- チーム ディスカッションを編集および削除する
- チームに対して組織メンバーを追加または削除する
- チーム メンテナ権限も持つようにチーム メンバーを昇格させる
- リポジトリへのチームのアクセス権を削除する
- チームのコード レビュー割り当てを管理する
- pull request のスケジュールされたリマインダーを管理する

組織所有者は、組織の任意のメンバーをチームのメンテナに昇格させることもできます。

管理しているリポジトリへのアクセスを監査するために、設定でリポジトリへのアクセス権を持つチームとユーザーの結合リストを表示できます。

Screenshot of the manage access screen.

Organization の権限レベル

組織レベルには、複数のレベルのアクセス許可があります。

アクセス許可レベル 説明
所有者 組織の所有者は、組織のメンバーができることをすべて実行でき、組織の他のユーザーを追加または削除できます このロールは、組織内の 2 人以上に制限する必要があります。
メンバー 組織のメンバーは、組織のリポジトリとチームを作成および管理できます。
モデレーター 組織のモデレーターは、メンバー以外の共同作成者をブロックおよびブロック解除したり、相互作用の制限を設定したり、組織が所有するパブリック リポジトリのコメントを非表示にしたりできます。
支払いマネージャー 組織の課金マネージャーは、課金情報を表示して編集できます。
セキュリティマネージャー 組織のセキュリティ マネージャーは、組織全体のセキュリティ アラートと設定を管理できます。 また、組織内のすべてのリポジトリのアクセス許可を見ることもできます。
外部コラボレーター コンサルタントや一時的な従業員などの外部コラボレーターは、1 つ以上の組織リポジトリにアクセスできます。 これは、組織の明示的なメンバーではありません。

これらのレベルに加えて、組織のすべてのメンバーに既定のアクセス許可を設定することもできます。

Screenshot of the member privileges screen with the base permissions dropdown displayed.

管理とセキュリティを強化するために、組織のすべてのメンバーに既定の読み取り権限を付与し、ケースバイケースでリポジトリへのアクセスを調整することも検討できます。 比較的小さな Organization でユーザー数が少ないか、リポジトリの数が少ないか、または 2 つの組み合わせである場合、このレベルの制限は必要ない可能性があります。 任意のリポジトリに変更をプッシュするすべてのユーザーを信頼できる場合は、既定ですべてのメンバーに書き込み権限を付与することが望ましいことがあります。

Enterprise の権限レベル

Enterprise アカウントは Organization のコレクションであることを思い出してください。 このことから、Organization のメンバーである各個人ユーザー アカウントは Enterprise のメンバーでもあり、認証に関連するさまざまな設定をこの上位レベルから制御できます。

エンタープライズ レベルには、次の 3 つの権限レベルがあります。

アクセス許可レベル 説明
所有者 エンタープライズの所有者は、エンタープライズを完全に制御でき、次のようなすべてのアクションを実行できます。
- 管理者の管理
- Enterprise の Organization の追加と削除
- Enterprise の設定の管理
- Organization 全体へのポリシーの適用
- 請求の設定の管理
メンバー エンタープライズ メンバーには組織メンバーと同じ機能セットがあります
支払いマネージャー エンタープライズ課金マネージャーは、エンタープライズの課金情報を表示および編集し、他の課金マネージャーを追加または削除することができます

これら 3 つのレベルに加えて、すべての Organization に既定のリポジトリ権限のポリシーを設定することもできます。

Screenshot of the policies screen with the default permissions dropdown displayed.

管理とセキュリティを強化するには、Enterprise のすべてのメンバーに既定の読み取り権限を付与し、ケースバイケースでリポジトリへのアクセスを調整できます。 比較的小規模な単一の Organization を含むものなど、小規模な Enterprise では、既定で書き込み権限を持つすべてのメンバーを信頼する方がよい場合があります。

リポジトリのセキュリティと管理

リポジトリのセキュリティと管理は、いくつかの方法で監視できます。

保護ルールを作成する

リポジトリ内のコンテンツに対する変更を管理するには、ブランチ保護ルールを作成して、1 つ以上のブランチに特定のワークフローを適用できます。 ブランチには次のような保護ルールを適用できます。

  • マージの前に pull request が必要です。
  • マージの前に状態チェックに合格する必要があります。
  • マージの前に会話の解決が必要です。
  • 署名されたコミットが必要です。
  • 線形履歴が必要です。
  • マージ キューが必要です。
  • マージの前にデプロイに成功する必要があります。
  • 読み取り専用にすることでブランチをロックします。
  • 一致するブランチにプッシュできるユーザーを制限します。

さらに、管理者を含むすべてのユーザーに適用されるブランチ ルールを設定できます。 たとえば、一致するブランチへの強制プッシュを許可したり、プッシュ アクセス権を持つユーザーからの削除を許可したりできます。

CODEOWNERS ファイルを追加する

CODEOWNERS ファイルをリポジトリに追加することにより、チーム メンバーまたはチーム全体を、リポジトリ内のコードに責任を負うコード所有者として割り当てることができます。 コード所有者に属するコードを変更する pull request を誰かが開くと、コード所有者はレビュー担当者として自動的に要求されます。

CODEOWNERS ファイルは、リポジトリのルート、docs フォルダー、または .github フォルダーに作成できます。

分析情報を使用してトラフィックを見る

リポジトリへのプッシュ アクセス権を持つユーザーは、そのトラフィックを表示することができます。 トラフィック グラフでは、完全なクローン (フェッチではなく)、過去 14 日間の訪問者、参照サイト、人気のあるコンテンツを確認できます。

トラフィック グラフにアクセスするには:

  1. GitHub.com で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある、[Insights](インサイト) を選択します。

    Screenshot showing where to locate the Insights button in GitHub.

  3. 左側で、[Traffic] (トラフィック) を選びます。

    Screenshot showing the Traffic tab highlighted in GitHub.

  4. 必要に応じて、[Clones] (クローン) または [Views] (ビュー) を選んで、複製またはビューのトラフィック グラフを表示できます。