阿里雲HBase安全系列 —— 初體驗

概述

    阿里雲HBase安全包括多方面的措施,主要構成部分有:網絡隔離,白名單,身份認證,權限控制,數據加密等,具體介紹可

參考文章底部鏈接。本文主要是阿里雲hbase安全實戰體驗篇,介紹如何開通使用HBase安全功能,並涉及身份認證以及權限控制配合

使用介紹。

    首先還是回顧一下我們使用雲HBase的時候,會涉及哪些主要的安全防護:

     37d0989ecc03af43b11f03b14c174bdd272236e1

    如上圖,最外層是網絡隔離,用戶hbase實例存在於雲上用戶自己單獨的vpc環境內,其他用戶訪問不了雲hbase實例。要想與hbase
網絡連通,要麼用戶部署用戶訪問程序到 雲 hbase實例相同vpc下的ecs上,要麼使用公網訪問的方式。此外,還需要填寫網絡白名單,
把用戶的ecs配置到hbase實例的白名單上。如:我雲上的機器ip是42.120.74.94,那麼我配置到白名單就應該是如下:
5c578da1fd70aa3fe42e2c5dc09b1b3561df88cd    

    大多數用戶使用hbase的時候,都默認只使用了上述這些方式進行安全控制,實際上,阿里雲HBase還支持用戶開啓kerberos安全
身份認證以及hbase ACL權限控制。大多數用戶場景其實不開這些都是可以的,畢竟他們使用hbase的時候,只作爲自己內部業務系
統的數據庫使用。

雲HBase安全使用場景

    那麼我們可以思考一個問題,雲上的HBase在什麼樣的場景下不需要開啓這個功能也可以達到生產要求?以及什麼樣的場景推薦開
啓這個安全功能?爲了形象描述,這裏舉個例子說明。
    例:某車聯網創業公司,創業之初他們使用阿里雲HBase數據庫作爲車的軌跡點數據存儲,供用戶查詢自己的歷史路程和足跡。該
公司的業務部署架構如下:
07f8153dd7a9989b64859803cb97d2a9118acc12    
    如上圖所示,大部分用戶使用hbase都是內部自己系統獨享使用。hbase系統只作爲業務系統的數據庫訪問,沒有任何第3方夥伴需
要訪問這個數據庫,那麼這個時候該車聯網創業公司其實像上圖一樣,利用網絡隔離和白名單控制就達到生產環境要求了。
    後來隨着業務的發展,創業公司需要挖掘這些軌跡隱患的更多內在含義,與某第三方數據挖掘公司合作,要求第三方每天訪問此
HBase存儲的軌跡數據,並按需求生成報表。這個時候,HBase就涉及到多責任方訪問的安全問題,那麼他就要開啓這個雲HBase安全
服務,避免不必要的誤操作或者越權紛爭等。 
    如下圖:車連網公司只給第三方數據挖掘公司一個只讀賬號,只讓他訪問特定的軌跡數據,而不能進行其他任何操作。
    3f2c4c187dd142b948e21f024f5351400278196e
    
    隨着該車聯網創業公司的數據挖掘指標越來越有意思,客戶不斷壯大,公司也在不斷擴大,公司開始把研發團隊拆分成數據業務
部門和官網bbs部門。不同部門之間共用一個ecs資源部署服務,利用雲HBase安全,也可以把他們間的權限進行隔離控制,防止越
界操作,部署結構如下圖:
    a69187f2c3d071a83923ce9c2d81fb077601c88f
    
    綜上所述,如果HBase是用戶自己獨享使用的,可以不開啓雲HBase 底層安全防護;如果你想讓除了你以外的其他業務方、不同部
門員工來訪問hbase數據庫實例的時候,或許應該要考慮開啓雲hbase安全來進行身份認證和權限控制,實踐效果更佳。

阿里雲hbase安全功能之初體驗


    阿里雲HBase安全,主要由alibaba和Intel合作開發的HAS(Hadoop authortication service)實現的安全認證,支持kerberos協議並簡
了使用方式;同時配合使用hbase ACL實現用戶權限控制,可以控制精確到列級別。下面我們一步步體驗一下功能。

申請安裝安全集羣

    目前採用諮詢溝通後開放形式來啓用雲HBase安全,後續會全網開放HBase安全功能選項。首先 釘釘掃碼聯繫“雲HBase答疑”,  諮詢客
服並確認您需要開通雲HBase安全功能。
12c2eca00a159aa7f620847b3253568acb9c31d7

    開通後,HBase的訪問都需要提供用戶名密碼,客服會給你HBase管理員的初始賬戶密碼,比如我這裏初始管理賬戶的用戶密碼是root/123456。
另外,客服會給你最新的alihbase-1.1.4 client 安全版本tar包。

驗證安全訪問

    接下來訪問HBase只能像MySQL一樣,提供賬戶密碼才能訪問。我們來先驗證一下安全HBase的訪問效果。解壓alihbase-1.1.4-rc2-bin.tar.gz,修改
conf目錄下的hbase-site.xml,添加以下配置:其中 zk地址替換爲自己的zk訪問地址。
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>zk1,zk2,zk3</value>
  </property>
  <property>
    <name>username</name>
    <value>root</value>
  </property>
  <property>
    <name>password</name>
    <value>123456</value>
  </property>

    配置完後,我們進行正常hbase shell訪問了,如圖:

b5099638ffb7adb44f7d033cd8909f7b8f073e90

    當我們沒有使用正確的用戶名或者密碼不對的時候,訪問會報錯如下:
b38fa2e825f2da40b288880101b89a7ec276092d

    會報ERROR: No valid credentials provided (Mechanism level: Failed to find any kerberos tgt),通常密碼錯誤、用戶不存在等原因,導致登錄
失敗後錯誤都是顯示這個。還有就是開啓安全的情況下,如果你沒有填寫用戶名或密碼任意一個時,那麼會比較明顯的提醒你,你正在訪問的是
一個安全集羣,你需要提供賬戶密碼進行訪問,如下圖顯示第3行末尾顯示,“you must provide username/password” 字眼。
6b4912e378070ee10a2f3a4c03c0dcb8b692129e

修改root管理員密碼

 
   在上述驗證通過情況下,執行腳本 bin/hasopt.sh腳本進入賬戶管理命令行:
6849c01f18f4b62553f193029f8f580c001fa2e4
    修改成功後,後續的root訪問就必須使用最新的密碼了。也可以使用 resetown  root  <old_password> <new_password> 命令行修
改正在使用的root用戶密碼

用戶管理

    如上述,我們可以使用用戶管理命令行對用戶進行管理,初始我們只有root管理員賬戶,可以使用管理工具對用戶進行管理,具體
命令功能說明如表:
 
命令說明使用樣例及參數使用限制
add 或 adduser添加用戶add <username> <password> 只能root用戶
delete 或 deleteuser刪除用戶delete <username>只能root用戶
disable 或 disableverification關閉身份驗證無參數只能root用戶
enable 或 enableverification開啓身份認證無參數只能root用戶
reset 或 resetpassword重設用戶密碼(root爲普通用戶重置)reset只能root用戶
list 或 listalluserlist所以用戶名無參數只能root用戶
resetown 或 resetmyownpwd重設自己的密碼reset  <myusername> <origianl_password> <new_password>
q 或 quit 或 exit退出用戶管理命令行無參數
cmd 或 help 或 輸入不存在命令時顯示命令行幫助說明無參數
   

權限控制管理

    上述我們使用的root管理員用戶進行訪問,它是hbase實例的superuser。接下來我們繼續就着上述車聯網創業公司的例子,分別給不同
部門使用人員分配不同的權限:
用戶表車聯網數據庫部門車聯網app/官網業務部門第三方數據挖掘合作公司
car_track可讀可寫,可修改表結構可讀可寫,不可修改表結構可讀,不可寫,不可修改表結構
car_info可讀可寫,可修改表結構可讀可寫,不可修改表結構可讀,不可寫,不可修改表結構
user_info可讀可寫,可修改表結構可讀可寫,不可修改表結構不可讀不可寫
    根據上述表格的權限控制需求,我們爲數據部門創建datauser用戶,爲業務部門創建bizuser用戶,爲第三方合作公司創建partneruser用
戶。如圖:
091e8a21460c2f8a861c8ac22d23207d2efcfc7e
    接下來執行hbase shell使用grant命令,分別對datauser/bizuser/partneruser 分配不同的權限。執行命令如圖:
f8d377e3c73280fab5c255d9e0680cfa116bf8f7
    如上,我們就可以簡單的從不部門基本權限控制他們的訪問hbase動作了。HBase ACL最小支持列級別粒度的權限控制。但是爲了方便維護,
建議用戶設計權限控制方案的時候,可以簡潔一點。
    HBase 權限控制主要使用兩個命令管理,grant和revoke命令,具體使用方法如下:

   grant <user> <permissions> [<@namespace> [<table> [<column family> [<column qualifier>]]]
For example:
    hbase> grant 'bobsmith', 'RWXCA'
    hbase> grant '@admins', 'RWXCA'
    hbase> grant 'bobsmith', 'RWXCA', '@ns1'
    hbase> grant 'bobsmith', 'RW', 't1', 'f1', 'col1'
    hbase> grant 'bobsmith', 'RW', 'ns1:t1', 'f1', ‘col1’

   revoke <user> [<@namespace> [<table> [<column family> [<column qualifier>]]]]
For example:
    hbase> revoke 'bobsmith'
    hbase> revoke '@admins'
    hbase> revoke 'bobsmith', '@ns1'
    hbase> revoke 'bobsmith', 't1', 'f1', 'col1'
    hbase> revoke 'bobsmith', 'ns1:t1', 'f1', 'col1'
    最小支持列級別控制權限。

小結

   當我們有多用戶訪問安全風險的時候,使用雲hbase安全,推薦開啓雲HBase安全功能,對用戶的訪問進行身份認證和權限控制,有效的進行公司間或部門間的合作時,對hbase的訪問控制管理。

   阿里雲hbase 安全支持:
    ​​1)非開啓安全集羣可以升級到開啓安全集羣 
    ​​2)開啓狀態實例申請回滾到非開啓狀態 
    ​​3)申請臨時關閉身份認證
    4)阿里雲hbase間跨域訪問,典型的如copytable,本地client跨域安全訪問兩集羣等
    5)用戶管理
    ​6) ​ 權限管理,HBase ACL最小支持列級別權限控制
    歡迎有興趣或需求的用戶,釘釘掃碼 聯繫 “雲HBase答疑” 客服了解更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章