Securing Databases In The Cloud
Cloud services are comprised of pools of compute, network, information, and storage pools, so focus on securing the information rather than the database
I'm in the process of writing some training materials for the Cloud Security Alliance (CSA) certification exam. When coming up with recommendations that follow the CSA Security Guidance (PDF), you begin to realize that each of the different deployment models for "the cloud" change what you can do -- and what you need to do -- for security. Dramatically.
Depending on the model you select, some of the technologies we use today just don't work. Further, what's considered a database in the cloud commonly includes indexed flat files, horizontal, in memory, noSQL, and hybrid forms along with ubiquitous relational platforms, each with their own set of best practices. Finally, each cloud vendor provides slightly different security features, so you have to tweak your security model regardless.
More Security Insights
- 10 Steps to Cleaning up Active Directory
- The Active Directory Management and Security You've Always Dreamed of
- Innovations in Integration: Achieving Holistic Rapid Detection and Response
- COBOL in the Big Data Era: A Guide
Then it dawned on me. It would be a whole lot easier to recommend how to secure the data as opposed to the database and associated infrastructure. That is the goal, right? Keep your data safe?
During the next couple of weeks, my goal is to introduce an approach to securing structured data within different cloud deployments. I am calling it the Information Centric Security Life Cycle because it looks at how to protect data in use, in motion, and at rest. To frame the discussion I will need to outline the different cloud deployment models, namely platform-as-a-service (PaaS), infrastructure-as-a-service (IaaS), software-as-a-service (Saas), and public vs. private environments. Each model provides a different base set of security features out of the box, and requires you to fill in the gaps. That's really one of the biggest challenges with cloud security is determining what is available and then figuring out what you need to sufficiently protect data.
Most of you are familiar with SaaS, some of you hearing the term long before "the cloud" entered into your IT vocabulary. In essence, you rent software that is hosted on someone else's servers. Your store your data there, customize the Web interface to your liking, and have your employees use the Web portal to access the software as if it were your own.
Behind the scenes, all of the servers, routers, databases, and associated software are owned and operated by the service provider. What's more, you actually share that application with other customers in what is called a multitenant environment. The cost of these services goes down because you are sharing resources among many customers. The democratization of resources and elastic nature of the service does not get pushed in your face unless you look behind the curtain to see what's going on.
So what if you want to run different applications, or multiple applications, on the same model? When you peel back the layer of service, you get PaaS. PaaS is different from SaaS because you are responsible for the management of the software stack. You are being provided a platform, typically from the OS layer up, on top of which you install and manage your applications. You pay for each instance you create.
If we peel back one more layer off the stack, then we are left with raw infrastructure; processing power, disk storage, and Internet connectivity. When we subscribe at this level, we are buying IaaS. In this model we orchestrate the raw resources we need and install whatever operating systems, file systems, or network topologies we need.
The more abstract the service, the more security you are responsible for providing. When it comes down to it, cloud computing separates applications, information, and underlying infrastructure into logical pools of resources. But since we have abstracted computing resources into little bits, the security features available within traditional systems are usually neither present nor offered by your cloud provider. The pools of resources can be rapidly assigned, configured, and scaled as needed. The cloud is essentially a utility-like model for allocating computing resources; you use what you need and get charged for however much you use. The security model should follow the use model. It's for this reason -- because cloud services look at resources in a granular fashion -- that it makes sense to look at security at the component, or data, level.
Two additional distinctions need to be made to contrast different cloud models and the underlying deployment of the cloud resources. The first important distinction is that "virtualization" and "cloud" are not the same. Your cloud provider may or may not use virtualization technology. Virtual servers are talked about in the same breath as the cloud because they are a useful measurement of resources. It was Chris Hoff on the Rational Survivability blog who said it best: "Depending upon the type of Cloud, the de-facto atomic unit of the digital infrastructure is now the virtual machine ... virtualization is not required for Cloud Computing, but is an enabler."
The second distinction is public vs. private clouds. Given the gray areas around compliance objectives, and that separation of duties and data security in a multitenant environment don't meet compliance guidelines, we see cloud vendors and end users create "private clouds" where multitenancy and data co-mingling do not occur.
In my next blog post, I will outline some of the security issues with cloud environments and introduce the data centric security life cycle.
Adrian Lane is an analyst/CTO with Securosis LLC, an independent security consulting practice. Special to Dark Reading.