hive 时间转字符串_07697.0.3如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏...
本篇文章主要介紹如何在CDP DC7.0.3集群中使用Ranger在Hive中進(jìn)行行過濾及列脫敏,行級別的過濾相當(dāng)于一個強(qiáng)制性的where子句,例如在訂單表中,員工僅被允許查看自己所在地區(qū)的訂單,其他區(qū)域的無法查看。列脫敏可以對某些敏感信息的列進(jìn)行數(shù)據(jù)屏蔽,例如身份證號可以屏蔽中間的八位。
測試環(huán)境
1.操作系統(tǒng)Redhat7.6
2.CDP DC7.0.3
3.集群已啟用Kerberos
4.使用root用戶操作
使用Ranger配置Hive中的行過濾2.1 對表配置單個行過濾條件
在配置Hive中的行過濾前,需要確保授權(quán)的用戶/用戶組已有對要過濾的表的訪問權(quán)限,即在授權(quán)給ranger_user1用戶對表t1的行過濾策略前,ranger_user1需要對t1有訪問權(quán)限。
1.配置ranger_user1對表t1的訪問策略
配置完成后保存
2.使用ranger_user1查詢t1表
用戶ranger_test1對表t1有select權(quán)限,一共查詢出7條記錄
3.配置行過濾策略
配置完成后保存
4.使用用戶ranger_test1再次訪問t1表
可以看到,此時name=Tom的那條數(shù)據(jù)已經(jīng)被過濾,查詢結(jié)果只有6條數(shù)據(jù)。
2.2 對表配置多個行過濾條件
針對同一個表中可以配置多個行過濾條件,例如每個租戶只能看到自己的數(shù)據(jù)行,下面測試對同一個表配置多個行過濾條件。
1.在所有節(jié)點(diǎn)創(chuàng)建一個新的測試用戶ranger_user2,并創(chuàng)建Kerberos用戶
2.修改訪問表t1的策略,以及行過濾策略
·訪問策略修改,加入ranger_user2
·行過濾策略修改,加入對ranger_user2的過濾條件
3.使用ranger_user2查詢t1表
可以看到ranger_user2無法查看到name=Eric的這一條數(shù)據(jù)
4.再次使用ranger_user1查詢t1表
可以看到ranger_user1仍然無法查看到name=Tom的這一條數(shù)據(jù)
由此可見,針對同一個表配置的多個行過濾條件均生效。
使用Ranger配置Hive中的列脫敏Ranger的列屏蔽功能可以近乎實(shí)時地保護(hù)Hive中的敏感數(shù)據(jù),可以通過設(shè)置策略,動態(tài)屏蔽或匿名化敏感的數(shù)據(jù)列,例如可以屏蔽一列的前四個或后四個字符,也可以將整列數(shù)據(jù)都屏蔽,下面會演示屏蔽的各種規(guī)則。
準(zhǔn)備一張測試表,數(shù)據(jù)如下:
3.1 Redact
該方式是將所有字母用x代替,所有的數(shù)字字符用n代替。
1.新建列脫敏策略,使用password列進(jìn)行測試
點(diǎn)擊Add添加策略
2.使用ranger_user1進(jìn)行測試,需要注意的是列脫敏的策略也是基于該用戶能夠訪問t1表的前提才能生效。
可以看到,除了一行數(shù)據(jù)中的特殊字符外,其余的數(shù)字和字母都進(jìn)行了相應(yīng)的替換
3.2 Partial mask: show last 4
該方式是僅顯示最后四個字符
1.修改策略,使用phone數(shù)據(jù)列進(jìn)行測試
修改完成后保存策略
2.查詢t1表進(jìn)行測試
由上圖可見,手機(jī)號這一列只顯示了最后四個字符
3.3 Partial mask: show first 4?
該方式是僅顯示最前面四個字符
1.修改策略,使用phone列進(jìn)行測試
2.查詢t1表進(jìn)行測試
3.4 Hash
將所有字符替換為整個單元格的值對應(yīng)的哈希
1.修改策略,使用name列進(jìn)行測試
修改完成后保存策略
2.查詢t1表進(jìn)行測試
3.5 Nullify
將所有字符替換為NULL值
1.修改策略,使用name列進(jìn)行測試
2.查詢t1表進(jìn)行測試
3.6 Date
僅顯示日期字符串的年份部分,并且默認(rèn)月份和日期為01/01
1.修改策略,使用create_date列進(jìn)行測試
2.查詢t1表進(jìn)行測試
由上圖可見,日期一列只顯示了年份,月份和日期使用了01-01進(jìn)行代替。
3.7 Custom
該方式指定自定義的值或表達(dá)式,同時也可以使用任何有效的自定義的UDF
1.修改策略,使用phone列進(jìn)行測試,屏蔽掉中間的四位數(shù)字
2.查詢t1表進(jìn)行測試
如上圖可見,phone對應(yīng)的數(shù)據(jù)中間的四位數(shù)字都被屏蔽了。
總結(jié)1.Hive的行過濾可以對同一張表針對不同用戶配置多個條件,可以滿足實(shí)際場景的很多需要,例如在訪問該表時不同的租戶只能看到自己的數(shù)據(jù)。
2.Hive的行過濾有助于簡化Hive查詢。配置了行過濾相當(dāng)于提供默認(rèn)的where子句,Hive每次嘗試訪問數(shù)據(jù)時都會應(yīng)用該條件,這有助于簡化Hive查詢的編寫,不需要再將where子句添加到原本的查詢語句中。
3.Hive的列脫敏中每個列都應(yīng)具有單獨(dú)的屏蔽策略,同一個策略只能針對一個列,在處理訪問請求時,會按照策略中條件的順序進(jìn)行屏蔽。
4.Hive的列脫敏不支持通配符的匹配。如表和字段不能配置為*值。
5.在使用Date進(jìn)行列脫敏時,Hive中對應(yīng)字段的格式需要是時間類型,在測試中使用的date類型。
6.在對列進(jìn)行脫敏時,除了使用指定的選項(xiàng)外,還可以用自定義的表達(dá)式或者UDF來進(jìn)行脫敏。
總結(jié)
以上是生活随笔為你收集整理的hive 时间转字符串_07697.0.3如何在Kerberos环境下用Ranger完成对Hive的行过滤及列脱敏...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据查询和业务流分开_数据仓库介绍与实时
- 下一篇: apache tomcat下32还是64