Rails
AWS
S3

【大反省】素人がAWSS3をいじっていると「Your AWS Account is compromised!」とメールが来た

Railsでポートフォリオを作成しておりまして、Herokuへのデプロイ後の画像保存先をAWSS3に指定しました。

すると後日AWS様からメールで「Your AWS Account is compromised!」とご連絡頂き、結果的にバケットとIAMを削除して作り直したのですが、そもそもなぜそんなことになったのかを反省しつつ書いておきます。


原因:AccessKeyをベタ書きしてcommitしてしまっていた

AWSS3を使う場合Active Storageを使って、保存先をconfig/storage.ymlで以下のように書くかと思います。


storage.yml

amazon:

service:
S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%=
Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: ap-northeast-1 #東京
bucket: #bucketname

ただ僕は以前の記事でも書いた通り、#string does not have #dig methodというエラー解決に苦しみ、結果的にaccess_key_idsecret_access_keyをベタ書きしてした状態でgit commitして全世界に僕のアクセスキーを大公開してしまっていたわけです。

まあ、僕のリポジトリのコードなど詳しく見る人はいないだろうという甘い想定でしたが、実際はBotによって攻撃される危険性などがあるそうで、その辺りの想定が甘すぎました、、、

とりあえずポートフォリオとして完成させることを急ぐあまり、セキュリティの意識が大幅に欠落していて、まだ個人でポートフォリオを実装している段階なのでマシですが、これが実際の業務だったら死んでいたな、、、と猛省しました


対処法


  • AWS ルートアカウントのユーザーパスワードを変更する。

  • すべてのルートおよび AWS Identity and Access Management (IAM) アクセスキーを削除するか、交換する。

  • 危険にさらされている IAM ユーザーを削除し、他のすべての IAM ユーザーのパスワードを変更する。

  • EC2 インスタンスおよび AMI、EBS ボリュームおよびスナップショット、および IAM ユーザーなどの作成していないアカウントのリソースを削除する。

  • AWS サポートから受け取った通知には、AWS サポートセンター経由で返信してください。

参照元:自分の AWS アカウントが危険にさらされているようです

上記を実行した上で、再度バケット、IAMを作り直して実装し直しました。

以上、大反省の記録でした。