Class DataMaskingDriver

All Implemented Interfaces:
Driver

@DriverCapability(prefix="mask", description="Masks sensitive data in query results", capabilities={"masking","security"}) @DriverParameter(name="columns",type=STRING,description="Semicolon-separated column name patterns (regex) to mask") @DriverParameter(name="strategy",type=STRING,description="Masking strategy",defaultValue="PARTIAL",enumValues={"FULL","PARTIAL","EMAIL","REDACT","HASH"}) @DriverParameter(name="mask",type=STRING,description="Mask character",defaultValue="*") @DriverParameter(name="showFirst",type=INTEGER,description="Characters to show at start for PARTIAL",defaultValue="0",min=0L) @DriverParameter(name="showLast",type=INTEGER,description="Characters to show at end for PARTIAL",defaultValue="4",min=0L) public class DataMaskingDriver extends AbstractProxyDriver
DataMaskingDriver masks sensitive data in query results on-the-fly.

URL format: jdbc:mask[param=value,...]:jdbc:target:...

Masking Strategies:

  • FULL - Replace entire value with mask characters (e.g., "********")
  • PARTIAL - Show first/last N characters (e.g., "****1234")
  • EMAIL - Mask email preserving first char and domain (e.g., "j***@example.com")
  • REDACT - Replace with "[REDACTED]"
  • HASH - Replace with hash prefix (e.g., "a1b2c3d4...")

Example URLs:

 jdbc:mask[columns=ssn;credit_card]:jdbc:postgresql://localhost/mydb
 jdbc:mask[columns=.*email.*,strategy=EMAIL]:jdbc:postgresql://localhost/mydb
 jdbc:mask[columns=password;secret,strategy=REDACT]:jdbc:postgresql://localhost/mydb
 jdbc:mask[columns=card_number,showLast=4,showFirst=0]:jdbc:mysql://localhost/db