How do I remove sensitive/unwanted content that was pushed to my Bitbucket Data Center instance?
目的
The purpose of this article is to describe the steps that can be taken to remove sensitive or otherwise unwanted information that has been pushed to a repository hosted in Bitbucket Data Center.
背景
SSH キーやパスワードなどの機密ファイルや行が git リポジトリにプッシュされた場合、このコンテンツを加えた後にチームがさらにコミットを追加した場合には、最新のコミットのコンテンツを削除するだけでは不十分です。この情報はこのリポジトリのコミット履歴に残るからです。
機密性の高いコミットがプッシュされたら時点で、このデータは漏洩したものとして扱うべきです。機密情報がすでに手動でコピーされている可能性があるため、パスワードや SSH キーはすぐに変更する必要があります。さらに、このコミットを含むクローンやフォークは、これらの手順の影響を受けません。
What's more, rewriting history and force pushes can lead to undesirable results and unexpected behaviours in Bitbucket Data Center, which is why we generally discourage this practice if you can avoid it at all.
ソリューション
この機密コンテンツをリポジトリのコミット履歴から削除するには、2つの方法があります。
- git コマンド
git filter-branch
- BFG Repo-Cleaner
どちらの方法でも、最終的にはリポジトリの履歴を書き直して、機密性の高いコミットがそもそもプッシュされなかったかのようになります。
BFG Repo-Cleaner はサードパーティーのユーティリティなため、アトラシアン サポート対象外です。このユーティリティの使用に起因する問題は、アトラシアンはサポートしません。