Back to results for “Security”
SQL Server › Dynamic Data Masking

How does dynamic data masking behave differently when a masked column is used in a JOIN, WHERE clause, or exported through an application, compared to a simple SELECT query?

Advanced

Answer

Dynamic data masking only affects the data returned in the actual result set displayed to an unauthorized user, meaning the real underlying values are still used internally for operations like joins and filtering, which is important to understand since masking does not prevent the real data from influencing query logic, only from being visually displayed.
-- The real email value is used for the join and filter,
-- but the displayed result will still be masked
SELECT c.Name, c.Email
FROM Customers c
JOIN Orders o ON c.CustomerId = o.CustomerId
WHERE c.Email = 'realvalue@example.com';
Real-world example A developer is surprised to find a WHERE clause filtering on a masked email column still works correctly using the real value, learning that masking only affects what is displayed, not the underlying query logic.

Common follow-ups: Does this behavior create any additional security considerations to be aware of?;How should applications be designed knowing that masking only affects displayed results?