环境变量是Cloud Foundry运行时与应用程序就其环境进行通信的方式。它传达的最重要的信息之一是可用的服务以及如何与它们建立联系。
相同的page给出了包含连接参数的环境变量示例,例如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功能将此信息读入您的应用程序,但使用新的云命名空间(此处描述)将其解析为方便的Properties对象更容易使用此信息。
读到这里我想知道这个设置对应用程序安全性有什么影响。具体来说,开发人员应采取哪些措施防止恶意攻击者直接控制mysql数据库等后端服务?
编辑:除了攻击者获得后端服务控制权的风险之外,我还可以想象攻击者导致应用程序连接到恶意后端的风险。
答案 0 :(得分:3)
如果要连接到后端(数据库)服务,则必须以某种方式为应用程序提供凭据。为了能够动态绑定到服务,环境变量是将应用程序私有信息传递给应用程序的不错选择。
与任何应用程序妥协一样,当应用程序被黑客攻击时,后端会暴露出来。
您可以连接到恶意后端的唯一方法是,攻击者可以在Cloud Foundry基础架构上设置恶意服务,并且能够破坏云控制器以传递应用程序伪造的环境变量。