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':

注: `-u USER` オプションは `--negotiate` で必要ですが、使用されません。 `USER` には任意の値を使用し、パスワードを要求されたら [ENTER] キーを押してください。パスワードの値は無視されます。

認証済みセッションの確立(自分が誰であるかを記憶する)

ほとんどの認証メカニズムと同様に、Hadoop HTTP 認証はユーザーを一度認証し、後続のリクエストで提示される短命の認証トークンを発行します。 この認証トークンは署名付き HTTP Cookie です。

`curl` などのツールを使用する場合、認証トークンは認証を行う最初のリクエストで保存し、後続のリクエストで送信する必要があります。 `curl` でこれを行うには、HTTP Cookie を保存および送信するための `-b` および `-c` オプションを使用する必要があります。

たとえば、認証を行う最初のリクエストは、受信した 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"