透過 HTTP 的 Hadoop HDFS - 使用 HTTP 工具

安全性

開箱即用的 HttpFS 同時支援偽驗證和 Kerberos HTTP SPNEGO 驗證。

偽驗證

使用偽驗證時,使用者名稱必須指定在 HttpFS URL 的 user.name=<USERNAME> 查詢字串參數中。例如

$ curl "http://<HTTFS_HOST>:14000/webhdfs/v1?op=homedir&user.name=babu"

Kerberos HTTP SPNEGO 驗證

Kerberos HTTP SPNEGO 驗證需要支援 Kerberos HTTP SPNEGO 協定的工具或函式庫。

重要:如果使用 curl,所使用的 curl 版本必須支援 GSS(curl -V 會列印出「GSS」,表示支援)。

例如

$ kinit
Please enter the password for user@LOCALHOST:
$ curl --negotiate -u foo "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir"
Enter host password for user 'foo':

注意:--negotiate 需要 -u USER 選項,但不會使用它。將任何值用作 USER,當要求輸入密碼時,按 [ENTER],因為密碼值會被忽略。

記住我的身分 (建立經過驗證的階段)

與大多數驗證機制一樣,Hadoop HTTP 驗證會驗證使用者一次,並發出一個短暫的驗證權杖,以在後續要求中顯示。此驗證權杖是一個已簽署的 HTTP Cookie。

在使用 curl 等工具時,必須在執行驗證的第一個要求中儲存驗證權杖,並在後續要求中提交。若要使用 curl 執行此操作,必須使用 -b-c 選項來儲存和傳送 HTTP Cookie。

例如,執行驗證的第一個要求應儲存收到的 HTTP Cookie。

使用偽驗證

$ curl -c ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir&user.name=foo"

使用 Kerberos HTTP SPNEGO 驗證

$ curl --negotiate -u foo -c ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=homedir"

然後,後續要求會轉發先前收到的 HTTP Cookie

$ curl -b ~/.httpfsauth "http://<HTTPFS_HOST>:14000/webhdfs/v1?op=liststatus"