iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
AI & Data

資料專案修羅場,30天手把手教你暗黑求生術!!!系列 第 28

[ Day 28 ] 噓,不要告訴別人這裡有 keytab

  • 分享至 

  • xImage
  •  

前言

CDP 推薦使用 Kerberos 作為認證機制,從使用者到服務的認證,都可以使用 Kerberos。然而,Kerberos 登入有兩個方式,一是使用密碼,二是使用 keytab 檔案。我們通常會規劃一般使用者的權限範圍,好讓使用者可以在公司的規範中使用 CDP。

但我們如果碰到需要取得更高權限的帳號,以便進行需要特定權限的操作,或者模擬不同的 service 來存取 CDP 的話,可以怎麼做呢?

症狀

我們希望對 HDFS 執行 fsck 或產製報表 (dfsadmin -report)等操作,但一般使用者的帳號權限不夠大,因此碰上了點麻煩,如下圖:

https://ithelp.ithome.com.tw/upload/images/20250929/20084419Q8tRx2UMLc.png

病因

由於 CDP 給予一般使用者的權限大多透過 HDFS 的 ACL 及 Ranger 來控制,但有些特殊操作則只能由最高權限的服務帳號來執行,因此即使在 Ranger 與 HDFS ACL 的 policy 都開通使用者存取 HDFS 所有目錄與檔案了,仍然會有些操作無法使用。

處方

CDP 透過 Kerberos 的機制,不只認證使用者,也認證 service 的執行,而特別是 service 的帳號,可以獲得操作該 service 的最高權限身份。

因此,我們可以透過取得 service 自己的 keytab,來進行身份的切換。

以下以 HDFS 的 service 帳號認證方式來示範。

首先,請先進入 master 或 worker node,並提權至 root 的身份,因為我們要進入只有 root 才進得去的目錄。

接著,切換 (cd) 到 /var/run/cloudera-scm-agent/process 的目錄裡:

https://ithelp.ithome.com.tw/upload/images/20250929/20084419bfEcM1rnrw.png

這個目錄是 CM Agent 在執行每個 service 時的工作目錄,而通常 HDFS 的兩大 role - Name Node 及 Data Node 會分別安設在 master 或 worker node 上:

https://ithelp.ithome.com.tw/upload/images/20250929/20084419bbjJDPby2h.png

找到後切換進去,接著就是檢查裡面是否有一個 hdfs.keytab 的檔案:

https://ithelp.ithome.com.tw/upload/images/20250929/20084419qCIPPEaJIi.png

若有,則使用 klist -kt hdfs.keytab 確認這個 keytab 檔案裡的完整帳號名稱 (principal)

最後,使用 kinit -kt hdfs.keytab <principal> 進行登入。

登入後可使用 klist 檢查現在的身份。

別忘了,操作完成後,得用 kdestroy -A 把現在的 Kerberos ticket 銷毀。


上一篇
[ Day 27 ] Docker image 好多洞怎麼辦
下一篇
[ Day 29 ] 資料平台辨證論治 - 為 Impala 設定 HA 吧
系列文
資料專案修羅場,30天手把手教你暗黑求生術!!!30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言