Support Questions

Find answers, ask questions, and share your expertise

Masking timestamps

avatar
Rising Star

Is there a way of masking timestamps using the masking policies in Ranger? Perhaps through a custom UDF referenced in the policy?

The masking type of "Date: show only year" only works for dates, not timestamps.

Looking at GitHub (as the Ranger documentation isn't complete) timestamps cannot be masked, only nullified - https://github.com/myui/hive-udf-backports/tree/master/src/main/java/org/apache/hadoop/hive/ql/udf/g...

mask(value, upperChar, lowerChar, digitChar, otherChar, numberChar, dayValue, monthValue, yearValue)

Supported types: TINYINT, SMALLINT, INT, BIGINT, STRING, VARCHAR, CHAR, DATE

Reason: some systems store dates as timestamps, so date of birth (PII) could be stored as a timestamp and I need to mask it.

1 ACCEPTED SOLUTION

avatar
Rising Star

It's not elegant, but this custom masking seems to work.

cast(mask(cast(to_date({col}) as date), 'x', 'x', 'x', -1, '1', 1, 0, -1) as timestamp)

View solution in original post

1 REPLY 1

avatar
Rising Star

It's not elegant, but this custom masking seems to work.

cast(mask(cast(to_date({col}) as date), 'x', 'x', 'x', -1, '1', 1, 0, -1) as timestamp)