#記事を書いた動機
誤ってawsのアクセスキーとシークレットキーをgithubに挙げてしまった際、とても肝を冷やしたため。
自分はおそらく運が良かった&awsの対応が手厚かったために被害自体はなかったのですが、他の事例を見ると何百万という請求が発生し得る、とんでもないミスなので多くの人が知って一人でもこういうミスをしないことと、自分のミスの戒めのためです。
#なぜ高額請求が発生するか
①awsのアクセスキーとシークレットキーをgithubに挙げてしまう
②クローラー等で、githubに挙げられているawsのキーが検知されてしまう
③勝手にキーを使われてマイニング等のためにEC2を限度いっぱいまで使われるといった流れです。
#今回助かった原因
僕が何かをした、ということではなくaws側が手厚く対策をしてくれていたからです。
githubにawsのアクセスキーとシークレットキーを挙げると、悪意のある人だけでなくawsも検知をしているみたいで、
事故が発生してから僕の場合は一時間前後でメールが届きました。
#事前にこういった事故を防ぐためにしておきたいこと
##①そもそもawsのアクセスキーとシークレットキーをどこかに書くといったことをしない
その代わりにIAMRoleを使いましょう。
localで使う時は.envに書いて、終わったら消せばいいです。
##②githubのcommit時にアクセスキーやシークレットキーを検知するようにする
git-secretsというものを使います。
詳しい使い方は
クラウド破産しないように git-secrets を使う
Windowsにgit-secretsをインストール
を参考にすればよいでしょう。
これで①で.envやほかの場所に書きっぱなしでも検知してくれます。
##③DBのパスワードとかIAMRoleでなんとかならない場合は?
awsのParameterStoreやSecretManagerを使いましょう。
①、②、③で共通することは、公開する場所にはapiKey等の大事な情報は書かないようにしようということです。
当たり前のことかもしれませんが、僕は全くといっていいほど気にも留めずgithubに挙げてしまっていました。
というのも、ローカル環境で実験しているネットの記事を元にそのままアクセスキーとシークレットキーを書いたまま、何も考えずにgithubに挙げるという考えなしの行為が原因でした。
#もしやってしまった場合は
①rootUserのパスワードを変更する
②流出してしまったIAMUSERを削除
③全リージョンのEC2、EBS、セキュリティグループに不審な制作物が確認
をしましょう。
実際対応されていた体験談としてはこちらが参考になります。
初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。
AWSが不正利用され300万円の請求が届いてから免除までの一部始終
AWSで不正利用され80000ドルの請求が来た話
#おわりに
今回の事故の原因はそもそもアクセスキーとシークレットキーを何の疑問も持たずgithubに挙げてしまったことに起因するので、
IAMRoleを使うことを念頭に置いて、予防策としてgit-secretsを使えば自分から流出させてしまうような事故は防げるのではないかなと思います。
少しでも同じようなミスをして悲しいことになってしまう人が減ってくれることを祈ります...