SlideShare a Scribd company logo
「へろくしー」の挫折


        Heroku-ja Meetup #1
              2011年7月7日
  @yebihara | 海老原 雄一郎
@yebiharaについて
• キャリア
  定職に就かず職を転々
  日本オラクル
  → ソニー
  → IPLocks
  → Preferred Infrastructure (Railsでサービスをいくつか開発)
  → SaaS/PaaS系の某ドットコム企業 (Heroku勉強中)

• 好きなもの
 – 巨人
 – ビール
 – SQL
    • 「NoSQL入門」
    http://www.slideshare.net/pfi/introductiontoonlysql
最近困ったこと
• 某SaaSアプリケーションの標準APIから取得できるユー
  ザー情報には、プライバシー情報が含まれる。
• 企業内ユースがメインなので通常は問題ないが、今
  回だけは隠したかった。

                                                            User
                                                      *id



                                   !                  *email




                                             標準 API
                                                      *name
           {                                           title
               id: 90053,                              address
               email: “yebihara@bou.com”,              phoneNumber
  モバイル端末       name: “海老原 雄一郎”,                        ...
               title: “データベーススペシャリスト”,
               address: “東京都品川区・・・”,
               phoneNumber: “090xxxxxxxx”,
               ...
           }
                                             某SaaSアプリケーション
最初の解決案
• カスタムAPIを作る。
• けど、標準APIがそのままだと意味ない。




                                            カスタムAPI
                                                            User
          {
                                                      *id
              id: 90053,
              name: “海老原 雄一郎”,                        *email
              title: “データベーススペシャリスト”,                 *name
 モバイル端末   }                                            title




                                     !
                                                       address




                                            標準API
                                                       phoneNumber
          {                                            ...
              id: 90053,
  攻撃者         email: “yebihara@bou.com”,
              name: “海老原 雄一郎”,
              title: “データベーススペシャリスト”,
              address: “東京都品川区・・・”,
              phoneNumber: “090xxxxxxxx”,
              ...                           某SaaSアプリケーション
          }
リバースプロクシー案
• 某SaaSアプリケーションは、アクセス可能なソースIPア
  ドレス範囲を制限する機能を持っている。
• 前段にリバースプロクシーを置いて、標準APIへのアク
  セスをブロックすればいい!




                                カスタムAPI
                                                User




                Reverse Proxy
                                          *id
                                          *email
                                          *name
  モバイル端末                                   title
                                           address




                                標準API
                                           phoneNumber
                                           ...

   攻撃者




                                某SaaSアプリケーション
どうやって実装しようか
• PaaS屋さんにとって大切なこと。
• サーバーの構築や運用などしたくない!
 – たとえAmazon EC2だとしてもイヤ
 – アプリケーションサーバーより上のレイヤーしか
   見たくない


• Herokuでリバースプロクシーを作ろう!
Herokuについておさらい
(誤)HerokuはRuby on RailsのためのPaaSである。

(正)HerokuはRackアプリケーションのための
   PaaSである。

  つまり、リバースプロクシーをRackアプリ
  ケーションとして構築すれば、Herokuの上で
  動かせる!
最初にしたこと
まずは名前決め
 よい名前があれば中身は後からついてくる!

Herokuで動くリバースプロクシー

「へろくしー」 !!
次にしたこと
開発。

・・・ではなく、Gemを探す。

首尾よく見つかる!
rack-reverse-proxy
https://github.com/jaswope/rack-reverse-proxy

プロトタイプの構築はあっさり完了!
・・・というか、へろくしーオリジナルな部分はほとん
どなし。
最後にしたこと
後は某SaaSアプリケーションにへろくしー経由でしかアクセス
できないようIPアドレスを登録するだけ!

へろくしーのIPアドレスを調べるか!

おや? 再起動するたびにIPアドレスが変わるぞ・・・

Heroku FAQ: Does my app have a static IP?
   http://devcenter.heroku.com/articles/does-my-app-have-a-static-ip

私のアプリは静的IPアドレスを持てますか?

                            No!
終了
まとめ
• HerokuはRailsじゃなくても、Rackだったらなん
  でもホストできます。

• いい名前を思い付いただけで、うまくいくとい
  うわけではないようです。

More Related Content

へろくしーの挫折