A couple of posts back I posed the question, "How do you secure big data environments?" I covered several avenues of attack against NoSQL environments that I considered low-hanging fruit from a security standpoint. To address those attacks, I offer the following recommendations to provide basic cluster security.
But before I make any recommendations to securing NoSQL, I have a couple of requirements for security solutions in big data environments. Many security vendors offer security products for big data, but these are the same products they offer for normal IT environments. Because these solutions were not architected for big data, they often impose limits on how they are deployed, how they scale, or limit big data cluster functionality in some way.
We don't want to be "Ha-Duped" into buying traditional security products that don't work with big data, so all of my recommendations must scale and must not limit the core capabilities of big data. Here is what I recommend:
The goal here is to validate nodes to ensure unwanted copies of data or unwanted queries are run to copy data. In traditional IT, this may seem far-fetched, but in cloud and virtual environments with thousands of nodes in a cluster, this is both easy and difficult to detect. Kerberos provides a means of authenticating nodes before they are allowed to participate on the cluster.
The goal is to keep communications private. Built-in Hadoop capabilities provide for secure client-to-Web application-layer communication, but not internode communication, nor M-R output before it is passed to the application. TLS provides a mechanism for secure communication between all nodes and services, and scales as nodes are added to the cluster.
File Layer Encryption
The idea is to protect the contents of the cluster from those who administer it. In the event an admin wants to inspect data files, either through a basic text editor or by taking a snapshot and examining the archive, encryption keeps data safe. File-layer encryption is transparent to the database, and scales up as new nodes are added to the cluster. Granted, the encryption keys must be kept secure for this feature to be effective.
As an extension of file-layer encryption, key management is critical to successful encryption deployment. All too often when we review cloud and virtual security systems, we find that administrators keep encryption keys stored unprotected on the disk. Encryption keys must be readily available when a cluster restarts; otherwise, data is inaccessible, and leaving keys in the open was the only way they knew how to ensure safe system restarts. Most central key management systems provide for key negotiation on restart, and still keep keys safe.
The goal here it to ensure that all nodes in the cluster are properly patched, properly configured, and run the correct (i.e., not hacked) copies of software. It's easy to miss things when you have thousands of nodes running, so automated node validation makes basic node security much easier. Scripts to install patches and set and test configuration settings are an easy way to verify no nodes enter the cluster without proper setup and security. This can also be linked into Kerberos authentication and external application validation (security as a service) offerings.
Big data is excellent at managing and mining large amounts of data. And most big data environments have logging capabilities baked-in. There is not need to reinvent the wheel: Use these features and the cluster storage model to log events. You can even create security-related M-R scripts to mine the data. There are several commercial and open-source add-ons with additional logging features to help. Note that during this series of posts that I have omitted discussing application security -- specifically, security of the applications that use big data and code vulnerabilities with JSON, Java, and Ruby. I could discuss these as well, given that the security of the big data APIs is of concern. The problems are independent of big data, relevant to any application, and need to be dealt with by application developers with or without a NoSQL database. The subject is beyond the scope of the database, but I raise the issue so that you keep in mind that there are entire classes of attacks that I've not discussed.
Also, note that these are the recommendations I feel comfortable making at this time. There are many different research papers being published on big data security, and I hope to see some innovation in this area within the coming years. And I am starting to see security products architected specifically for NoSQL environments.
Adrian Lane is an analyst/CTO with Securosis LLC, an independent security consulting practice. Special to Dark Reading. Adrian Lane is a Security Strategist and brings over 25 years of industry experience to the Securosis team, much of it at the executive level. Adrian specializes in database security, data security, and secure software development. With experience at Ingres, Oracle, and ... View Full Bio