In the last few years, cloud computing has evolved from a buzzword to a critical infrastructure component of many enterprise and consumer services. The cloud provides virtually limitless compute, storage and network resources at low cost, allowing services to scale on demand. The cloud absolves organizations from managing IT infrastructure, and allows them to focus on their core competencies.

However, the benefits of cloud computing do not come for free; building and running applications for the cloud comes with significant challenges. Arguably the most significant challenge is security. By their very nature, applications deployed on a public cloud expose a larger attack surface when compared to their inhouse counterparts. Applications on the cloud are hosted in a multitenant environment, where they share physical resources such as memory, disk, network and CPU. This model, which is key to cloud providers achieving benefits of scale, enables a variety of attacks from co-located malicious applications. Another security threat are is the cloud operator, who can both observe and tamper with an application’s execution. These limitations have precluded the migration of security sensitive applications to public cloud platforms, forcing organizations to consider more expensive and less scalable alternatives such as the private cloud.