W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
可見性標(biāo)簽控件可用于僅允許與給定標(biāo)簽關(guān)聯(lián)的用戶或主體讀取或訪問具有該標(biāo)簽的單元格。例如,您可以標(biāo)記一個(gè)單元格top-secret,并且只將該標(biāo)簽的訪問權(quán)授予該managers組??梢娦詷?biāo)簽是使用標(biāo)簽實(shí)現(xiàn)的,標(biāo)簽是HFile v3的一個(gè)功能,并允許您以每個(gè)單元為基礎(chǔ)存儲(chǔ)元數(shù)據(jù)。標(biāo)簽是一個(gè)字符串,可以使用邏輯運(yùn)算符(&,|或?。?biāo)簽組合為表達(dá)式,并使用圓括號(hào)進(jìn)行分組。HBase不能對(duì)表達(dá)式進(jìn)行任何形式的驗(yàn)證,除了基本的良好格式。可見性標(biāo)簽本身沒有意義,可以用來表示敏感度級(jí)別、特權(quán)級(jí)別或任何其他任意的語(yǔ)義含義。
如果用戶的標(biāo)簽與單元格的標(biāo)簽或表達(dá)式不匹配,則拒絕用戶訪問該單元格。
在HBase 0.98.6及更高版本中,可見性標(biāo)簽和表達(dá)式支持UTF-8編碼。當(dāng)使用org.apache.hadoop.hbase.security.visibility.VisibilityClient類提供的addLabels(conf, labels)方法創(chuàng)建標(biāo)簽并通過掃描或獲取在授權(quán)中傳遞標(biāo)簽時(shí),標(biāo)簽可以包含UTF-8字符,以及可見標(biāo)簽中通常使用的邏輯運(yùn)算符以及常規(guī)Java符號(hào),而不需要任何轉(zhuǎn)義方法。但是,當(dāng)通過Mutation傳遞CellVisibility表達(dá)式時(shí),如果使用UTF-8字符或邏輯運(yùn)算符,則必須將該表達(dá)式與該CellVisibility.quote()方法一起放入。請(qǐng)參閱TestExpressionParser和源文件hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestScan.java。
用戶在Put操作期間向單元添加可見性表達(dá)式。在默認(rèn)配置中,用戶不需要訪問標(biāo)簽就可以用它來標(biāo)記單元格。此行為由配置選項(xiàng)hbase.security.visibility.mutations.checkauths控制。如果您設(shè)置此選項(xiàng)為true,則用戶正在修改的標(biāo)簽必須與用戶關(guān)聯(lián),否則修改將失敗。在獲取或掃描期間確定用戶是否有權(quán)讀取標(biāo)記的單元格,并且不允許用戶讀取的結(jié)果被過濾掉。這會(huì)導(dǎo)致相同的I/O處罰,如同返回結(jié)果一樣,但會(huì)減少網(wǎng)絡(luò)負(fù)載。
可見性標(biāo)簽也可以在刪除操作中指定。有關(guān)可見性標(biāo)簽和刪除的詳細(xì)信息,請(qǐng)參閱HBASE-10885。
當(dāng)RegionServer首次收到請(qǐng)求時(shí),將在RPC上下文中生成用戶的有效標(biāo)簽集。用戶與標(biāo)簽關(guān)聯(lián)的方式是可插入的。默認(rèn)插件通過添加到獲取或掃描的授權(quán)中指定的標(biāo)簽,并檢查針對(duì)主叫用戶的已認(rèn)證標(biāo)簽列表的標(biāo)簽。當(dāng)客戶端傳遞用戶未通過身份驗(yàn)證的標(biāo)簽時(shí),默認(rèn)插件會(huì)刪除它們。您可以通過Get#setAuthorizations(Authorizations(String,…?))和Scan#setAuthorizations(Authorizations(String,…?));方法傳遞用戶經(jīng)過身份驗(yàn)證的標(biāo)簽的子集。
可以按照與用戶相同的方式向組授予可見性標(biāo)簽。組前綴為符號(hào)@。當(dāng)檢查用戶的可見性標(biāo)簽時(shí),服務(wù)器將包括用戶所屬的組的可見性標(biāo)簽以及用戶自己的標(biāo)簽。當(dāng)使用API VisibilityClient#getAuths或Shell命令get_auths為用戶檢索可見性標(biāo)簽時(shí),我們將返回專門為該用戶添加的標(biāo)簽,而不是組級(jí)標(biāo)簽。
可見性標(biāo)簽訪問檢查由VisibilityController協(xié)處理器執(zhí)行。您可以使用VisibilityLabelService接口來提供自定義實(shí)現(xiàn)或控制可見性標(biāo)簽與單元格一起存儲(chǔ)的方式。請(qǐng)參閱源文件hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithCustomVisLabService.java。
可見性標(biāo)簽可以與ACL一起使用,需要注意以下幾點(diǎn):
可見性表達(dá)式的示例
表達(dá)式 | 解釋 |
---|---|
fulltime |
允許訪問與fulltime標(biāo)簽關(guān)聯(lián)的用戶。 |
!public |
允許訪問不與public標(biāo)簽關(guān)聯(lián)的用戶。 |
( secret | topsecret ) & !probationary |
允許訪問與secret標(biāo)簽或topsecret標(biāo)簽相關(guān)聯(lián)的用戶,而不與probationary 標(biāo)簽關(guān)聯(lián)。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: