環境変数は、CloudFoundryランタイムがその環境についてアプリケーションと通信するための手段です。それが伝達する最も重要な情報の1つは、利用可能なサービスとそれらとの接続方法です。
同じページに、MySQLデータベースのユーザー名パスワードなどの接続パラメーターを含む環境変数のサンプルが示されています。
VCAP_SERVICES: {
"mongodb-1.8":[{"name":"hello-mongo","label":"mongodb-1.8","plan":"free","credentials":{"hostname":"172.30.48.64","port":25003,"username":"e4f2c402-1153-4dfb-8d98-2f6efc65e441","password":"f17f81e4-9855-4b9c-a22b-e6a9e6f113c3","name":"mongodb-5751dac0-3b5e-405b-a1e1-2b384fe4026d","db":"db"}}],
"redis-2.2":[{"name":"hello-redis","label":"redis-2.2","plan":"free","credentials":{"node_id":"redis_node_4","hostname":"172.30.48.43","port":5002,"password":"e1d7acb0-2baf-42be-84bc-3365aa819586","name":"redis-96836b7c-0949-45fd-a741-c7be5951d52f"}}],
"mysql-5.1":[{"name":"hello-mysql","label":"mysql-5.1","plan":"free","credentials":{"node_id":"mysql_node_5","hostname":"172.30.48.24","port":3306,"password":"pw4EKJqL6na6f","name":"dd9b58515e3cb41958a30bf2af88126fc","user":"uLfJbOmxfSEUt"}}]
}
このページにはさらに次のように記載されています。
この情報は、Javaの環境変数APIや既存のSpring XML機能を使用してアプリケーションに読み込むことができますが、便利なプロパティオブジェクトに解析する新しいクラウド名前空間(ここで説明)を使用すると、この情報を簡単に利用できます。
これを読んで、この設定がアプリケーションのセキュリティにどのような影響を与えるのか疑問に思いました。具体的には、悪意のある攻撃者がmysqlデータベースなどのバックエンドサービスを直接制御できないようにするために、開発者はどのような対策を講じる必要がありますか?
編集:攻撃者がバックエンドサービスの制御を取得するリスクとは別に、攻撃者がアプリケーションを悪意のあるバックエンドに接続させるリスクも想像できます。