Hiding Data in DB2

In this article, we'll talk about fine-grained access control in DB2 - hiding data that is, in fact, present in the database, but should not be accessible to certain users.

Fine-grained access control is usually done in the database itself as the data is being accessed, but it can also be done between the database server and the database client using a programmable proxy.

Hiding Data in Cassandra

Sometimes you need to control access to the data in your databases in a very granular way - much more granular than most databases allow.

For instance, you might want some database users to be able to read only the last few digits of some credit card number, or you may need certain columns of certain rows to be readable by certain users only. Or maybe you need to hide some rows from some users under specific circumstances.

Data Masking: Static vs Dynamic

The problem of data masking comes up surprisingly often in the world of IT.  Any time you need to share some potentially sensitive data, you may need to hide, obfuscate, randomize, or otherwise dissimulate some of that data --  we'll call that the secret data.

In this article, we'll focus on the mechanics of data masking and gloss over a massive issue: data classification -- knowing who can access what data. Data classification is a whole different problem, especially in organizations with huge amounts of sensitive data. I'll refer you to a different article that touches on this topic. For the rest of this article, we'll assume that this problem has been solved and that we know who can access what data. The question is -- how do we hide the secret data?

Application Database Monitoring: The Middle Way

Sometimes you just need to know what a database client is doing in the database. You might be:

  • Debugging an application and trying to figure out if its database interactions are a problem.
  • Analyzing the performance of a serverless function to determine if some queries take too long.
  • Testing an application and making sure its database interactions are as expected.
  • Auditing a system to make sure it does not do anything funny in the database.
  • Reverse-engineering an application.
  • You get the picture, the list is endless.

What's the Database Doing Now?

Query Control Made Easy

Overview 

As we all know, data security is a never-ending battle. Every day, we hear of new data breaches. It's a hard problem, and there is no single solution, other than defense in depth.

Let's look at one of those defenses for databases: query control.

Row-Level Security: SQL Server vs Gallium Data

Introduction

In SQL Server 2016, Microsoft introduced the concept of row-level security, which gives you fine-grained control over who gets access to what data, potentially down to the level of individual rows. Normally, SQL security grants coarse access to a whole table or view (SQL Server can also do it for columns), and anything more granular than that requires the use of views or stored procedures.

There is another way to do row-level security without changing the database clients, and that's with Gallium Data - a free database proxy that can change the network traffic between your database clients and your database servers.

What Is a Smart Database Proxy?

Smart database proxies may not be familiar to many people, and it's a shame because they can solve many difficult problems elegantly. This article explains what they are, what they do, and when they are useful.

A Quick Comparison

Let me start with a seemingly unrelated topic: web pages. Bear with me, it will all come together in a minute.