📝

GitHub Fundation 認定について

GitHub Fundation 認定について学んだことをまとめていく
 

目次


 

参考ラーニングパス


GitHub のアカウントとプラン


アカウントの種類

種類できること
PersonalGitHub.com を使用するすべてのユーザが利用
Organization複数ユーザが多くのプロジェクトで共同作業できる共有アカウント 各ユーザの個人用アカウントが所属する形
Enterprise複数の Organization ポリシーや請求を一元管理できる
 

Plan

プランできること
GitHub Free(Personal)無制限のパブリックおよびプライベート リポジトリと無制限のコラボレーター GitHub Community Support Dependabot アラート 2 要素認証の強制 500 MB の GitHub Packages ストレージ 1 か月あたり 120 GitHub Codespaces コア時間 1 か月あたり 15 GB GitHub Codespaces ストレージ GitHub Actions 機能:  1 か月あたり 2,000 分  パブリック リポジトリのデプロイ保護規則
GitHub Free(Organization)完全な機能セットを備えた無制限のパブリック リポジトリまたは機能セットが制限された非公開リポジトリで、無制限のコラボレーターと共同作業 + グループを管理するための Team アクセス コントロール
GitHub ProGitHub Free(Personal) の上位 自分のリポジトリ内で高度なツールや分析情報を必要とするが、チームに属していない個人の開発者 (個人用アカウントを使用) 向けに設計 + メールによる GitHub サポート 1 か月あたり 3,000 GitHub Actions 分 2 GB の GitHub Packages ストレージ 1 か月あたり 180 GitHub Codespaces コア時間 1 か月あたり 20 GB GitHub Codespaces ストレージ プライベート リポジトリの高度なツールと分析情報: 必須のプル リクエスト レビュー担当者 複数のプル リクエスト レビュー担当者 保護されたブランチ コード オーナー 参照の自動リンク GitHub ページ Wiki パルス、コントリビュータ−、トラフィック、コミット、コード更新頻度、ネットワーク、フォークのリポジトリ分析情報グラフ
GitHub TeamOrganization 向けの GitHub Pro のバージョン Organization 向けの GitHub Free より優れている メールによる GitHub サポート 1 か月あたり 3,000 GitHub Actions 分 2 GB の GitHub Packages ストレージ プライベート リポジトリの高度なツールと分析情報: 必須のプル リクエスト レビュー担当者 複数のプル リクエスト レビュー担当者 ドラフト プル リクエスト Team のプル リクエスト レビュー担当者 保護されたブランチ コード オーナー スケジュールされたリマインダー GitHub ページ Wiki パルス、コントリビュータ−、トラフィック、コミット、コード更新頻度、ネットワーク、フォークのリポジトリ分析情報グラフ GitHub Codespaces を有効または無効にするオプション
GitHub Enterpriseより高いレベルのサポートに加えて、追加のセキュリティ、コンプライアンス、およびデプロイ コントロールを利用 GitHub Team で使用できる機能に加えて GitHub Enterprise サポート セキュリティ、コンプライアンス、およびデプロイ コントロールの強化 SAML シングル サインオンによる認証 SAML または SCIM を使用したアクセスのプロビジョニング プライベート リポジトリまたは内部リポジトリの GitHub Actions を含むデプロイ保護規則 GitHub Advanced Security の購入オプション
 

GitHub の請求


サブスクリプションGitHub Pro や GitHub Team などのアカウントのプラン GitHub Copilot や、GitHub Marketplace のアプリなど、一定の月額料金の有料製品が含まれる
使用量ベースの請求有料製品の料金がその製品の使用量によって異なる場合に適用される
 

Copilot


Individual個人アカウント用
Business社内で GitHub Copilot を使用できるユーザーを制御可能
EnterpriseGitHub Enterprise Cloud を通じて組織で利用 組織向けのパーソナル化など
 

Codespaces


  • VM が割り当てられてインターネット経由で VSCode が利用できる
  • Codespaces の数に上限はないが、課金される
  • インターネットアクセスができないと接続できない
  • ディレクトリは /workspaces/〜
 

Projects


  • プロジェクト管理のボードを作成できる
    • テーブルビューやらボードビューやらロードマップビューやら
  • issue やら PR を管理できる
  • 組み込みワークフローを使ってオートメーションが可能
  • プロジェクトが終わったらクローズできる
 

Contribute


 

InnerSource プログラム


  • InnerSource プログラムは、アクセスが組織内のユーザーに限定される点を除いて、基本的にオープン ソース プログラムと同じもの
    • 一般的に企業で導入されるような公開されないリポジトリのこと

リポジトリの可視性と権限

Publocすべての人に表示される
Internal所有している組織のメンバーだけに表示される
Private所有者と追加したチームまたは個人にのみ表示される

アクセス権限

Readコードを書かない共同作成者にお勧め
Triage書き込みアクセスなしでイシューや pull request を積極的に管理する必要がある共同作成者にお勧め
Writeプロジェクトに積極的にプッシュする共同作成者にお勧め
Maintain機密または破壊的なアクションにアクセスすることなく、リポジトリを管理する必要があるプロジェクト マネージャーにお勧め
Adminセキュリティの管理やリポジトリの削除など、機密および破壊的なアクションを含めて、プロジェクトへのフル アクセスが必要な方にお勧め
 

セキュリティ


SECURITY.md

  • いうファイルでセキュリティポリシーを定義できる

GitHub Security Advisories

  • プロジェクト内でプライベートにセキュリティの脆弱性を検討して修正することができる
 

.gitignore

  • git 管理しないファイルを記述することで管理を除外できる
 

ブランチ保護

  • 保護されたブランチにマージされるすべての pull request に対して、承認レビューまたは状態チェックの合格を要求できたり
 

CODEOWNERS

  • 個々のチーム メンバーまたはチーム全体を、コード所有者としてリポジトリ内のパスに割り当てることができる
  • コード所有者は、自分が構成されているパス内のファイルに対する変更について、pull request をレビューする必要がある
 

自動化セキュリティ

  • リポジトリ依存関係
    • などのパッケージマネージャのスキャン
  • Dependabot
    • 問題があるパッケージの警告
  • 自動コードスキャン
  • シークレットスキャン
 

GitHub の管理


チームレベルの管理に関するベスト プラクティス

  • 入れ子になったチームを作成し、GitHub 組織内のグループまたは会社の階層を反映させる
  • 関心や特定のテクノロジ (JavaScript、データ サイエンスなど) に基づいてチームを作成し、PR レビュー プロセスの効率化に役立てる
  • ID プロバイダー (IdP) と GitHub の間のチーム同期を有効にし、組織の所有者とチーム メンテナが組織内のチームを IdP グループに接続できるようにする
    • GitHub のチームを IdP のグループと同期すると、変更を GitHub に自動的にレプリケートでき、必要な手動更新とカスタム スクリプトが減る
    • IdP とチームの同期を使って、新しいメンバーのオンボード、新しい権限の付与、Organization へのメンバー アクセスの削除などの管理タスクを管理できる
 

組織レベルの管理

  • 組織レベルでは、オーナー権限を持つ組織のメンバーは、次のようなさまざまなアクティビティを実行できる
    • Organization に参加するようユーザーを招待し、Organization からメンバーを削除する
    • ユーザーをチームに編成し、組織メンバーに "チーム メンテナ" 権限を付与する
    • Organization のリポジトリの外部コラボレーター (コンサルタントや一時従業員など、Organization の明示的なメンバーではないユーザー) を追加または削除する
    • リポジトリ権限レベルをメンバーに付与し、特定のリポジトリに対して基本 (既定) 権限レベルを設定する
    • 組織のセキュリティを設定する
    • 支払いを設定する、または Organization に支払いマネージャーを割り当てる
    • カスタム スクリプトを使用して、リポジトリに関するさまざまな種類の情報を抽出する
    • カスタム スクリプトを使用して、移行などの組織全体の変更を適用する
 

エンタープライズレベルの管理

  • Enterprise レベルでは、オーナー権限を持つ Enterprise のメンバーは次のことができる
    • エンタープライズ アカウントの SAML シングル サインオンを有効にし、各エンタープライズ メンバーが ID プロバイダー (IdP) の外部 ID を既存の GitHub アカウントにリンクできるようにする
    • エンタープライズに対して組織を追加または削除する
    • 支払いを設定する、Enterprise 内のすべての Organization に支払いマネージャーを割り当てる
    • リポジトリ管理ポリシー、プロジェクト ボード ポリシー、チーム ポリシー、およびエンタープライズ内のすべての組織、リポジトリ、およびメンバーに適用されるその他のセキュリティ設定を設定する
    • カスタム スクリプトを使用して、組織に関するさまざまな種類の情報を抽出する
    • カスタム スクリプトを使用して、移行などのエンタープライズ全体の変更を適用する
 

認証

ユーザ名とパスワード基本認証は機密性の高い情報を扱うにはリスクが高すぎることが実証されているため他を使うことが推奨
Personal access tokensGitHub API またはコマンド ラインを使用する場合に、GitHub に対する認証でパスワードの代わりに使用できる
SSH キー個人用アクセス トークンを使用する代わりに、ユーザーは SSH キーを使用して SSH 経由でリモート サーバーおよびサービスに接続し、認証することができる
デプロイキー1 つのリポジトリへのアクセス権をユーザーに付与する、GitHub でのもう 1 つの種類の SSH キー
 

セキュリティオプション

2要素認証多要素認証 (MFA) とも呼ばれる ユーザーは自分のユーザー名とパスワードを使ってサインインし、本人だけがアクセスできる別の形式の認証を指定する
SAML SSOID プロバイダー (IdP) を使用してユーザーの ID とアプリケーションを一元的に管理している場合は、GitHub で組織のリソースを保護するために Security Assertion Markup Language (SAML) シングル サインオン (SSO) を構成できる Enterprise が必要
LDAP既存のアカウントに対して GitHub Enterprise Server を認証し、リポジトリへのアクセス権を一元的に管理できる Enterprise が必要
 

Team の権限レベル

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