Bitbucket Server インスタンスにプッシュされた機密コンテンツや不要なコンテンツを削除する方法
目的
この記事の目的は、Bitbucket Server にホストされているリポジトリにプッシュされた機密情報やその他の不要な情報を削除するための手順を説明することです。
背景
SSH キーやパスワードなどの機密ファイルや行が git リポジトリにプッシュされた場合、このコンテンツを加えた後にチームがさらにコミットを追加した場合には、最新のコミットのコンテンツを削除するだけでは不十分です。この情報はこのリポジトリのコミット履歴に残るからです。
機密性の高いコミットがプッシュされたら時点で、このデータは漏洩したものとして扱うべきです。機密情報がすでに手動でコピーされている可能性があるため、パスワードや SSH キーはすぐに変更する必要があります。さらに、このコミットを含むクローンやフォークは、これらの手順の影響を受けません。
さらに、履歴の書き換えや強制プッシュは、Bitbucket Server で望ましくない結果や予期しない動作につながる可能性があるため、できる限りこの方法はお勧めしません。
ソリューション
この機密コンテンツをリポジトリのコミット履歴から削除するには、2つの方法があります。
- git コマンド
git filter-branch
- BFG Repo-Cleaner
どちらの方法でも、最終的にはリポジトリの履歴を書き直して、機密性の高いコミットがそもそもプッシュされなかったかのようになります。
BFG Repo-Cleaner はサードパーティーのユーティリティなため、アトラシアン サポート対象外です。このユーティリティの使用に起因する問題は、アトラシアンはサポートしません。