Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

GitHub Enterprise Cloud とEnterpriseアカウントと Organization について

こんにちは!オルターブースの横野です。 この記事はオルターブース アドベントカレンダー 2024 の8日目の記事になります。

adventar.org

本日はGitHub Enterprise Cloud (GHEC)についてやEnterpriseアカウント、Organizationについて書いていきます。

EnterpriseアカウントやOrganizationはドキュメント上では学習ができますがエンジニアのロールでは普段あまり触れる機会が少ないと思うので備忘録も兼ねて書いていきます。

GitHub Enterprise Cloud (GHEC)について

GitHub Enterprise Cloud には、GitHub Copilot Enterprise の導入が可能になる他、以下のような様々なメリットが存在します。

docs.github.com

GitHub Enterprise Cloud は GitHub Enterprise の展開オプションであり、次のような高度な機能を GitHub に追加します。

  • SAML 認証
  • 追加の GitHub Actions 分
  • メール通知の検証済みドメインへの制限
  • プライベートに公開する GitHub Pages サイト
  • マネージド ユーザー アカウント
  • リポジトリ ルールセット
  • GitHubのコンプライアンス レポート
  • 一意のサブドメインで、特定のリージョンに会社のデータをホストするオプション

EnterpriseアカウントとOrganizationについて

Enterpriseアカウント Enterpriseアカウントは、企業全体の管理を行うためのアカウントです。これにより、複数のOrganizationを一元管理し、セキュリティポリシーやアクセス権限を統一的に適用することができます。Enterpriseアカウントを使用することで、企業全体の開発者の柔軟性を保ちながら、ガバナンスと監査可能性を確保することができます。

Organization Organizationは、プロジェクトやチームごとにリポジトリやリソースを管理するための共有アカウントです。Organizationアカウントを使用することで、チームメンバーがリポジトリやその他のリソースにアクセスし、管理するための中央の場所を提供します。これにより、プロジェクトを一元的に管理し、共通のブランドでグループ化することができます。

関係性 Enterpriseアカウントは、複数のOrganizationを傘下に持つことができます。これにより、企業全体のポリシーやセキュリティ設定を一括で管理することが可能です。例えば、Enterpriseアカウントの所有者は、Organizationの所有者として自動的に設定され、各Organizationのリソースにアクセスし、管理することができます。

また、Enterpriseアカウントのポリシーは、傘下のすべてのOrganizationに適用できます。

このように、GitHubのEnterpriseアカウントとOrganizationは、企業全体の管理とプロジェクトごとの管理を効率的に行うための重要な要素です。

Enterprise 内の Organization のベスト プラクティス

Enterprise 内の Organization のベスト プラクティスについては以下のように公式ドキュメントに記載されています。

docs.github.com

Enterprise 内の Organization を構築する際には、ビジネスの特性とニーズに合わせた最適な構造を選ぶことが重要です。現在のカルチャーに合わせるだけでなく、目指すカルチャーに合わせた戦略を立てることも推奨されます。

Organization の数について

GitHub では、Organization の数を最小限に抑えることが推奨されます。単一の Organization 内でリソースを見つけやすくし、コミュニケーションを円滑にするためです。ただし、各 Organization に異なるポリシーや設定を適用する必要がある場合は、複数の Organization を作成することも検討した方がよい。

Organization の構造について

Organization の構造には、主に 5 つのアーキテクチャータイプがあります。単一の Organization と複数の Organization のどちらを使用するか、すべてのメンバーにすべてのリポジトリへのアクセスを許可するか、Teamを使用してリポジトリ アクセスをより細かく管理するかなどの決定が必要です。

docs.github.com

5つのアーキテクチャータイプ

アーキテクチャータイプについては以下があります

  • リポジトリに直接アクセスする単一の Organization
  • リポジトリ アクセスのためのチームを持つ単一の Organization
  • リポジトリに直接アクセスする複数の Organization
  • リポジトリ アクセスのためのチームを持つ複数の Organization
  • アクセス方法が異なる複数の Organization

Enterpriseに紐づくOrganizationを取得するRESTAPIがない

ここまではドキュメントベースで学習できる内容でしたが、ここからは最近の業務の中でEnterpriseに紐づくOrganizationをリストで取得したい。となった時の話をもとに書いていきます。

Enterpriseアカウントのページにアクセスすれば、どの Organization が管理されているかは一目瞭然ですが API で取得したい。となった時に使いなれている REST API で試してみましたが存在しませんでした。

GitHub には、REST API と GraphQL API という 2 つの API が用意されているのでGraphQL API を使って取得する形になります。

GraphQL API ついての説明は以下になります。

docs.github.com

GitHub の REST API と GraphQL API の比較については以下になります。

docs.github.com

以下のように GraphQL API にクエリを投げると Enterpriseに紐づくOrganizationをリストで取得することができました。

slug: "{Enterpriseアカウント名}" "login": {Organizaiton名}になります。

Tips

最近知ったのですがGitHubには GraphQL Explorer というものがあってhttps://docs.github.com/の中でGitHubアカウントでサインインするだけですぐにクエリが試せるというものがありました。

docs.github.com

docs.github.com