本当にあった怖ーい
お金の話

井上裕之(@ino_h)

自己紹介

SIer

閉じられた世界

コミュニティ活動

スタッフ参加

AWS知らない

勉強でAWSを
使ったお話

AWS以前
=> VPS

VPS何に使ってた

たまにしか使ってない

毎月課金

毎月課金
-> 無料

VPS -> Heroku

VPS -> Heroku

自作アプリ

スライド作成アプリ

 

画像必須

アップロード機能

問題発生

ファイルが勝手に消える

自作(VPS) -> PaaS(Heroku)

Heroku
-> Heroku + S3

S3

S3を使ったアップロード機能

Rails

paperclip
+ aws-sdk

paperclip + aws-sdk

has_attached_file :file,
  :storage => :s3,
  :s3_credentials => {
    :bucket => "bucket_name",  # フォルダ名
    :access_key_id => 'aaaaaaaaaa',  # アクセスキー
    :secret_access_key => 'bbbbbbbbbb',  # シークレットキー
    :s3_host_name => 'cccccccccc'  # リージョン
  }

paperclip + aws-sdk

has_attached_file :file,
  :storage => :s3,
  :s3_credentials => {
    :bucket => "bucket_name",  # フォルダ名
    :access_key_id => 'aaaaaaaaaa',  # アクセスキー
    :secret_access_key => 'bbbbbbbbbb',  # シークレットキー
    :s3_host_name => 'cccccccccc'  # リージョン
  }

GitHub

Public

paperclip + aws-sdk

has_attached_file :file,
  :storage => :s3,
  :s3_credentials => {
    :bucket => "bucket_name",
    :access_key_id => 'aaaaaaaaaa',
    :secret_access_key => 'bbbbbbbbbb',
    :s3_host_name => 'cccccccccc'
  }

環境変数に変更

paperclip + aws-sdk

has_attached_file :file,
  :storage => :s3,
  :s3_credentials => {
    :bucket => "bucket_name",
    :access_key_id => ENV['AWS_KEY'],
    :secret_access_key => ENV['AWS_SECRET'],
    :s3_host_name => ENV['AWS_HOST_NAME']
  }

heroku config

アップロード機能実装完了

約2ヶ月運用

2013年11月 請求額

 

2013年12月 請求額

 

ここからしばらく放置...

電話がかかってきた

「Hello」

「・・・」

電話オフ

数日後・・・

また電話がかかってきた

某クレジット会社

相手「50万円の請求があがっております」

相手「Amazonさんで買い物をされましたか?」

自分「していないです」

相手「では保険で対応いたします」

Amazon?

ネットショッピング?

「Hello」

ん?AWS?

慌てて請求書確認

2014年 1月 請求額

 

$ 4, 761. 53

¥ 500, 000

AWSサポートに電話

電話は日本語

相手「キーが外部に公開されて利用されています」

相手「確認のメールも送らせてもらっています」

あわててメールチェック

確かに来てた「全文英語メール」

メール内容抜粋

メール内容抜粋

クリック

GitHub

 

GitHub

 

crash.log

Nanoc

ホームページ

crash.log

(環境変数)
AWS_HOST_NAME => "s3-ap-northeast-1.amazonaws.com"
AWS_KEY => "XXXXXXXX"
AWS_SECRET => "XXXXXXXXXXX"

git push

 

キーで何をされたか

高額なインスタンス x 15個 x 約20日 起動
- $0.702 per G2 Double Extra Large (g2.2xlarge) Linux/UNIX instance-hour (or partial hour) x 10
- $0.650 per G2 Double Extra Large (g2.2xlarge) Linux/UNIX instance-hour (or partial hour) x 5

電話のその後

メール内容を翻訳してくれた

Your security is important to us. We recently became aware that your AWS Access Key (ending with 5VZA) along with your Secret Key are publicly available on github.com/XXXX/XXXX... .
(お客様のセキュリティは重要です。この度はお客様のアクセスキー(下4桁:5VZA)がシークレットキーと共に 「github.com/XXXX/XXXX...」上で、公開されていることに気づきましたのでご連絡しました。)

不正インスタンス削除

(メールでのやりとり)
私からお客様へ直接ご連絡をさせて頂き、削除方法をご案内させて頂きたいと存じます。

返金対応

(メールでのやりとり)
今回限りとはなりますが、返金をさせて頂くことが可能となりましたのでご連絡させて頂きました。

何がいけなかったのか

キーは大事に保管する

API権限

IAM

IAM設定誤り

 

Administrator Access

Provides full access to AWS services and resources.
(全リソースへのアクセス権限を与えます)

本当はS3使いたかっただけなのに、、、

Amazon S3 Full Access

まとめ

キー使用注意点

これでAWSも怖くない!

ご静聴ありがとうございました