Microsoft this week published a best practices guide for writing applications to its Windows Azure cloud computing environment.
"We wrote this paper because no matter how many defenses we add to Windows Azure, it is important that people building software or hosting services in 'The Cloud' understand that they must also build software with security in mind from the start," blogged Michael Howard, principal security program manager of Microsof's Security Development Lifecycle team.
The best practices for developing secure cloud apps detailed in the paper encompass service layer and application security, the Azure platform's built-in protections, the network infrastructure, and hardening user privilege services.
Among the security services for Azure that address the sticky identity management problem surrounding the cloud are Windows Identity Foundation, Active Directory Federation Services 2.0, and Windows Azure AppFabric Access Control Service.
The paper is aimed at teaching developers how to mitigate the threats to the cloud, as well as "explaining some of the threats you may be susceptible to, such as port scanning, denial-of-service, and so on," Howard said in a video blog post.
At the service layer of the cloud framework, developers should map their regular, noncloud security requirements for apps to Windows Azure services. "Any remaining threats must be mitigated by the application or service," Microsoft's "Security Best Practices For Windows Azure Applications" paper says.
The paper also notes Azure platform services that provide authentication, authorization, and auditing, as well as the methods used to invoke them in apps, are much different than their counterpart tools in on-premise networks, such as Kerberos, Active Directory, and Windows Event Logs. Among the wide range of developer tips from Microsoft:
- Use a custom domain rather than *servicename*.cloudapp.net in order to separate the cloud from the enterprise space -- the cloudapp.net namespace is used by all Microsoft Azure customers.
- Isolate Web roles and separate duties of individual roles.
- Isolate privileged access by using a "gatekeeper" design pattern that provides a separation of duties.
- Use multiple storage keys.
One Azure subscription can have up to five storage keys. "This diversity can be used to minimize exposure of a particular key to theft by placing lower-trust keys on lower-trust roles and higher-trust keys on higher-trust roles," Microsoft said in its paper.