フォークに実際に起こること
リポジトリの公開範囲設定が制御するのは元のリポジトリであり、他の人がすでにフォークしたコピーではありません。公開範囲を変更しても、それらのフォークには影響が及びません。
公開GitHubリポジトリを非公開にすると、既存の公開フォークは新しいネットワークに切り離され、公開のまま残ります。出典
つまり、自分のリポジトリが非公開になった後も、公開フォークはコード、コミット履歴、作者の詳細を表示し続ける可能性があります。非公開化は自分のリポジトリの露出を変える措置であり、公開コピーの回収ではないと捉えてください。
公開範囲の変更がすること・しないこと
| 操作 | 影響する範囲 | しないこと |
|---|---|---|
| リポジトリを非公開に切り替える | Settingsにおける元リポジトリの公開範囲(権限に従う) | 既存の公開フォークや他の場所のコピーを削除する |
| フォークの公開範囲を変更する | そのフォークのみ | 他のフォークやミラーが消えることを保証する |
| リポジトリ内のファイルを編集・削除する | リポジトリの現在の内容 | フォークですでに公開された履歴を消去する |
リポジトリの公開範囲はリポジトリのSettingsで変更でき、アカウントまたは組織の権限に従います。出典
非公開化は削除ツールでも、作者情報を消すものでも、認証情報をローテーションするものでもありません。シークレットがコミットされていた場合、公開範囲を変えても安全にはなりません。該当するサービスを通じてローテーションしてください。
変更前のセルフレビューチェックリスト
- 公開フォークを一覧にする。 リポジトリのフォーク一覧を開き、どのフォークが公開で、誰が所有しているかを確認します。
- 公開リンクを確認する。 自分のサイト、ドキュメント、パッケージのメタデータに、リポジトリやそのrawファイルへのリンクがないか検索します。
- コミットの身元を確認する。 コミットの作者名やメールアドレスが、公開されていても問題ない情報かどうかを確認します。
- 他のコピーを確認する。 GitHubのフォークネットワーク外にあるミラー、ベンダーコピー、アーカイブされたスナップショットを探します。
- フォークごとに判断する。 自分が管理するフォークは公開範囲を個別に確認し、管理していないフォークは公開のまま残ると想定します。
- 露出したシークレットをローテーションする。 認証情報がコミットに現れていた場合は、公開範囲の変更に頼らずローテーションします。
公開範囲を切り替える前に決めること
| 状況 | 妥当な対応 |
|---|---|
| 公開フォークが存在し、機密コードを含む | 可能な範囲でフォーク所有者に連絡する。公開コピーは残ると想定する |
| 自分がフォークを所有している | 各フォークの公開範囲を個別に確認する |
| シークレットがコミットされていた | まず認証情報をローテーションする |
| 自分のリポジトリだけが露出している | Settingsでの公開範囲変更で足りる場合がある(権限に従う) |
ユーザー名の露出が関わる場所
リポジトリは数ある公開面のひとつにすぎません。GitHubのハンドルやコミットの身元は他のサイトにも現れることがあり、ユーザー名検索は手がかりであって所有の証明ではありません。TraceSeekは3,000+のプラットフォームをチェックし、初回スキャンは無料です。スキャン時間は20–30 secondsとされています。プラットフォームの設定を変更したり、非公開情報を見たり、身元を検証したりはしません。古いアカウントをより広く洗い出すには忘れられたオンラインアカウントを見つけるを、証拠の扱いについては方法論をご覧ください。
重要な事実
- 公開GitHubリポジトリを非公開にすると、既存の公開フォークは新しいネットワークに切り離され、公開のまま残ります。
- リポジトリの公開範囲はリポジトリのSettingsで変更でき、アカウントまたは組織の権限に従います。
- リポジトリを非公開にしても、公開フォークは削除されず、作者情報も消えず、露出した認証情報もローテーションされません。
- TraceSeekは3,000+のプラットフォームをカバーし、初回スキャンは無料です。