Heroku Private Spaces でよりセキュアな環境へ
Heroku Enterpriseには「Heroku Private Spaces」という機能があります。この機能は、北米、ヨーロッパ以外のリージョンへHerokuアプリケーションを配置できたり、より高スペックなDynoを利用したり、ネットワークを隔離してアクセスの制限を行うことができます。東京のリージョンへ配置できますから、ネットワークのレイテンシを考慮するようなアプリケーションや、よりセキュアな環境が必要な場合に、この「Heroku Private Spaces」機能を利用します。
ここでは、主なセキュリティの機能について紹介します。
隔離されたネットワーク環境
Private Spacesを利用しないHerokuアプリケーションやデータベースは、インターネット上の誰からでもアクセスできます。「Heroku Private Spaces」で設定したスペース内にHerokuアプリケーションやデータベースを配置すると、外部とネットワークが隔離された状態になり、アクセスを遮断できます。スペース内へは、通常アクセスができない状態になり、Herokuアプリケーションだけが外部からアクセスできます。データベースや、その他スペース内へ配置されたサービスは、内部的なIPアドレスだけを利用して、スペース内だけしかアクセスできません。外部からのネットワークアクセスは完全に遮断されます。
もし、アマゾンウェブサービス(AWS)について詳しい方であれば、「Heroku Private Spaces」は「Amazon Virtual Private Cloud(VPC)」内に配置されていると説明したら分かりやすいでしょうか。
固定化されたアウトバウンドIPアドレス
Herokuアプリケーションは、IPアドレスが固定化されていません。したがって、日々アクセスする度に異なるIPアドレスでアプリケーションが稼働しています。「Heroku Private Spaces」では、スペース内のHerokuアプリケーションが外部へアクセスするときのアウトバウンドのIPアドレスを4つに限定しています。例えば、社内に配置されたサーバで、アクセス元をIPアドレスで制限しているようなシステムがあった場合には、このアウトバウンドIPアドレスを指定することで制御できます。
「Heroku Private Spaces」を使わない場合でも、Proximoアドオンで、アウトバウンドIPアドレスを固定化することもできます。
IPアドレスホワイトリストによるアクセス制御
外部からHerokuアプリケーションへのアクセスも、IPアドレスで制御できます。「Heroku Private Spaces」では、スペースごとにIPアドレスのホワイトリストを持っています。このホワイトリストにIPアドレスを指定すると、外部ネットワークからは、そのIPアドレスからしかアクセスできないように制御できます。
Heroku Shieldによる、更に強化されたセキュリティ
2017年4月10日に「Heroku Shield」という新たなセキュリティ機能が提供されました。「Heroku Private Spaces」を更にセキュリティを強化する機能が幾つか追加されましたので、こちらについても紹介します。
「Heroku Private Spaces」を利用しているユーザーであれば、お持ちのスペースごとに「Heroku Shield」オプションを切り替えられます。「Heroku Shield」では、主に次の4つの機能を提供します。
- 全てのイベント・セッションが記録されます
- ログをスペース内だけに出力することが可能です
- テンポラリファイルが全て暗号化されます
-
Heroku Postgresに“Shield”プランが追加
- TLS(暗号化接続)でのみ接続可能
- スペース内のみアクセス可能
- ホストスキャンや侵入検知の管理が可能
「Heroku Shield」オプションを設定すると、“heroku run”コマンドで実行された、全てのコマンドやキーストロークの内容が自動的に記録されます。また、Heroku自身が出力するログや、アプリケーションから出力される全てのログは、スペース内に保持できるようになり、データのみならずログも国内で保管しなければならないといったコンプライアンス・監査へ対処できるようになりました。
Dyno上では、一時的にファイルを作成することも可能ですが、この一時ファイルも含め、ファイルシステムすべてのファイルを暗号化することができるようになりました。これにより、一時的に保管されたファイルから、情報漏えいする危険性も軽減されます
「Heroku Shield」はスペース内のアプリケーションだけではなく、「Heroku Postgres」もよりセキュアに構成できるようになりました。スペース内に配置されたアプリケーションからしか接続できないように制限され、データベースへはTLSによる暗号化通信だけを接続させるようにできます。
おわりに
Heroku自体は安全に設計されたアーキテクチャではありますが、さまざまなユーザーのセキュリティ要件を満たすために、より強化するためのセキュリティオプションを多く準備しています。高度なコンプライアンスが求められる業界においても、開発者の創造性と変革を組み合わせることができれば、新しいサービスを迅速に生み出すチャンスとなります。Herokuは開発者が直面する障害を取り除いて、その範囲を広めて、より多くの開発者のための開発環境の向上を目指しています。