📝GitHub Fundation 認定について
GitHub Fundation 認定について学んだことをまとめていく
目次
参考ラーニングパス
GitHub のアカウントとプラン
アカウントの種類
種類 | できること |
---|
Personal | GitHub.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 Pro | GitHub Free(Personal) の上位
自分のリポジトリ内で高度なツールや分析情報を必要とするが、チームに属していない個人の開発者 (個人用アカウントを使用) 向けに設計
+
メールによる GitHub サポート
1 か月あたり 3,000 GitHub Actions 分
2 GB の GitHub Packages ストレージ
1 か月あたり 180 GitHub Codespaces コア時間
1 か月あたり 20 GB GitHub Codespaces ストレージ
プライベート リポジトリの高度なツールと分析情報:
必須のプル リクエスト レビュー担当者
複数のプル リクエスト レビュー担当者
保護されたブランチ
コード オーナー
参照の自動リンク
GitHub ページ
Wiki
パルス、コントリビュータ−、トラフィック、コミット、コード更新頻度、ネットワーク、フォークのリポジトリ分析情報グラフ |
GitHub Team | Organization 向けの 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 を使用できるユーザーを制御可能
|
---|
Enterprise | GitHub Enterprise Cloud を通じて組織で利用
組織向けのパーソナル化など |
---|
Codespaces
- VM が割り当てられてインターネット経由で VSCode が利用できる
- Codespaces の数に上限はないが、課金される
Projects
- プロジェクト管理のボードを作成できる
- テーブルビューやらボードビューやらロードマップビューやら
- 組み込みワークフローを使ってオートメーションが可能
Contribute
- リポジトリの パスにアクセスすれば、 のようなタグがついた初心者でも参加しやすいイシューを簡単に見つけることができる
InnerSource プログラム
- InnerSource プログラムは、アクセスが組織内のユーザーに限定される点を除いて、基本的にオープン ソース プログラムと同じもの
- 一般的に企業で導入されるような公開されないリポジトリのこと
リポジトリの可視性と権限
Publoc | すべての人に表示される |
---|
Internal | 所有している組織のメンバーだけに表示される |
---|
Private | 所有者と追加したチームまたは個人にのみ表示される |
---|
アクセス権限
Read | コードを書かない共同作成者にお勧め |
---|
Triage | 書き込みアクセスなしでイシューや pull request を積極的に管理する必要がある共同作成者にお勧め |
---|
Write | プロジェクトに積極的にプッシュする共同作成者にお勧め |
---|
Maintain | 機密または破壊的なアクションにアクセスすることなく、リポジトリを管理する必要があるプロジェクト マネージャーにお勧め |
---|
Admin | セキュリティの管理やリポジトリの削除など、機密および破壊的なアクションを含めて、プロジェクトへのフル アクセスが必要な方にお勧め |
---|
セキュリティ
SECURITY.md
GitHub Security Advisories
- プロジェクト内でプライベートにセキュリティの脆弱性を検討して修正することができる
.gitignore
- git 管理しないファイルを記述することで管理を除外できる
- 機密データを誤って push してしまった場合、ファイルを削除するだけではなく履歴も書き換える必要がある
ブランチ保護
- 保護されたブランチにマージされるすべての pull request に対して、承認レビューまたは状態チェックの合格を要求できたり
CODEOWNERS
- 個々のチーム メンバーまたはチーム全体を、コード所有者としてリポジトリ内のパスに割り当てることができる
- コード所有者は、自分が構成されているパス内のファイルに対する変更について、pull request をレビューする必要がある
自動化セキュリティ
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 tokens | GitHub API またはコマンド ラインを使用する場合に、GitHub に対する認証でパスワードの代わりに使用できる
|
---|
SSH キー | 個人用アクセス トークンを使用する代わりに、ユーザーは SSH キーを使用して SSH 経由でリモート サーバーおよびサービスに接続し、認証することができる |
---|
デプロイキー | 1 つのリポジトリへのアクセス権をユーザーに付与する、GitHub でのもう 1 つの種類の SSH キー |
---|
セキュリティオプション
2要素認証 | 多要素認証 (MFA) とも呼ばれる
ユーザーは自分のユーザー名とパスワードを使ってサインインし、本人だけがアクセスできる別の形式の認証を指定する |
---|
SAML SSO | ID プロバイダー (IdP) を使用してユーザーの ID とアプリケーションを一元的に管理している場合は、GitHub で組織のリソースを保護するために Security Assertion Markup Language (SAML) シングル サインオン (SSO) を構成できる
Enterprise が必要 |
---|
LDAP | 既存のアカウントに対して GitHub Enterprise Server を認証し、リポジトリへのアクセス権を一元的に管理できる
Enterprise が必要 |
---|
Team の権限レベル
メンバー | 権限を割り当てることで、特定のリポジトリへのアクセスをカスタマイズできる |
---|
メンテナ | チームの名前、説明、および表示を変更する
チームに親および子チームを変更するように要求する
チームのプロファイル画像を設定する
チーム ディスカッションを編集および削除する
チームに対して組織メンバーを追加または削除する
チーム メンテナ権限も持つようにチーム メンバーを昇格させる
リポジトリへのチームのアクセス権を削除する
チームのコード レビュー割り当てを管理する
pull request のスケジュールされたリマインダーを管理する |
---|