How to Use the Cloud for Development, Safely

When CloudFoundry was announced, my first thought was this is a nightmare waiting to happen. Why do I think this?Because I was not thinking about Open Source developers but enterprise developers and the biggest issue with enterprise development is that the data used by developers is either made up data, but more often than not is actual production data. So the question becomes how can such data be protected when using PaaS public clouds?
Yet, this issue went away for me with the Micro Cloud Foundry since it can be used within the bastions of my well protected enterprise. However, how to protect data within a public PaaS is still an issue as the Micro CloudFoundry would eventually connect back to CloudFoundry depending on use case. If the data also is placed within the public cloud, the issue is possible data leakage unless it is also protected in some way. Perhaps by using other cloud services.
Given that we are using PaaS, access to the lower levels to implement other aspects of security outside the application would be difficult at best unless the PaaS provider implemented them for you. So protection of the data is squarely within the hands of the developer. Which means what?

  • The virtual environment upon which the PaaS is implemented must be proven to be secure
  • The operating system upon which the PaaS is implemented must be proven to be secure
  • The Platform for the PaaS must be proven to be secure
  • The Developer must write secure code
  • The Data must be protected

The data can be protected a few ways:

  • Encrypt the data using a well known encryption scheme like AES
  • Access the data over an encrypted channel such as over a VPN or some other secure channel
  • Use a Secure Data store or cloud service for all data.

Since CloudFoundry, Azure, and other PaaS solutions are here to stay, and the data will be used regardless, it is recommended that such data is encrypted in some form. As long as any such service can be accessed from within the code written by the developers. Methods for this include the PaaS provider providing encrypted data stores for each tenant for data at rest and encrypting overlay networks for data in flight, build VPN access into the application for accessing data from within the Enterprise, or access to other cloud services that could provide the necessary encryption of data in motion and at rest.
Any of these possibilities, and perhaps all of them, would enhance any public PaaS solution to ensure the data is protected.  The best possible solution would be to have these possibilities to become part of the PaaS solution itself with simple function calls.
When placing enterprise development within the cloud, data still must be protected by

  • providing secure coding training to developers
  • access the risk of any data to be placed within the cloud.
  • understand how the existing security measures within the PaaS environment

PaaS clouds such as Azure, Cloudera,  CloudFoundry, Google Apps, and VMforce have these issues as well as public IaaS infrastructures such as Amazon, Eucalyptus, etc.
Development is not just an issue of writing code, but also includes good data hygiene and usage by the developers. How do your developers handle data today?