#出来事
先日誤って、AWSのアクセスキーをGithubにあげてしまいました。調べていくうちに、これはとんでもないことをしてしまったと思い、急いで対処しようとしましたが、焦りもあって何もできず。何かプロのエンジニアに電話か何かで対応してもらえるアプリはないか探していたところ、「ココナラ」というアプリを発見。急ぎ、エンジニアに対応してもらいました。
##AWSアクセスキーをGitHubにあげてしまった時の対処方法
AWSアクセスキーを含むコミットを削除し、AWSアクセスキーを保存した履歴を削除することが適切な対処方法です。具体的には、Git rebase機能、又はGit commitのamendオプションを利用することで履歴を削除することが可能です。
##◆まず初めにやること
AWSを無効化する。
AWSアクセスキーを無効化した場合は、セキュリティ上の問題は発生しませんのでご安心ください。AWSアクセスキー(恐らくIAM userのAccess KeyとAccess Secret Key)は、無効にしたりSecretを更新することで既存Credentialは使用不可となるためです。ですので、原理上アクセスキーをコードから削除したり履歴上から抹消しなくても、攻撃が発生することはありません。
…ただし、やはりCredentialがコード履歴に残っていることは印象が悪いため、削除したほうが良いですよね、、、
##◆どのように防ぐか
「ブランチ戦略」です。
ブランチの位置づけとして「main」はテスト・コードレビューが完了したコード、「その他(devなど)」は消えたりrebaseされたりする可能性のあるコードとして分けておきます。そうすることで、ミスしたPushでもリカバーできる簡易性を担保させることができます。
この手法は開発メンバーが増えていけばいくほど有効になってきます。
(勝手にコミットを結合したり消したりするのはマズイので…)
##◆rebaseとamendの使い分け
amendは、直前のコミットを修正することが可能でして、この方法を用いるのが一番簡単です。
ただし、この方法は「直前のコミットを修正したい」場合にのみ有効です。rebaseは、修正したいコミットをどこでも修正することが可能です。ただし、rebaseコマンド自体が様々な機能を持っているので、コマンドの使いやすさでは劣ります。
##◆amendで修正する手順
以下の手順で修正が可能となります。
1. ローカル環境のソースコードを修正
2. コマンド "git add ." を実行
3. コマンド "git commit --amend" を実行
4. 直前のコミットのコミットメッセージがエディタで表示されます
5. 必要に応じてコメントを修正し保存
6. git pushコマンドを再実行(既にPushしたコミットを上書きするため、-fオプションが必要)