はじめに
初めまして、気づけば年度末ですね。新年度よりエンジニアとして就職する@koyama9876です。これは私が昨年の秋からにかけてやらかしてしまったことに対する記事です。
これが皆様のAWSを利用するにあたっての注意すべき点ぐらいに思ってもらえると幸いです。
事の発端
事の発端については私が学校の卒業研究で画像認識を活用したWEBサービスを開発するためにAWSに登録しRekognitionを使用していました。 その際にプロジェクトの管理をGitHubで行っていたのですが私の手違いでAWSのアクセスキーとシークレットアクセスキーの双方をpublic公開したうえでリポジトリにpushしてしまったことから始まります。 その際に関連付けされていたAWSの子アカウントにはEC2の全権限を割り振っていたのですが手違いでpushしてしまった各種アクセスキーを不正に利用されてしまったのが今回の直接の原因になります。発覚
まずAWSに登録していた携帯の番号に国際電話がかかっており留守番電話がかかっていましたが気づかずスルー その後AWSの請求ページを見た際に明らかに異常な金額が表示されており発覚 詳しく確認してみるとEC2の全リージョンで限界までインスタンスが構築・稼働されていました。 時期的にも仮想通貨のマイニングにしようされたのかなぁと思いつつも即座にサポートに不正使用されていた旨を連絡。 サポートに指示されたようにEC2の全インスタンスを削除・GitHubのリポジトリは削除し、子アカウントのアクセスキーを殺す等考えられる対処を行った後に「不正利用分を免責してもらえないでしょうか」という旨をサポートに送信しました。その後
ベーシックプランだったため1か月ほどたった後サポートから免責できたという旨の連絡を受けどうにかかいけつすることができました。 「免責できなかったら80000ドルなんて払えないからどうしよう」と内心死にたくなってたぐらいだったのでどうにか解決できてよかったです。最後に
今回の一件で開発スケジュールを大幅に狂わせてしまったチームの皆さん大変申し訳ございません。 またAWSのサポートの方々には足を向けて寝れないほど感謝しています。 本当にAWSサポートの方々ありがとうございました。私自身は新年度からエンジニアとして就職しますがGitHubとAWSの利用には細心の注意をもって開発していきたいです。
またこの記事を閲覧している皆様は私のような愚行を行わないように少しでも気を付けてもらえると幸いです。
ではまた別の記事で。
追記
この一件が発覚した後の対策・子ユーザーに割り振るポリシーを最低限の物にする
・ソースファイルに各種キーをベタ書きせず別ファイルに分離する
・各種キーが書かれたファイルは.gitignoreでpushされないように隔離する
・そもそも公開する気がないリポジトリは非公開にする
一番手っ取り早いのは4つ目ですがGitHubでは非公開リポジトリは有料アカウントでないとできないので基本的には3つ目までのことを徹底すれば各種キーが流出することはないと思います。
もし何らかのミスで流出してしまった場合はGitHubやAWSのサポートから流出してるという旨の警告が来るはずなので警告が来た場合は早い段階で対応を行うことでこの一件のような不正利用を防ぐことができると思います。